diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index d051965a..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: CI - -on: - pull_request: - branches: [main] - push: - branches: [main] - -concurrency: - group: ci-${{ github.ref }} - cancel-in-progress: true - -jobs: - quality: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build workspace packages - run: npm run build --workspace=packages/shared - - - name: Type check - run: npm run typecheck - - - name: Lint - run: npm run lint - - - name: Test - run: npm test - - - name: Build - run: npm run build diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml deleted file mode 100644 index b1b0e5db..00000000 --- a/.github/workflows/deploy-pages.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: [main] - workflow_dispatch: - -concurrency: - group: pages - cancel-in-progress: false - -permissions: - contents: read - pages: write - id-token: write - -jobs: - deploy: - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build workspace packages - run: npm run build --workspace=packages/shared - - - name: Build static pages - run: npm run build:pages - - - name: Write CNAME - run: echo "betterprompt.sh" > out/CNAME - - - name: Configure Pages - uses: actions/configure-pages@v5 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: out - - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/package-lock.json b/package-lock.json index d7abf673..ae1c774b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -894,18 +894,6 @@ } } }, - "node_modules/@hono/node-server": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", - "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", - "license": "MIT", - "engines": { - "node": ">=18.14.1" - }, - "peerDependencies": { - "hono": "^4" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1876,68 +1864,6 @@ "tslib": "2" } }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.27.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", - "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==", - "license": "MIT", - "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", @@ -3229,19 +3155,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -3282,45 +3195,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -3438,30 +3312,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/brace-expansion": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", @@ -3501,15 +3351,6 @@ "esbuild": ">=0.18" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -3520,35 +3361,6 @@ "node": ">=8" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001764", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", @@ -3634,28 +3446,6 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3663,45 +3453,11 @@ "dev": true, "license": "MIT" }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -3751,6 +3507,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -3802,15 +3559,6 @@ "dev": true, "license": "MIT" }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -3820,35 +3568,6 @@ "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -3871,24 +3590,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", @@ -3896,18 +3597,6 @@ "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esbuild": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", @@ -3950,12 +3639,6 @@ "@esbuild/win32-x64": "0.27.2" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -4131,36 +3814,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "license": "MIT", - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -4180,71 +3833,11 @@ "node": ">=12.0.0" } }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express-rate-limit": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", - "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", - "license": "MIT", - "dependencies": { - "ip-address": "10.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { @@ -4261,22 +3854,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -4314,27 +3891,6 @@ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "license": "MIT" }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4385,24 +3941,6 @@ "dev": true, "license": "ISC" }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -4423,63 +3961,17 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", - "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/github-from-package": { @@ -4518,51 +4010,6 @@ "tslib": "2" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hono": { - "version": "4.12.8", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.8.tgz", - "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==", - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, "node_modules/html-encoding-sniffer": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", @@ -4576,26 +4023,6 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/hyperdyperid": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", @@ -4606,22 +4033,6 @@ "node": ">=10.18" } }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -4660,24 +4071,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4708,27 +4101,13 @@ "dev": true, "license": "MIT" }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, - "node_modules/jose": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.1.tgz", - "integrity": "sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -4820,12 +4199,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-schema-typed": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "license": "BSD-2-Clause" - }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -5193,15 +4566,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/mdn-data": { "version": "2.27.1", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", @@ -5209,15 +4573,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/memfs": { "version": "4.56.11", "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", @@ -5248,43 +4603,6 @@ "tslib": "2" } }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -5345,6 +4663,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/mz": { @@ -5390,15 +4709,6 @@ "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/next": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/next/-/next-16.2.0.tgz", @@ -5468,23 +4778,12 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/obug": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", @@ -5496,18 +4795,6 @@ ], "license": "MIT" }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5580,15 +4867,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5603,21 +4881,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -5654,15 +4923,6 @@ "node": ">= 6" } }, - "node_modules/pkce-challenge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", - "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", - "license": "MIT", - "engines": { - "node": ">=16.20.0" - } - }, "node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", @@ -5814,19 +5074,6 @@ "node": ">= 0.8.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -5847,45 +5094,6 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5963,6 +5171,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6067,22 +5276,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6103,12 +5296,6 @@ ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -6140,57 +5327,6 @@ "node": ">=10" } }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, "node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -6240,6 +5376,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -6252,83 +5389,12 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -6407,15 +5473,6 @@ "dev": true, "license": "MIT" }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/std-env": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", @@ -6617,15 +5674,6 @@ "dev": true, "license": "MIT" }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tough-cookie": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", @@ -6771,20 +5819,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -6847,15 +5881,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6872,15 +5897,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vite": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", @@ -7138,6 +6154,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -7230,27 +6247,17 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } - }, "packages/plugin": { "name": "@betterprompt/claude-code-plugin", "version": "0.2.0", "license": "MIT", "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", "better-sqlite3": "^12.8.0", "zod": "^4.3.6" }, "bin": { - "betterprompt-hook": "dist/hooks/post-session-handler.js", - "betterprompt-mcp": "dist/mcp/server-entry.js" + "betterprompt-cli": "dist/cli/index.js", + "betterprompt-hook": "dist/hooks/post-session-handler.js" }, "devDependencies": { "@types/better-sqlite3": "^7.6.0", diff --git a/packages/plugin/.claude-plugin/plugin.json b/packages/plugin/.claude-plugin/plugin.json index 4bf53282..ad1f2ded 100644 --- a/packages/plugin/.claude-plugin/plugin.json +++ b/packages/plugin/.claude-plugin/plugin.json @@ -1,11 +1,10 @@ { "name": "betterprompt", - "version": "0.2.0", + "version": "0.3.0", "description": "Local-first AI collaboration analysis — surfaces your collaboration patterns, growth areas, and anti-patterns directly in Claude Code without requiring a server.", "author": { "name": "BetterPrompt" }, "repository": "https://github.com/onlycastle/BetterPrompt", - "skills": "./skills/", - "mcpServers": "./.mcp.json" + "skills": "./skills/" } diff --git a/packages/plugin/.mcp.json b/packages/plugin/.mcp.json deleted file mode 100644 index 8e24c688..00000000 --- a/packages/plugin/.mcp.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "mcpServers": { - "betterprompt": { - "command": "node", - "args": ["${CLAUDE_PLUGIN_ROOT}/dist/mcp/server-entry.js"] - } - } -} diff --git a/packages/plugin/cli/commands/classify-developer-type.ts b/packages/plugin/cli/commands/classify-developer-type.ts new file mode 100644 index 00000000..9a681a35 --- /dev/null +++ b/packages/plugin/cli/commands/classify-developer-type.ts @@ -0,0 +1,56 @@ +/** + * classify-developer-type CLI command + * + * Runs deterministic type classification from domain scores. + * + * Usage: betterprompt-cli classify-developer-type + */ + +import { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js'; +import { computeDeterministicType } from '../../lib/core/deterministic-type-mapper.js'; +import { + getAnalysisRun, + saveTypeResult, + getCurrentRunId, +} from '../../lib/results-db.js'; +import type { Phase1Output } from '../../lib/core/types.js'; + +export async function execute(_args: Record): Promise { + const runId = getCurrentRunId(); + + if (!runId) { + return JSON.stringify({ + status: 'error', + message: 'No active analysis run. Run extract-data first.', + }); + } + + const existingRun = getAnalysisRun(runId); + if (!existingRun?.phase1Output) { + return JSON.stringify({ + status: 'error', + message: 'No Phase 1 data found for the current run. Run extract-data first.', + }); + } + + const phase1Output: Phase1Output = existingRun.phase1Output; + const scores = existingRun.scores ?? computeDeterministicScores(phase1Output); + const typeResult = computeDeterministicType(scores, phase1Output); + + saveTypeResult(runId, typeResult); + + return JSON.stringify({ + status: 'ok', + primaryType: typeResult.primaryType, + controlLevel: typeResult.controlLevel, + matrixName: typeResult.matrixName, + matrixEmoji: typeResult.matrixEmoji, + distribution: typeResult.distribution, + controlScore: typeResult.controlScore, + runId, + message: + `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} ` + + `(${typeResult.primaryType} / ${typeResult.controlLevel}). ` + + `Distribution: ${Object.entries(typeResult.distribution).map(([k, v]) => `${k} ${v}%`).join(', ')}.`, + }); +} diff --git a/packages/plugin/mcp/tools/extract-data.ts b/packages/plugin/cli/commands/extract-data.ts similarity index 65% rename from packages/plugin/mcp/tools/extract-data.ts rename to packages/plugin/cli/commands/extract-data.ts index bcec9607..50bc1084 100644 --- a/packages/plugin/mcp/tools/extract-data.ts +++ b/packages/plugin/cli/commands/extract-data.ts @@ -1,15 +1,9 @@ /** - * extract_data MCP Tool + * extract-data CLI command * - * Runs deterministic Phase 1 extraction: - * 1. Reads parsed sessions from scan cache - * 2. Extracts developer utterances with structural metadata - * 3. Computes session metrics (friction, context fill, etc.) - * 4. Runs DeterministicScorer (rubric-based scoring) - * 5. Stores Phase1Output in ~/.betterprompt/phase1-output.json - * 6. Creates an analysis run in the results database + * Runs deterministic Phase 1 extraction on scanned sessions. * - * Returns summary metrics for the orchestrator. + * Usage: betterprompt-cli extract-data [--maxSessions 50] [--includeProjects '["proj1"]'] */ import { writeFile, mkdir } from 'node:fs/promises'; @@ -27,29 +21,18 @@ import { markAnalysisStarted, } from '../../lib/debounce.js'; -export const definition = { - name: 'extract_data', - description: - 'Run deterministic Phase 1 data extraction on scanned sessions. ' + - 'Extracts developer utterances, computes session metrics, friction signals, ' + - 'and deterministic scores. Must call scan_sessions first. ' + - 'Returns summary metrics and creates an analysis run for subsequent domain analysis.', -}; +export async function execute(args: Record): Promise { + const maxSessions = (args.maxSessions as number) ?? 50; + const includeProjects = normalizeProjectFilters(args.includeProjects as string[] | undefined); -export async function execute(args: { maxSessions?: number; includeProjects?: string[] }): Promise { - const maxSessions = args.maxSessions ?? 50; - const includeProjects = normalizeProjectFilters(args.includeProjects); - - // Read cached parsed sessions from the multi-source scanner const allSessions = await readCachedParsedSessions(); if (allSessions.length === 0) { return JSON.stringify({ status: 'no_data', - message: 'No cached parsed sessions. Call scan_sessions first.', + message: 'No cached parsed sessions. Run scan-sessions first.', }); } - // Filter by project before applying recency limit const sessions = includeProjects?.length ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; @@ -57,32 +40,24 @@ export async function execute(args: { maxSessions?: number; includeProjects?: st if (sessions.length === 0) { return JSON.stringify({ status: 'no_data', - message: 'No sessions match the selected projects. Call scan_sessions to see available projects.', + message: 'No sessions match the selected projects. Run scan-sessions to see available projects.', }); } - // Clear any pending analysis flag and mark as in-progress clearAnalysisPending(); markAnalysisStarted(); try { - // Limit to recent sessions (within filtered set) const selectedSessions = sessions.slice(0, maxSessions); - - // Run Phase 1 extraction const phase1Output = await extractPhase1DataFromParsedSessions(selectedSessions); - - // Run deterministic scoring const scores = computeDeterministicScores(phase1Output); const activitySessions = buildReportActivitySessions(phase1Output); - // Store Phase 1 output for domain analysis skills to read const pluginDataDir = getPluginDataDir(); await mkdir(pluginDataDir, { recursive: true }); const phase1Path = join(pluginDataDir, 'phase1-output.json'); await writeFile(phase1Path, JSON.stringify(phase1Output, null, 2), 'utf-8'); - // Create analysis run in results DB const runId = createAnalysisRun({ metrics: phase1Output.sessionMetrics, scores, @@ -90,7 +65,6 @@ export async function execute(args: { maxSessions?: number; includeProjects?: st activitySessions, }); - // Store run ID for subsequent tools const runIdPath = join(pluginDataDir, 'current-run-id.txt'); await writeFile(runIdPath, String(runId), 'utf-8'); @@ -120,8 +94,7 @@ export async function execute(args: { maxSessions?: number; includeProjects?: st }, message: `Extracted ${metrics.totalDeveloperUtterances} utterances from ${metrics.totalSessions} sessions. ` + - `Analysis run #${runId} created. Phase 1 data saved to ${phase1Path}. ` + - `Ready for domain analysis.`, + `Analysis run #${runId} created. Ready for domain analysis.`, }); } catch (error) { markAnalysisFailed(error); diff --git a/packages/plugin/mcp/tools/generate-report.ts b/packages/plugin/cli/commands/generate-report.ts similarity index 52% rename from packages/plugin/mcp/tools/generate-report.ts rename to packages/plugin/cli/commands/generate-report.ts index 883ff075..5ee359c4 100644 --- a/packages/plugin/mcp/tools/generate-report.ts +++ b/packages/plugin/cli/commands/generate-report.ts @@ -1,8 +1,10 @@ /** - * generate_report MCP Tool + * generate-report CLI command * - * Generates a standalone HTML report from analysis results - * and serves it on a local HTTP server. + * Generates a standalone HTML report and opens it in the browser. + * Optionally starts a localhost HTTP server with --serve. + * + * Usage: betterprompt-cli generate-report [--serve] [--port 3456] [--no-open] [--allowIncomplete] */ import { readFileSync } from 'node:fs'; @@ -24,70 +26,27 @@ import { REQUIRED_STAGE_NAMES, } from '../../lib/stage-db.js'; -export const definition = { - name: 'generate_report', - description: - 'Generate a standalone HTML report from all completed domain analyses ' + - 'and serve it on a local HTTP server. Returns the URL to view the report. ' + - 'Call this after all domain analyses and type classification are complete. ' + - 'Pass allowIncomplete=true to override required-stage gating.', -}; - -/** Track the running server so we can shut it down */ -let activeServer: ReturnType | null = null; -let shutdownTimer: ReturnType | null = null; -const SHUTDOWN_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes const DOMAIN_STAGE_NAMES = new Set([ - 'aiPartnership', - 'sessionCraft', - 'toolMastery', - 'skillResilience', - 'sessionMastery', + 'aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery', ]); +function hasFallbackArtifact(runId: number, stage: string): boolean { + if (DOMAIN_STAGE_NAMES.has(stage)) return getDomainResult(runId, stage) !== null; + return getStageOutput(runId, stage) !== null; +} + interface StageGateIssue { stage: string; required: boolean; - status: 'validated' | 'failed' | 'running' | 'queued' | 'missing'; + status: string; attemptCount: number; lastError: string | null; updatedAt: string | null; } -function resetShutdownTimer(): void { - if (shutdownTimer) clearTimeout(shutdownTimer); - shutdownTimer = setTimeout(() => { - if (activeServer) { - activeServer.close(); - activeServer = null; - } - }, SHUTDOWN_TIMEOUT_MS); -} - -/** Close the active server and wait for it to fully release the port */ -function closeActiveServer(): Promise { - return new Promise((resolve) => { - if (!activeServer) { - resolve(); - return; - } - activeServer.close(() => { - activeServer = null; - resolve(); - }); - }); -} - -function hasFallbackArtifact(runId: number, stage: string): boolean { - if (DOMAIN_STAGE_NAMES.has(stage)) { - return getDomainResult(runId, stage) !== null; - } - return getStageOutput(runId, stage) !== null; -} - function getRequiredStageGateIssues(runId: number): StageGateIssue[] { const statuses = getStageStatuses(runId); - const statusLookup = new Map(statuses.map(status => [status.stage, status])); + const statusLookup = new Map(statuses.map(s => [s.stage, s])); const issues: StageGateIssue[] = []; for (const stage of REQUIRED_STAGE_NAMES) { @@ -105,33 +64,27 @@ function getRequiredStageGateIssues(runId: number): StageGateIssue[] { } continue; } - if (!hasFallbackArtifact(runId, stage)) { issues.push({ - stage, - required: true, - status: 'missing', - attemptCount: 0, - lastError: null, - updatedAt: null, + stage, required: true, status: 'missing', + attemptCount: 0, lastError: null, updatedAt: null, }); } } - return issues; } -export async function execute(args: { port?: number; openBrowser?: boolean; allowIncomplete?: boolean }): Promise { - const port = args.port ?? 3456; - const openBrowser = args.openBrowser ?? true; - const allowIncomplete = args.allowIncomplete ?? false; +export async function execute(args: Record): Promise { + const serve = args.serve === true; + const port = (typeof args.port === 'number' ? args.port : 3456); + const noOpen = args.noOpen === true; + const allowIncomplete = args.allowIncomplete === true; - // Assemble report data const runId = getCurrentRunId(); if (!runId) { return JSON.stringify({ status: 'error', - message: 'No analysis results found. Run extract_data and domain analyses first.', + message: 'No analysis results found. Run extract-data and domain analyses first.', }); } @@ -139,7 +92,7 @@ export async function execute(args: { port?: number; openBrowser?: boolean; allo if (gateIssues.length > 0 && !allowIncomplete) { return JSON.stringify({ status: 'blocked', - message: 'Required analysis stages are incomplete. Re-run the missing stages or pass allowIncomplete=true to override.', + message: 'Required analysis stages are incomplete. Re-run the missing stages or pass --allowIncomplete.', issues: gateIssues, }); } @@ -148,85 +101,84 @@ export async function execute(args: { port?: number; openBrowser?: boolean; allo if (!run) { return JSON.stringify({ status: 'error', - message: 'No analysis results found. Run extract_data and domain analyses first.', + message: 'No analysis results found. Run extract-data and domain analyses first.', }); } - // Generate HTML const html = generateCanonicalReportHtml(run); - // Save report file const reportsDir = join(getPluginDataDir(), 'reports'); await mkdir(reportsDir, { recursive: true }); const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19); const reportPath = join(reportsDir, `report-${timestamp}.html`); await writeFile(reportPath, html, 'utf-8'); - // Also save as latest const latestPath = join(reportsDir, 'latest.html'); await writeFile(latestPath, html, 'utf-8'); - // Close existing server before starting a new one - await closeActiveServer(); + // Default: open the HTML file directly in the browser + if (!serve) { + markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); + if (!noOpen) { + try { + const cmd = process.platform === 'darwin' ? `open "${reportPath}"` + : process.platform === 'win32' ? `start "${reportPath}"` + : `xdg-open "${reportPath}"`; + exec(cmd); + } catch { /* non-critical */ } + } + + return JSON.stringify({ + status: 'ok', + url: `file://${reportPath}`, + reportPath, + latestPath, + domainCount: run.domainResults.length, + type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : 'Not classified', + ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete stages.' } : {}), + message: `Report saved to ${reportPath}. Opened in browser.`, + }); + } + + // Optional: serve via HTTP const url = await new Promise((resolve, reject) => { const server = createServer((req, res) => { - // Only serve on root path if (req.url !== '/' && req.url !== '') { res.writeHead(404, { 'Content-Type': 'text/plain' }); res.end('Not Found'); return; } - - resetShutdownTimer(); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8', 'Cache-Control': 'no-cache', }); - // Always serve the latest report - try { - const content = readFileSync(latestPath, 'utf-8'); - res.end(content); - } catch { - res.end(html); - } + res.end(readFileSync(latestPath, 'utf-8')); }); server.on('error', (err: NodeJS.ErrnoException) => { - if (err.code === 'EADDRINUSE') { - // Port in use - serve from file - resolve(`file://${reportPath}`); - } else { - reject(err); - } + if (err.code === 'EADDRINUSE') resolve(`file://${reportPath}`); + else reject(err); }); server.listen(port, () => { - activeServer = server; - resetShutdownTimer(); + setTimeout(() => server.close(), 30 * 60 * 1000).unref(); + server.unref(); resolve(`http://localhost:${port}`); }); }); - // Auto-open browser - if (openBrowser && url.startsWith('http')) { + markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); + + if (!noOpen && url.startsWith('http')) { try { - let cmd: string; - if (process.platform === 'darwin') { - cmd = `open "${url}"`; - } else if (process.platform === 'win32') { - cmd = `start "${url}"`; - } else { - cmd = `xdg-open "${url}"`; - } + const cmd = process.platform === 'darwin' ? `open "${url}"` + : process.platform === 'win32' ? `start "${url}"` + : `xdg-open "${url}"`; exec(cmd); - } catch { - // Non-critical - user can open manually - } + } catch { /* non-critical */ } } - markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); - return JSON.stringify({ status: 'ok', url, @@ -234,7 +186,7 @@ export async function execute(args: { port?: number; openBrowser?: boolean; allo latestPath, domainCount: run.domainResults.length, type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : 'Not classified', - ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete required stages because allowIncomplete=true.' } : {}), - message: `Report generated and available at ${url}. Saved to ${reportPath}.`, + ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete stages.' } : {}), + message: `Report available at ${url}. Saved to ${reportPath}.`, }); } diff --git a/packages/plugin/cli/commands/get-domain-results.ts b/packages/plugin/cli/commands/get-domain-results.ts new file mode 100644 index 00000000..2a51bc96 --- /dev/null +++ b/packages/plugin/cli/commands/get-domain-results.ts @@ -0,0 +1,63 @@ +/** + * get-domain-results CLI command + * + * Reads previously saved domain analysis results. Writes output to a tmp file. + * + * Usage: betterprompt-cli get-domain-results [--domain aiPartnership] + */ + +import { writeFile, mkdir } from 'node:fs/promises'; +import { join } from 'node:path'; +import { getCurrentRunId, getDomainResult, getDomainResults } from '../../lib/results-db.js'; +import { getPluginDataDir } from '../../lib/core/session-scanner.js'; + +export async function execute(args: Record): Promise { + const runId = getCurrentRunId(); + + if (!runId) { + return JSON.stringify({ + status: 'error', + message: 'No active analysis run. Run extract-data first.', + }); + } + + const tmpDir = join(getPluginDataDir(), 'tmp'); + await mkdir(tmpDir, { recursive: true }); + + if (typeof args.domain === 'string') { + const result = getDomainResult(runId, args.domain); + if (!result) { + return JSON.stringify({ + status: 'not_found', + domain: args.domain, + runId, + message: `No ${args.domain} result found for run #${runId}.`, + }); + } + + const output = { status: 'ok', domain: args.domain, runId, data: result }; + const outputFile = join(tmpDir, `domain-${args.domain}.json`); + await writeFile(outputFile, JSON.stringify(output, null, 2), 'utf-8'); + + return JSON.stringify({ + status: 'ok', + domain: args.domain, + runId, + outputFile, + message: `Domain result written to ${outputFile}.`, + }); + } + + const results = getDomainResults(runId); + const output = { status: 'ok', runId, domainsAvailable: results.map(r => r.domain), data: results }; + const outputFile = join(tmpDir, 'domain-all.json'); + await writeFile(outputFile, JSON.stringify(output, null, 2), 'utf-8'); + + return JSON.stringify({ + status: 'ok', + runId, + domainsAvailable: results.map(r => r.domain), + outputFile, + message: `All domain results written to ${outputFile}.`, + }); +} diff --git a/packages/plugin/mcp/tools/get-prompt-context.ts b/packages/plugin/cli/commands/get-prompt-context.ts similarity index 57% rename from packages/plugin/mcp/tools/get-prompt-context.ts rename to packages/plugin/cli/commands/get-prompt-context.ts index 810acd3a..aa81653f 100644 --- a/packages/plugin/mcp/tools/get-prompt-context.ts +++ b/packages/plugin/cli/commands/get-prompt-context.ts @@ -1,12 +1,14 @@ /** - * get_prompt_context MCP Tool + * get-prompt-context CLI command * - * Returns stage- or domain-specific prompt payloads derived from the current - * canonical analysis run so skills do not need to reread raw Phase 1 files. + * Returns stage- or domain-specific prompt payloads. Writes large output + * to a file and returns the path. * - * @module plugin/mcp/tools/get-prompt-context + * Usage: betterprompt-cli get-prompt-context --kind domainAnalysis [--domain aiPartnership] */ +import { writeFile, mkdir } from 'node:fs/promises'; +import { join } from 'node:path'; import { z } from 'zod'; import { getCurrentRunId, getAnalysisRun, getDomainResults } from '../../lib/results-db.js'; import { getAllStageOutputs } from '../../lib/stage-db.js'; @@ -16,18 +18,9 @@ import { type PromptContextDomain, } from '../../lib/prompt-context.js'; import type { CanonicalStageOutputs } from '../../lib/core/types.js'; -import { debug } from '../../lib/logger.js'; +import { getPluginDataDir } from '../../lib/core/session-scanner.js'; -export const definition = { - name: 'get_prompt_context', - description: - 'Read a stage- or domain-specific prompt payload from the current analysis run. ' + - 'Use this instead of reading ~/.betterprompt/phase1-output.json directly. ' + - 'Kinds: sessionSummaries, domainAnalysis, projectSummaries, weeklyInsights, ' + - 'typeClassification, evidenceVerification, contentWriter, translation.', -}; - -export const GetPromptContextInputSchema = z.object({ +const InputSchema = z.object({ kind: z.enum(PROMPT_CONTEXT_KINDS), domain: z.enum([ 'aiPartnership', @@ -38,13 +31,13 @@ export const GetPromptContextInputSchema = z.object({ ]).optional(), }); -export async function execute(args: { kind: typeof PROMPT_CONTEXT_KINDS[number]; domain?: string }): Promise { - const parsed = GetPromptContextInputSchema.safeParse(args); +export async function execute(args: Record): Promise { + const parsed = InputSchema.safeParse(args); if (!parsed.success) { return JSON.stringify({ status: 'validation_error', message: 'Invalid prompt-context request.', - errors: parsed.error.issues.map((issue) => ({ + errors: parsed.error.issues.map(issue => ({ path: issue.path.join('.'), message: issue.message, })), @@ -55,7 +48,7 @@ export async function execute(args: { kind: typeof PROMPT_CONTEXT_KINDS[number]; if (!runId) { return JSON.stringify({ status: 'error', - message: 'No active analysis run. Call extract_data first.', + message: 'No active analysis run. Run extract-data first.', }); } @@ -79,21 +72,29 @@ export async function execute(args: { kind: typeof PROMPT_CONTEXT_KINDS[number]; stageOutputs: getAllStageOutputs(runId) as CanonicalStageOutputs, }); - const result = JSON.stringify({ + const result = { status: 'ok', runId, kind: parsed.data.kind, ...(parsed.data.domain ? { domain: parsed.data.domain } : {}), data, - }); + }; - const label = `${parsed.data.kind}${parsed.data.domain ? `:${parsed.data.domain}` : ''}`; - debug('prompt-context', `${label} payload`, { - bytes: result.length, - estimatedTokens: Math.round(result.length / 4), - }); + // Write to file to avoid bloating agent context via stdout + const tmpDir = join(getPluginDataDir(), 'tmp'); + await mkdir(tmpDir, { recursive: true }); + const label = parsed.data.domain ? `${parsed.data.kind}-${parsed.data.domain}` : parsed.data.kind; + const outputFile = join(tmpDir, `context-${label}.json`); + await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8'); - return result; + return JSON.stringify({ + status: 'ok', + runId, + kind: parsed.data.kind, + ...(parsed.data.domain ? { domain: parsed.data.domain } : {}), + outputFile, + message: `Prompt context written to ${outputFile}.`, + }); } catch (error) { return JSON.stringify({ status: 'error', diff --git a/packages/plugin/mcp/tools/get-run-progress.ts b/packages/plugin/cli/commands/get-run-progress.ts similarity index 57% rename from packages/plugin/mcp/tools/get-run-progress.ts rename to packages/plugin/cli/commands/get-run-progress.ts index c18dd6a3..28065913 100644 --- a/packages/plugin/mcp/tools/get-run-progress.ts +++ b/packages/plugin/cli/commands/get-run-progress.ts @@ -1,26 +1,22 @@ /** - * get_run_progress MCP Tool + * get-run-progress CLI command * - * Reports resumable progress for the current local analysis run so the - * orchestrator can continue from the first incomplete required stage. + * Reports resumable progress for the current local analysis run. * - * @module plugin/mcp/tools/get-run-progress + * Usage: betterprompt-cli get-run-progress */ -import { getAnalysisRun, getCurrentRunId, getDomainResult } from '../../lib/results-db.js'; +import { + getAnalysisRun, + getCurrentRunId, + getDomainResult, +} from '../../lib/results-db.js'; import { getStageOutput, getStageStatuses, type StageLifecycleStatus, } from '../../lib/stage-db.js'; -export const definition = { - name: 'get_run_progress', - description: - 'Inspect the current local analysis run and report which required stages are complete, ' + - 'missing, or need to be resumed. Use this before starting bp analyze to resume interrupted runs.', -}; - const DOMAIN_STAGE_NAMES = new Set([ 'aiPartnership', 'sessionCraft', @@ -29,35 +25,27 @@ const DOMAIN_STAGE_NAMES = new Set([ 'sessionMastery', ]); -/** - * 5-dimension pipeline stage sequence (v2). - * Reduced from 19 stages (6+6 extract/write) to 17 stages (5+5 extract/write + context/classification/verification/content). - */ export const REQUIRED_STAGE_SEQUENCE = [ { stage: 'sessionSummaries', skill: 'summarize-sessions', tool: null, kind: 'stage' }, - // 5 extractors (down from 6) { stage: 'extractAiPartnership', skill: 'extract-ai-partnership', tool: null, kind: 'stage' }, { stage: 'extractSessionCraft', skill: 'extract-session-craft', tool: null, kind: 'stage' }, { stage: 'extractToolMastery', skill: 'extract-tool-mastery', tool: null, kind: 'stage' }, { stage: 'extractSkillResilience', skill: 'extract-skill-resilience', tool: null, kind: 'stage' }, { stage: 'extractSessionMastery', skill: 'extract-session-mastery', tool: null, kind: 'stage' }, - // 5 writers (down from 6) { stage: 'aiPartnership', skill: 'write-ai-partnership', tool: null, kind: 'domain' }, { stage: 'sessionCraft', skill: 'write-session-craft', tool: null, kind: 'domain' }, { stage: 'toolMastery', skill: 'write-tool-mastery', tool: null, kind: 'domain' }, { stage: 'skillResilience', skill: 'write-skill-resilience', tool: null, kind: 'domain' }, { stage: 'sessionMastery', skill: 'write-session-mastery', tool: null, kind: 'domain' }, - // Context generation + classification { stage: 'projectSummaries', skill: 'summarize-projects', tool: null, kind: 'stage' }, { stage: 'weeklyInsights', skill: 'generate-weekly-insights', tool: null, kind: 'stage' }, - { stage: 'deterministicType', skill: null, tool: 'classify_developer_type', kind: 'stage' }, + { stage: 'deterministicType', skill: null, tool: 'classify-developer-type', kind: 'stage' }, { stage: 'typeClassification', skill: 'classify-type', tool: null, kind: 'stage' }, - { stage: 'evidenceVerification', skill: null, tool: 'verify_evidence', kind: 'stage' }, + { stage: 'evidenceVerification', skill: null, tool: 'verify-evidence', kind: 'stage' }, { stage: 'contentWriter', skill: 'write-content', tool: null, kind: 'stage' }, ] as const; -type RequiredStep = (typeof REQUIRED_STAGE_SEQUENCE)[number]; - +export type RequiredStep = (typeof REQUIRED_STAGE_SEQUENCE)[number]; type StepStatus = StageLifecycleStatus | 'missing'; export interface RunProgressStep { @@ -73,42 +61,13 @@ export interface RunProgressStep { updatedAt: string | null; } -/** - * Internal representation returned by `computeRunProgress`. - * The MCP `execute()` response transforms this — it sends only `pendingStages` - * (incomplete/failed entries) instead of the full `stages` array to reduce - * orchestrator context accumulation. - */ -export interface RunProgressSummary { - runId: number; - analyzedAt: string; - phase1Complete: boolean; - sessionCount: number; - projectNames: string[]; - completionStatus: 'incomplete' | 'complete'; - completedRequiredStages: number; - totalRequiredStages: number; - completedDomainCount: number; - totalDomainCount: number; - nextStep: { - stage: string; - skill: string | null; - tool: string | null; - kind: 'stage' | 'domain' | 'report'; - }; - /** Full stage list — used internally. MCP response sends only pendingStages. */ - stages: RunProgressStep[]; -} - function hasArtifact(runId: number, stage: string): boolean { if (stage === 'deterministicType') { - return getAnalysisRun(runId)?.typeResult !== null; + return getAnalysisRun(runId)?.typeResult != null; } - if (DOMAIN_STAGE_NAMES.has(stage)) { return getDomainResult(runId, stage) !== null; } - return getStageOutput(runId, stage) !== null; } @@ -149,10 +108,23 @@ function buildStepStatus( }; } -export function computeRunProgress(runId: number): RunProgressSummary | null { +export async function execute(_args: Record): Promise { + const runId = getCurrentRunId(); + + if (!runId) { + return JSON.stringify({ + status: 'no_run', + message: 'No active analysis run. Start Phase 1 with scan-sessions and extract-data.', + }); + } + const run = getAnalysisRun(runId); if (!run?.phase1Output) { - return null; + return JSON.stringify({ + status: 'no_run', + runId, + message: 'The current run has no resumable Phase 1 data. Start Phase 1 again.', + }); } const statusLookup = new Map( @@ -169,7 +141,19 @@ export function computeRunProgress(runId: number): RunProgressSummary | null { ), ).sort(); - return { + const pendingStages = stages + .filter(stage => !stage.completed) + .map(({ stage, skill, tool, kind, status, lastError }) => ({ + stage, skill, tool, kind, status, + ...(lastError ? { lastError } : {}), + })); + + const nextStep = nextIncomplete + ? { stage: nextIncomplete.stage, skill: nextIncomplete.skill, tool: nextIncomplete.tool, kind: nextIncomplete.kind } + : { stage: 'generateReport', skill: null, tool: 'generate-report', kind: 'report' as const }; + + return JSON.stringify({ + status: 'ok', runId, analyzedAt: run.analyzedAt, phase1Complete: true, @@ -180,67 +164,10 @@ export function computeRunProgress(runId: number): RunProgressSummary | null { totalRequiredStages: REQUIRED_STAGE_SEQUENCE.length, completedDomainCount: stages.filter(stage => DOMAIN_STAGE_NAMES.has(stage.stage) && stage.completed).length, totalDomainCount: DOMAIN_STAGE_NAMES.size, - nextStep: nextIncomplete - ? { - stage: nextIncomplete.stage, - skill: nextIncomplete.skill, - tool: nextIncomplete.tool, - kind: nextIncomplete.kind, - } - : { - stage: 'generateReport', - skill: null, - tool: 'generate_report', - kind: 'report', - }, - stages, - }; -} - -export async function execute(): Promise { - const runId = getCurrentRunId(); - - if (!runId) { - return JSON.stringify({ - status: 'no_run', - message: 'No active analysis run. Start Phase 1 with scan_sessions and extract_data.', - }); - } - - const progress = computeRunProgress(runId); - if (!progress) { - return JSON.stringify({ - status: 'no_run', - runId, - message: 'The current run has no resumable Phase 1 data. Start Phase 1 again.', - }); - } - - // Return compact response to reduce orchestrator context accumulation. - // Only include incomplete/failed stages instead of the full 17-entry array. - const pendingStages = progress.stages - .filter(stage => !stage.completed) - .map(({ stage, skill, tool, kind, status, lastError }) => ({ - stage, skill, tool, kind, status, - ...(lastError ? { lastError } : {}), - })); - - return JSON.stringify({ - status: 'ok', - runId: progress.runId, - analyzedAt: progress.analyzedAt, - phase1Complete: progress.phase1Complete, - sessionCount: progress.sessionCount, - projectNames: progress.projectNames, - completionStatus: progress.completionStatus, - completedRequiredStages: progress.completedRequiredStages, - totalRequiredStages: progress.totalRequiredStages, - completedDomainCount: progress.completedDomainCount, - totalDomainCount: progress.totalDomainCount, - nextStep: progress.nextStep, + nextStep, pendingStages, - message: progress.completionStatus === 'complete' - ? `Run #${runId} already has all required stages. Call generate_report to reopen the report.` - : `Run #${runId} is incomplete (${progress.completedRequiredStages}/${progress.totalRequiredStages}). Resume with ${progress.nextStep.tool ?? progress.nextStep.skill ?? progress.nextStep.stage}.`, + message: nextIncomplete + ? `Run #${runId} is incomplete (${completedRequiredStages}/${REQUIRED_STAGE_SEQUENCE.length}). Resume with ${nextStep.tool ?? nextStep.skill ?? nextStep.stage}.` + : `Run #${runId} already has all required stages. Ready to generate report.`, }); } diff --git a/packages/plugin/cli/commands/get-stage-output.ts b/packages/plugin/cli/commands/get-stage-output.ts new file mode 100644 index 00000000..b5822aeb --- /dev/null +++ b/packages/plugin/cli/commands/get-stage-output.ts @@ -0,0 +1,65 @@ +/** + * get-stage-output CLI command + * + * Reads a previously saved pipeline stage output. Writes output to a tmp file. + * + * Usage: betterprompt-cli get-stage-output [--stage sessionSummaries] + */ + +import { writeFile, mkdir } from 'node:fs/promises'; +import { join } from 'node:path'; +import { getCurrentRunId } from '../../lib/results-db.js'; +import { getStageOutput, getAllStageOutputs } from '../../lib/stage-db.js'; +import { getPluginDataDir } from '../../lib/core/session-scanner.js'; + +export async function execute(args: Record): Promise { + const runId = getCurrentRunId(); + + if (!runId) { + return JSON.stringify({ + status: 'error', + message: 'No active analysis run. Run extract-data first.', + }); + } + + const tmpDir = join(getPluginDataDir(), 'tmp'); + await mkdir(tmpDir, { recursive: true }); + + if (typeof args.stage === 'string') { + const data = getStageOutput(runId, args.stage); + if (!data) { + return JSON.stringify({ + status: 'not_found', + stage: args.stage, + runId, + message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.`, + }); + } + + const result = { status: 'ok', stage: args.stage, runId, data }; + const outputFile = join(tmpDir, `stage-${args.stage}.json`); + await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8'); + + return JSON.stringify({ + status: 'ok', + stage: args.stage, + runId, + outputFile, + message: `Stage output written to ${outputFile}.`, + }); + } + + const all = getAllStageOutputs(runId); + const stages = Object.keys(all); + const result = { status: 'ok', runId, stagesAvailable: stages, data: all }; + const outputFile = join(tmpDir, 'stage-all.json'); + await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8'); + + return JSON.stringify({ + status: 'ok', + runId, + stagesAvailable: stages, + outputFile, + message: `All stage outputs written to ${outputFile}.`, + }); +} diff --git a/packages/plugin/cli/commands/get-user-prefs.ts b/packages/plugin/cli/commands/get-user-prefs.ts new file mode 100644 index 00000000..5f0929de --- /dev/null +++ b/packages/plugin/cli/commands/get-user-prefs.ts @@ -0,0 +1,17 @@ +/** + * get-user-prefs CLI command + * + * Reads BetterPrompt user preferences. + * + * Usage: betterprompt-cli get-user-prefs + */ + +import { readPrefs } from '../../lib/prefs.js'; + +export async function execute(_args: Record): Promise { + return JSON.stringify({ + status: 'ok', + prefs: readPrefs(), + message: 'Loaded BetterPrompt user preferences.', + }); +} diff --git a/packages/plugin/mcp/tools/save-domain-results.ts b/packages/plugin/cli/commands/save-domain-results.ts similarity index 55% rename from packages/plugin/mcp/tools/save-domain-results.ts rename to packages/plugin/cli/commands/save-domain-results.ts index b1539b5c..9d680290 100644 --- a/packages/plugin/mcp/tools/save-domain-results.ts +++ b/packages/plugin/cli/commands/save-domain-results.ts @@ -1,125 +1,39 @@ /** - * save_domain_results MCP Tool + * save-domain-results CLI command * - * Accepts structured analysis results for a specific domain. - * Validates the input against shared schemas (including domain-specific - * typed data) and stores it in the results database. + * Validates and persists structured analysis results for a specific domain. + * Includes domain-specific Zod validation and quality gates. * - * Includes: - * - Domain-specific Zod validation for the `data` field (Fix 2) - * - Description quality gates matching server-side BaseWorker checks (Fix 3) - * - * Called by domain analysis skills after the host LLM completes analysis. + * Usage: betterprompt-cli save-domain-results --file /path/to/domain-result.json + * OR: betterprompt-cli save-domain-results --domain aiPartnership --overallScore 75 ... */ +import { readFileSync } from 'node:fs'; import { z } from 'zod'; import { - EvidenceSchema as SharedEvidenceSchema, DomainStrengthSchema, DomainGrowthAreaSchema, - DOMAIN_NAMES, - // Domain-specific worker output schemas - PlanningHabitSchema, - CriticalThinkingMomentSchema, - VerificationBehaviorSchema, - DetectedAntiPatternSchema, MultitaskingPatternSchema, - CommunicationPatternSchema, - SignatureQuoteSchema, } from '@betterprompt/shared'; import { saveDomainResult, getCurrentRunId } from '../../lib/results-db.js'; import { recordStageStatus } from '../../lib/stage-db.js'; import type { DomainResult } from '../../lib/core/types.js'; -export const definition = { - name: 'save_domain_results', - description: - 'Save structured analysis results for a specific domain. ' + - 'Called after analyzing a domain (aiPartnership, sessionCraft, toolMastery, ' + - 'skillResilience, sessionMastery). ' + - 'Input must include domain name, overall score, strengths, and growth areas.', -}; - -// Re-export shared schemas for backward compatibility -export const EvidenceSchema = SharedEvidenceSchema; -export const StrengthSchema = DomainStrengthSchema; -export const GrowthAreaSchema = DomainGrowthAreaSchema; - -function extractDomainName(args: Record): string | null { - return typeof args.domain === 'string' ? args.domain : null; -} - -function parseStringifiedInput(value: unknown): unknown { - if (typeof value !== 'string') { - return value; - } - - const trimmed = value.trim(); - if (!trimmed) { - return value; - } - - if ((trimmed.startsWith('{') && trimmed.endsWith('}')) - || (trimmed.startsWith('[') && trimmed.endsWith(']'))) { - try { - return JSON.parse(trimmed); - } catch { - return value; - } - } - - if (/^-?\d+(?:\.\d+)?$/.test(trimmed)) { - const numericValue = Number(trimmed); - if (Number.isFinite(numericValue)) { - return numericValue; - } - } - - return value; -} - -function normalizeDomainResultArgs(args: Record): Record { - return { - ...args, - overallScore: parseStringifiedInput(args.overallScore), - confidenceScore: parseStringifiedInput(args.confidenceScore), - strengths: parseStringifiedInput(args.strengths), - growthAreas: parseStringifiedInput(args.growthAreas), - data: parseStringifiedInput(args.data), - }; -} - -// ============================================================================ -// Domain-Specific Data Schemas (Fix 2) -// -// These enforce the same structures that Gemini's responseJsonSchema enforces -// at generation time on the server. Without these, the `data` field accepts -// literally anything — including empty objects. -// ============================================================================ - -/** - * ThinkingQuality data: validates structure without strict enum enforcement. - * The host LLM may produce slight field variations; assembly normalizes later. - * Key requirement: planningHabits[] and verificationBehavior must exist as objects. - */ +// Domain-specific data schemas (ported from MCP tool) const ThinkingQualityDataSchema = z.object({ planningHabits: z.union([ - // Canonical array format: [{ type, frequency, examples, effectiveness }] z.array(z.object({ type: z.string(), frequency: z.string().optional(), examples: z.array(z.string()).optional(), effectiveness: z.string().optional(), }).passthrough()).min(1), - // Plugin summary format: { dominantType, typeDistribution, ... } z.object({ dominantType: z.string().optional(), typeDistribution: z.record(z.string(), z.number()).optional(), }).passthrough(), ]), - verificationBehavior: z.object({ - level: z.string(), - }).passthrough(), + verificationBehavior: z.object({ level: z.string() }).passthrough(), criticalThinkingMoments: z.array(z.object({ type: z.string(), quote: z.string().optional(), @@ -139,41 +53,27 @@ const ThinkingQualityDataSchema = z.object({ multitaskingPattern: MultitaskingPatternSchema.optional(), }).passthrough(); -/** - * CommunicationPatterns data: accepts both canonical and plugin field names. - * The assembly layer normalizes patternName/patternId/title and frequency formats. - */ const CommunicationPatternsDataSchema = z.object({ communicationPatterns: z.array(z.object({ - // Accept any of: patternName (canonical), patternId, title (plugin) patternName: z.string().optional(), patternId: z.string().optional(), title: z.string().optional(), category: z.string().optional(), description: z.string().optional(), - // Frequency: accept both enum string and number frequency: z.union([z.string(), z.number()]).optional(), effectiveness: z.string().optional(), tip: z.string().optional(), - // Examples: accept both canonical and plugin evidence format examples: z.array(z.unknown()).optional(), evidence: z.array(z.unknown()).optional(), }).passthrough()).min(1), - signatureQuotes: z.array(z.object({ - utteranceId: z.string(), - }).passthrough()).optional(), + signatureQuotes: z.array(z.object({ utteranceId: z.string() }).passthrough()).optional(), structuralDistribution: z.record(z.string(), z.number()).optional(), contextDistribution: z.record(z.string(), z.number()).optional(), questioningDistribution: z.record(z.string(), z.number()).optional(), }).passthrough(); -/** - * LearningBehavior data: requires at least one of the primary arrays. - * Accepts both canonical field names (topic, questionCount) and plugin variants (area, severity). - */ const LearningBehaviorDataSchema = z.object({ knowledgeGaps: z.array(z.object({ - // Accept both canonical (topic) and plugin (area) field names area: z.string().optional(), topic: z.string().optional(), severity: z.string().optional(), @@ -188,7 +88,6 @@ const LearningBehaviorDataSchema = z.object({ category: z.string(), description: z.string().optional(), mistakeType: z.string().optional(), - // Accept both canonical (occurrenceCount) and plugin (frequency) frequency: z.number().optional(), occurrenceCount: z.number().optional(), sessionsAffected: z.array(z.string()).optional(), @@ -217,13 +116,8 @@ const LearningBehaviorDataSchema = z.object({ topInsights: z.array(z.unknown()).optional(), }).passthrough(); -/** - * ContextEfficiency data: requires inefficiencyPatterns with type or pattern field. - * Accepts both canonical (pattern) and plugin (type) field names. - */ const ContextEfficiencyDataSchema = z.object({ inefficiencyPatterns: z.array(z.object({ - // Accept both canonical (pattern) and plugin (type) field names type: z.string().optional(), pattern: z.string().optional(), frequency: z.number().optional(), @@ -267,15 +161,24 @@ const SessionOutcomeDataSchema = z.object({ failurePatterns: z.array(z.unknown()).optional(), }).passthrough(); -/** Domain → data schema lookup. Domains without specific schemas fall through to permissive. */ +const ToolMasteryDataSchema = z.object({ + toolMastery: z.array(z.object({ + patternName: z.string().optional(), + category: z.string().optional(), + description: z.string().optional(), + frequency: z.union([z.string(), z.number()]).optional(), + examples: z.array(z.unknown()).optional(), + evidence: z.array(z.unknown()).optional(), + }).passthrough()).min(1), + signatureQuotes: z.array(z.object({ utteranceId: z.string() }).passthrough()).optional(), +}).passthrough(); + const DOMAIN_DATA_SCHEMAS: Record = { - // v2 domains: merged schemas are permissive (.passthrough()) to accept combined data aiPartnership: ThinkingQualityDataSchema.merge(SessionOutcomeDataSchema.partial()).passthrough(), sessionCraft: ContextEfficiencyDataSchema.merge(LearningBehaviorDataSchema.partial()).passthrough(), - toolMastery: CommunicationPatternsDataSchema, - skillResilience: z.record(z.string(), z.unknown()), // permissive - sessionMastery: z.record(z.string(), z.unknown()), // permissive - // Legacy domains + toolMastery: ToolMasteryDataSchema, + skillResilience: z.record(z.string(), z.unknown()), + sessionMastery: z.record(z.string(), z.unknown()), thinkingQuality: ThinkingQualityDataSchema, communicationPatterns: CommunicationPatternsDataSchema, learningBehavior: LearningBehaviorDataSchema, @@ -283,52 +186,48 @@ const DOMAIN_DATA_SCHEMAS: Record = { sessionOutcome: SessionOutcomeDataSchema, }; -// ============================================================================ -// Quality Gate Constants (Fix 3) -// -// These match the server-side BaseWorker.validateDescriptionQuality() thresholds. -// ============================================================================ - const QUALITY_THRESHOLDS = { - /** Minimum characters for strength/growth area descriptions */ minDescriptionLength: 300, - /** Minimum characters for growth area recommendations */ minRecommendationLength: 150, - /** Minimum evidence items per strength/growth area */ minEvidenceCount: 2, } as const; -// ============================================================================ -// Input Schema -// ============================================================================ - -export const DomainResultInputSchema = z.object({ +const DomainResultInputSchema = z.object({ domain: z.enum([ - // v2 domains - 'aiPartnership', - 'sessionCraft', - 'toolMastery', - 'skillResilience', - 'sessionMastery', - // Legacy domains - 'thinkingQuality', - 'communicationPatterns', - 'learningBehavior', - 'contextEfficiency', - 'sessionOutcome', - 'content', + 'aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery', + 'thinkingQuality', 'communicationPatterns', 'learningBehavior', 'contextEfficiency', 'sessionOutcome', 'content', ]), overallScore: z.number().min(0).max(100), confidenceScore: z.number().min(0).max(1).optional(), strengths: z.array(DomainStrengthSchema), growthAreas: z.array(DomainGrowthAreaSchema), - /** Domain-specific typed data. Validated per domain using typed schemas. */ data: z.record(z.string(), z.unknown()).optional(), }); -// ============================================================================ -// Quality Validation (Fix 3) -// ============================================================================ +function parseStringifiedInput(value: unknown): unknown { + if (typeof value !== 'string') return value; + const trimmed = value.trim(); + if (!trimmed) return value; + if ((trimmed.startsWith('{') && trimmed.endsWith('}')) || (trimmed.startsWith('[') && trimmed.endsWith(']'))) { + try { return JSON.parse(trimmed); } catch { return value; } + } + if (/^-?\d+(?:\.\d+)?$/.test(trimmed)) { + const n = Number(trimmed); + if (Number.isFinite(n)) return n; + } + return value; +} + +function normalizeDomainResultArgs(args: Record): Record { + return { + ...args, + overallScore: parseStringifiedInput(args.overallScore), + confidenceScore: parseStringifiedInput(args.confidenceScore), + strengths: parseStringifiedInput(args.strengths), + growthAreas: parseStringifiedInput(args.growthAreas), + data: parseStringifiedInput(args.data), + }; +} interface QualityIssue { field: string; @@ -347,7 +246,7 @@ function validateContentQuality( if (strength.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { issues.push({ field: `strengths[${i}].description`, - message: `Description for "${strength.title}" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure: WHAT the pattern is (2-3 sentences), WHY it matters (1-2 sentences), HOW to leverage it (1-2 sentences).`, + message: `Description for "${strength.title}" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`, actual: strength.description.length, required: QUALITY_THRESHOLDS.minDescriptionLength, }); @@ -355,7 +254,7 @@ function validateContentQuality( if (strength.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) { issues.push({ field: `strengths[${i}].evidence`, - message: `Strength "${strength.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}). Search across ALL sessions for additional examples of this pattern.`, + message: `Strength "${strength.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}).`, actual: strength.evidence.length, required: QUALITY_THRESHOLDS.minEvidenceCount, }); @@ -366,7 +265,7 @@ function validateContentQuality( if (area.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { issues.push({ field: `growthAreas[${i}].description`, - message: `Description for "${area.title}" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure.`, + message: `Description for "${area.title}" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`, actual: area.description.length, required: QUALITY_THRESHOLDS.minDescriptionLength, }); @@ -374,7 +273,7 @@ function validateContentQuality( if (area.recommendation.length < QUALITY_THRESHOLDS.minRecommendationLength) { issues.push({ field: `growthAreas[${i}].recommendation`, - message: `Recommendation for "${area.title}" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required. Provide step-by-step actionable advice.`, + message: `Recommendation for "${area.title}" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required.`, actual: area.recommendation.length, required: QUALITY_THRESHOLDS.minRecommendationLength, }); @@ -392,21 +291,44 @@ function validateContentQuality( return issues; } -// ============================================================================ -// Execute -// ============================================================================ +function getDomainDataHint(domain: string): string { + const hints: Record = { + aiPartnership: 'Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate', + sessionCraft: 'Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]', + toolMastery: 'Required: toolMastery[] (min 1). Optional: signatureQuotes[]', + skillResilience: 'Expected: domain-specific data (flexible schema)', + sessionMastery: 'Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore', + thinkingQuality: 'Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]', + communicationPatterns: 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]', + learningBehavior: 'Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]', + contextEfficiency: 'Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent', + sessionOutcome: 'Required: sessionAnalyses[] (min 1). Optional: overallSuccessRate', + }; + return hints[domain] ?? ''; +} export async function execute(args: Record): Promise { - const normalizedArgs = normalizeDomainResultArgs(args); + // Read from file if --file provided + let inputArgs = args; + if (typeof args.file === 'string') { + try { + inputArgs = JSON.parse(readFileSync(args.file, 'utf-8')); + } catch (error) { + return JSON.stringify({ + status: 'error', + message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`, + }); + } + } - // Get current run ID + const normalizedArgs = normalizeDomainResultArgs(inputArgs); const runId = getCurrentRunId(); - const domainName = extractDomainName(normalizedArgs); + const domainName = typeof normalizedArgs.domain === 'string' ? normalizedArgs.domain : null; if (!runId) { return JSON.stringify({ status: 'error', - message: 'No active analysis run. Call extract_data first to start an analysis.', + message: 'No active analysis run. Run extract-data first to start an analysis.', }); } @@ -414,79 +336,49 @@ export async function execute(args: Record): Promise { const parsed = DomainResultInputSchema.safeParse(normalizedArgs); if (!parsed.success) { if (domainName) { - recordStageStatus(runId, domainName, { - status: 'failed', - lastError: 'Invalid domain result format.', - }); + recordStageStatus(runId, domainName, { status: 'failed', lastError: 'Invalid domain result format.' }); } return JSON.stringify({ status: 'validation_error', message: 'Invalid domain result format.', - errors: parsed.error.issues.map(i => ({ - path: i.path.join('.'), - message: i.message, - })), + errors: parsed.error.issues.map(i => ({ path: i.path.join('.'), message: i.message })), }); } - // Step 2: Validate domain-specific data structure (Fix 2) + // Step 2: Validate domain-specific data const domainSchema = DOMAIN_DATA_SCHEMAS[parsed.data.domain]; if (domainSchema && parsed.data.data) { const dataResult = domainSchema.safeParse(parsed.data.data); if (!dataResult.success) { - recordStageStatus(runId, parsed.data.domain, { - status: 'failed', - lastError: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.`, - }); - const missingFields = dataResult.error.issues.map(i => ({ - path: `data.${i.path.join('.')}`, - message: i.message, - })); + recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.` }); return JSON.stringify({ status: 'validation_error', - message: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid. ` - + `The data field must contain the required structures for this domain. ` - + `Review the skill instructions for the expected data format.`, - errors: missingFields, + message: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.`, + errors: dataResult.error.issues.map(i => ({ path: `data.${i.path.join('.')}`, message: i.message })), hint: getDomainDataHint(parsed.data.domain), }); } } else if (parsed.data.domain !== 'content' && !parsed.data.data) { - recordStageStatus(runId, parsed.data.domain, { - status: 'failed', - lastError: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures.`, - }); + recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Domain "${parsed.data.domain}" requires a data field.` }); return JSON.stringify({ status: 'validation_error', - message: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures. ` - + `Do not omit the data field.`, + message: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures.`, hint: getDomainDataHint(parsed.data.domain), }); } - // Step 3: Quality gate - check description/recommendation lengths (Fix 3) - const qualityIssues = validateContentQuality( - parsed.data.strengths, - parsed.data.growthAreas, - ); - + // Step 3: Quality gate + const qualityIssues = validateContentQuality(parsed.data.strengths, parsed.data.growthAreas); if (qualityIssues.length > 0) { - recordStageStatus(runId, parsed.data.domain, { - status: 'failed', - lastError: `Quality gate failed for "${parsed.data.domain}" analysis.`, - }); + recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Quality gate failed for "${parsed.data.domain}".` }); return JSON.stringify({ status: 'quality_error', - message: `${qualityIssues.length} quality issue(s) detected. ` - + `Descriptions must be ${QUALITY_THRESHOLDS.minDescriptionLength}+ chars, ` - + `recommendations must be ${QUALITY_THRESHOLDS.minRecommendationLength}+ chars, ` - + `and each insight needs ${QUALITY_THRESHOLDS.minEvidenceCount}+ evidence items. ` - + `Please expand the flagged fields and call save_domain_results again.`, + message: `${qualityIssues.length} quality issue(s) detected. Expand the flagged fields and try again.`, issues: qualityIssues, }); } - // All validation passed — save to database + // Save to database const domainResult: DomainResult = { domain: parsed.data.domain, overallScore: parsed.data.overallScore, @@ -498,9 +390,7 @@ export async function execute(args: Record): Promise { }; saveDomainResult(runId, domainResult); - recordStageStatus(runId, domainResult.domain, { - status: 'validated', - }); + recordStageStatus(runId, domainResult.domain, { status: 'validated' }); return JSON.stringify({ status: 'ok', @@ -512,34 +402,3 @@ export async function execute(args: Record): Promise { message: `Saved ${domainResult.domain} analysis (score: ${domainResult.overallScore}/100) to run #${runId}.`, }); } - -// ============================================================================ -// Hints for domain data requirements -// ============================================================================ - -function getDomainDataHint(domain: string): string { - const hints: Record = { - aiPartnership: - 'Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate', - sessionCraft: - 'Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]', - toolMastery: - 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]', - skillResilience: - 'Expected: domain-specific data (flexible schema)', - sessionMastery: - 'Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore', - // Legacy domains - thinkingQuality: - 'Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]', - communicationPatterns: - 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]', - learningBehavior: - 'Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]', - contextEfficiency: - 'Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent', - sessionOutcome: - 'Required: sessionAnalyses[] (min 1, each with sessionId, sessionType, outcome). Optional: overallSuccessRate', - }; - return hints[domain] ?? ''; -} diff --git a/packages/plugin/cli/commands/save-stage-output.ts b/packages/plugin/cli/commands/save-stage-output.ts new file mode 100644 index 00000000..e06f0ba6 --- /dev/null +++ b/packages/plugin/cli/commands/save-stage-output.ts @@ -0,0 +1,105 @@ +/** + * save-stage-output CLI command + * + * Validates and persists pipeline stage outputs. + * + * Usage: betterprompt-cli save-stage-output --stage extractAiPartnership --file /path/to/data.json + * OR: betterprompt-cli save-stage-output --stage extractAiPartnership --data '{"key":"value"}' + */ + +import { readFileSync } from 'node:fs'; +import { z } from 'zod'; +import { STAGE_NAMES, STAGE_SCHEMAS } from '@betterprompt/shared'; +import { getCurrentRunId } from '../../lib/results-db.js'; +import { recordStageStatus, saveStageOutput } from '../../lib/stage-db.js'; + +const StageOutputInputSchema = z.object({ + stage: z.enum(STAGE_NAMES), + data: z.record(z.string(), z.unknown()), +}); + +export async function execute(args: Record): Promise { + const runId = getCurrentRunId(); + const stageName = typeof args.stage === 'string' ? args.stage : null; + + if (!runId) { + return JSON.stringify({ + status: 'error', + message: 'No active analysis run. Run extract-data first to start an analysis.', + }); + } + + // Read data from file if --file is provided + let data = args.data; + if (typeof args.file === 'string') { + try { + data = JSON.parse(readFileSync(args.file, 'utf-8')); + } catch (error) { + return JSON.stringify({ + status: 'error', + message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`, + }); + } + } + + // Parse stringified data if needed + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (error) { + return JSON.stringify({ + status: 'error', + message: `Invalid JSON in --data: ${error instanceof Error ? error.message : 'parse error'}`, + }); + } + } + + const input = { stage: args.stage, data }; + const parsed = StageOutputInputSchema.safeParse(input); + if (!parsed.success) { + if (stageName) { + recordStageStatus(runId, stageName, { + status: 'failed', + lastError: 'Invalid stage output format.', + }); + } + return JSON.stringify({ + status: 'validation_error', + message: 'Invalid stage output format.', + errors: parsed.error.issues.map(i => ({ + path: i.path.join('.'), + message: i.message, + })), + }); + } + + const { stage, data: validatedData } = parsed.data; + const stageSchema = STAGE_SCHEMAS[stage]; + if (stageSchema) { + const stageValidation = stageSchema.safeParse(validatedData); + if (!stageValidation.success) { + recordStageStatus(runId, stage, { + status: 'failed', + lastError: `Data does not match ${stage} schema.`, + }); + return JSON.stringify({ + status: 'validation_error', + message: `Data does not match ${stage} schema.`, + errors: stageValidation.error.issues.map(i => ({ + path: i.path.join('.'), + message: i.message, + })), + }); + } + } + + saveStageOutput(runId, stage, validatedData); + recordStageStatus(runId, stage, { status: 'validated' }); + + return JSON.stringify({ + status: 'ok', + stage, + runId, + message: `Saved ${stage} output to run #${runId}.`, + }); +} diff --git a/packages/plugin/cli/commands/save-user-prefs.ts b/packages/plugin/cli/commands/save-user-prefs.ts new file mode 100644 index 00000000..7c13b28c --- /dev/null +++ b/packages/plugin/cli/commands/save-user-prefs.ts @@ -0,0 +1,121 @@ +/** + * save-user-prefs CLI command + * + * Persists BetterPrompt user preferences with merge semantics. + * + * Usage: betterprompt-cli save-user-prefs --json '{"selectedProjects":[]}' + * OR: betterprompt-cli save-user-prefs --file /path/to/prefs.json + * OR: betterprompt-cli save-user-prefs --selectedProjects '[]' --starAsked true --markWelcomeCompleted true + * + * Note: --json and --file are input channels, not persisted fields. They are + * stripped before validation — unrecognized keys in the JSON payload are ignored. + */ + +import { readFileSync } from 'node:fs'; +import { z } from 'zod'; +import { readPrefs, writePrefs, type UserPrefs } from '../../lib/prefs.js'; +import { markAnalysisPending } from '../../lib/debounce.js'; + +const SaveUserPrefsInputSchema = z.object({ + selectedProjects: z.array(z.string()).optional(), + starAsked: z.boolean().optional(), + welcomeShown: z.boolean().optional(), + welcomeVersion: z.string().optional(), + markWelcomeCompleted: z.boolean().optional(), + queueAnalysis: z.boolean().optional(), +}); + +function normalizeWelcomeVersion(value: string | undefined): string | undefined { + if (value === undefined) return undefined; + const trimmed = value.trim(); + if ( + (trimmed.startsWith('"') && trimmed.endsWith('"')) + || (trimmed.startsWith('\'') && trimmed.endsWith('\'')) + ) { + return trimmed.slice(1, -1).trim(); + } + return trimmed; +} + +export async function execute(args: Record): Promise { + // Read from --json or --file if provided + let inputArgs = args; + + if (args.json !== undefined) { + try { + // CLI parser may have already parsed the JSON string into an object + const parsed = typeof args.json === 'string' ? JSON.parse(args.json) : args.json; + if (typeof parsed === 'object' && parsed !== null) { + inputArgs = { ...args, ...parsed }; + } + } catch (error) { + return JSON.stringify({ + status: 'error', + message: `Invalid JSON: ${error instanceof Error ? error.message : 'parse error'}`, + }); + } + } + + if (typeof args.file === 'string') { + try { + inputArgs = { ...args, ...JSON.parse(readFileSync(args.file, 'utf-8')) }; + } catch (error) { + return JSON.stringify({ + status: 'error', + message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`, + }); + } + } + + // Remove CLI-only args before validation + const { json: _j, file: _f, ...cleanArgs } = inputArgs; + + const parsed = SaveUserPrefsInputSchema.safeParse(cleanArgs); + if (!parsed.success) { + return JSON.stringify({ + status: 'validation_error', + message: 'Invalid user prefs payload.', + errors: parsed.error.issues.map(issue => ({ + path: issue.path.join('.'), + message: issue.message, + })), + }); + } + + const { markWelcomeCompleted = false, queueAnalysis = false, ...partial } = parsed.data; + const nextPrefs: Partial = { + ...partial, + ...(partial.welcomeVersion !== undefined + ? { welcomeVersion: normalizeWelcomeVersion(partial.welcomeVersion) } + : {}), + }; + + if (markWelcomeCompleted) { + nextPrefs.welcomeCompleted = new Date().toISOString(); + } + + if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) { + return JSON.stringify({ + status: 'noop', + prefs: readPrefs(), + message: 'No preference fields were provided.', + }); + } + + if (Object.keys(nextPrefs).length > 0) { + writePrefs(nextPrefs); + } + + if (queueAnalysis) { + markAnalysisPending(); + } + + return JSON.stringify({ + status: 'ok', + prefs: readPrefs(), + ...(queueAnalysis ? { analysisQueued: true } : {}), + message: queueAnalysis + ? 'Updated preferences and queued analysis for next session.' + : 'Updated BetterPrompt user preferences.', + }); +} diff --git a/packages/plugin/mcp/tools/scan-sessions.ts b/packages/plugin/cli/commands/scan-sessions.ts similarity index 75% rename from packages/plugin/mcp/tools/scan-sessions.ts rename to packages/plugin/cli/commands/scan-sessions.ts index 5370f8f7..15aeab64 100644 --- a/packages/plugin/mcp/tools/scan-sessions.ts +++ b/packages/plugin/cli/commands/scan-sessions.ts @@ -1,8 +1,10 @@ /** - * scan_sessions MCP Tool + * scan-sessions CLI command * * Scans all supported local session sources and caches fully parsed sessions. * Returns session metadata (count, date range, total messages). + * + * Usage: betterprompt-cli scan-sessions [--includeProjects '["proj1","proj2"]'] */ import { @@ -11,33 +13,23 @@ import { import { getAnalysisLifecycleState, isAnalysisPending } from '../../lib/debounce.js'; import { normalizeProjectFilters, normalizeProjectNameValue } from '../../lib/project-filters.js'; -export const definition = { - name: 'scan_sessions', - description: - 'Scan Claude Code and Cursor session logs on this machine. Returns session metadata ' + - '(count, date range, projects, total messages, and sources). Use this as the first step before ' + - 'running extract_data. Does not return full session content.', -}; - -export async function execute(args: { includeProjects?: string[] }): Promise { +export async function execute(args: Record): Promise { const allSessions = await scanAndCacheParsedSessions(); - const includeProjects = normalizeProjectFilters(args.includeProjects); + const includeProjects = normalizeProjectFilters(args.includeProjects as string[] | undefined); if (allSessions.length === 0) { return JSON.stringify({ status: 'no_sessions', - message: 'No supported Claude Code or Cursor sessions found on this machine.', + message: 'No supported Claude Code sessions found on this machine.', }); } - // Build per-project session counts (always from full set) const allProjectNames = [...new Set(allSessions.map(s => normalizeProjectNameValue(s.projectName)))]; const allProjects = allProjectNames.map(name => ({ name, sessionCount: allSessions.filter(s => normalizeProjectNameValue(s.projectName) === name).length, })).sort((a, b) => b.sessionCount - a.sessionCount); - // Apply project filter if provided const sessions = includeProjects?.length ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; @@ -50,7 +42,6 @@ export async function execute(args: { includeProjects?: string[] }): Promise normalizeProjectNameValue(s.projectName)))]; const totalMessages = sessions.reduce((sum, s) => sum + s.messages.length, 0); const totalDuration = sessions.reduce((sum, s) => sum + s.durationSeconds, 0); @@ -83,7 +74,7 @@ export async function execute(args: { includeProjects?: string[] }): Promise { - const serverUrl = (args.serverUrl ?? getConfig().serverUrl)?.replace(/\/$/, ''); +export async function execute(args: Record): Promise { + const serverUrl = ((args.serverUrl as string) ?? getConfig().serverUrl)?.replace(/\/$/, ''); if (!serverUrl) { return JSON.stringify({ status: 'not_configured', - message: - 'No team server URL is available. Set the BetterPrompt plugin serverUrl setting ' + - 'or pass serverUrl to enable team sync.', + message: 'No team server URL. Set BETTERPROMPT_SERVER_URL or pass --serverUrl.', }); } @@ -41,13 +31,8 @@ export async function execute(args: { serverUrl?: string }): Promise { try { const response = await fetch(`${serverUrl}/api/analysis/sync`, { method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - run, - syncedAt: new Date().toISOString(), - }), + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ run, syncedAt: new Date().toISOString() }), signal: AbortSignal.timeout(15_000), }); diff --git a/packages/plugin/mcp/tools/verify-evidence.ts b/packages/plugin/cli/commands/verify-evidence.ts similarity index 61% rename from packages/plugin/mcp/tools/verify-evidence.ts rename to packages/plugin/cli/commands/verify-evidence.ts index 10ce3d0c..875f3025 100644 --- a/packages/plugin/mcp/tools/verify-evidence.ts +++ b/packages/plugin/cli/commands/verify-evidence.ts @@ -1,14 +1,11 @@ /** - * verify_evidence MCP Tool + * verify-evidence CLI command * - * Deterministically verifies that saved evidence quotes still map back to - * utterances from the current run. This keeps Phase 2.8 fast and resumable - * without relying on another large LLM pass. + * Deterministically verifies saved evidence quotes against utterances. * - * @module plugin/mcp/tools/verify-evidence + * Usage: betterprompt-cli verify-evidence [--threshold 50] */ -import { z } from 'zod'; import { getAnalysisRun, getCurrentRunId, @@ -19,17 +16,6 @@ import { saveStageOutput, } from '../../lib/stage-db.js'; -export const definition = { - name: 'verify_evidence', - description: - 'Deterministically verify saved evidence quotes against the current run\'s developer utterances, ' + - 'persist the evidenceVerification stage output, and return kept/filtered counts.', -}; - -export const VerifyEvidenceInputSchema = z.object({ - threshold: z.number().int().min(0).max(100).optional(), -}); - function normalizeText(text: string): string { return text .normalize('NFKD') @@ -49,7 +35,6 @@ function tokenize(text: string): string[] { function bigrams(text: string): string[] { const normalized = normalizeText(text).replace(/\s+/g, ' '); if (normalized.length < 2) return normalized ? [normalized] : []; - const grams: string[] = []; for (let index = 0; index < normalized.length - 1; index += 1) { grams.push(normalized.slice(index, index + 2)); @@ -60,10 +45,7 @@ function bigrams(text: string): string[] { function diceCoefficient(left: string, right: string): number { const leftBigrams = bigrams(left); const rightBigrams = bigrams(right); - - if (leftBigrams.length === 0 || rightBigrams.length === 0) { - return 0; - } + if (leftBigrams.length === 0 || rightBigrams.length === 0) return 0; const rightCounts = new Map(); for (const gram of rightBigrams) { @@ -85,62 +67,34 @@ function diceCoefficient(left: string, right: string): number { function scoreEvidence(quote: string, utterance: string): number { const normalizedQuote = normalizeText(quote); const normalizedUtterance = normalizeText(utterance); + if (!normalizedQuote || !normalizedUtterance) return 0; - if (!normalizedQuote || !normalizedUtterance) { - return 0; - } - - if ( - normalizedUtterance.includes(normalizedQuote) || - normalizedQuote.includes(normalizedUtterance) - ) { + if (normalizedUtterance.includes(normalizedQuote) || normalizedQuote.includes(normalizedUtterance)) { return 100; } const quoteTokens = tokenize(quote); const utteranceTokens = new Set(tokenize(utterance)); - if (quoteTokens.length === 0) { - return 0; - } + if (quoteTokens.length === 0) return 0; const sharedTokens = quoteTokens.filter(token => utteranceTokens.has(token)).length; const tokenCoverage = sharedTokens / quoteTokens.length; const similarity = diceCoefficient(normalizedQuote, normalizedUtterance); - if (tokenCoverage >= 0.85 || similarity >= 0.82) { - return 85; - } - - if (tokenCoverage >= 0.6 || similarity >= 0.65) { - return 65; - } - - if (tokenCoverage >= 0.4 || similarity >= 0.5) { - return 45; - } - + if (tokenCoverage >= 0.85 || similarity >= 0.82) return 85; + if (tokenCoverage >= 0.6 || similarity >= 0.65) return 65; + if (tokenCoverage >= 0.4 || similarity >= 0.5) return 45; return 0; } -export async function execute(args: Record = {}): Promise { - const parsed = VerifyEvidenceInputSchema.safeParse(args); - if (!parsed.success) { - return JSON.stringify({ - status: 'validation_error', - message: 'Invalid verify_evidence request.', - errors: parsed.error.issues.map(issue => ({ - path: issue.path.join('.'), - message: issue.message, - })), - }); - } - - const threshold = parsed.data.threshold ?? 50; +export async function execute(args: Record): Promise { + const threshold = (typeof args.threshold === 'number' ? args.threshold : 50); const runId = getCurrentRunId(); + if (!runId) { return JSON.stringify({ status: 'error', - message: 'No active analysis run. Call extract_data first.', + message: 'No active analysis run. Run extract-data first.', }); } @@ -195,46 +149,26 @@ export async function execute(args: Record = {}): Promise= threshold; - if (verified) { - keptCount += 1; - } else { - filteredCount += 1; - } + if (verified) keptCount++; + else filteredCount++; - verifiedResults.push({ - utteranceId, - quote, - relevanceScore, - verified, - }); + verifiedResults.push({ utteranceId, quote, relevanceScore, verified }); } - domainStats.push({ - domain: result.domain, - totalEvidence: evidenceItems.length, - keptCount, - filteredCount, - }); + domainStats.push({ domain: result.domain, totalEvidence: evidenceItems.length, keptCount, filteredCount }); } - const data = { - verifiedResults, - domainStats, - threshold, - }; - + const data = { verifiedResults, domainStats, threshold }; saveStageOutput(runId, 'evidenceVerification', data); recordStageStatus(runId, 'evidenceVerification', { status: 'validated' }); - const keptCount = verifiedResults.filter(result => result.verified).length; + const keptCount = verifiedResults.filter(r => r.verified).length; const filteredCount = verifiedResults.length - keptCount; return JSON.stringify({ @@ -246,20 +180,11 @@ export async function execute(args: Record = {}): Promise [options] + * + * Output convention: + * - Small results: JSON printed to stdout + * - Large results: written to ~/.betterprompt/tmp/.json, + * stdout contains { status: "ok", outputFile: "" } + */ + +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { ensureNativeDeps } from '../lib/native-deps.js'; + +const pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..'); +ensureNativeDeps({ pluginRoot, fatal: true }); + +const COMMANDS: Record Promise<{ execute: (args: Record) => Promise }>> = { + 'scan-sessions': () => import('./commands/scan-sessions.js'), + 'extract-data': () => import('./commands/extract-data.js'), + 'get-prompt-context': () => import('./commands/get-prompt-context.js'), + 'save-stage-output': () => import('./commands/save-stage-output.js'), + 'get-stage-output': () => import('./commands/get-stage-output.js'), + 'save-domain-results': () => import('./commands/save-domain-results.js'), + 'get-domain-results': () => import('./commands/get-domain-results.js'), + 'get-run-progress': () => import('./commands/get-run-progress.js'), + 'classify-developer-type': () => import('./commands/classify-developer-type.js'), + 'verify-evidence': () => import('./commands/verify-evidence.js'), + 'generate-report': () => import('./commands/generate-report.js'), + 'sync-to-team': () => import('./commands/sync-to-team.js'), + 'get-user-prefs': () => import('./commands/get-user-prefs.js'), + 'save-user-prefs': () => import('./commands/save-user-prefs.js'), +}; + +/** Convert kebab-case to camelCase: "include-projects" → "includeProjects" */ +function toCamelCase(str: string): string { + return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase()); +} + +function parseArgs(argv: string[]): { command: string; args: Record } { + const [command, ...rest] = argv; + const args: Record = {}; + + for (let i = 0; i < rest.length; i++) { + const token = rest[i]!; + if (token.startsWith('--')) { + const key = toCamelCase(token.slice(2)); + const next = rest[i + 1]; + + if (key in args) { + throw new Error(`Duplicate flag: ${token} (already provided)`); + } + + // Boolean flag (no value or next token is also a flag) + if (next === undefined || next.startsWith('--')) { + args[key] = true; + continue; + } + + // Try to parse as JSON (for objects/arrays/numbers/booleans) + try { + args[key] = JSON.parse(next); + } catch { + args[key] = next; + } + i++; + } + } + + return { command: command ?? '', args }; +} + +async function main(): Promise { + const { command, args } = parseArgs(process.argv.slice(2)); + + if (!command || command === 'help') { + const commands = Object.keys(COMMANDS).sort().join('\n '); + console.log(`BetterPrompt CLI\n\nUsage: betterprompt-cli [--arg value ...]\n\nCommands:\n ${commands}`); + process.exit(0); + } + + const loader = COMMANDS[command]; + if (!loader) { + console.error(JSON.stringify({ + status: 'error', + message: `Unknown command: ${command}. Run with "help" to see available commands.`, + })); + process.exit(1); + } + + try { + const mod = await loader(); + const result = await mod.execute(args); + console.log(result); + } catch (error) { + console.error(JSON.stringify({ + status: 'error', + message: error instanceof Error ? error.message : 'Unknown error', + })); + process.exit(1); + } +} + +main(); diff --git a/packages/plugin/dist/chunk-3Y74BQOH.js b/packages/plugin/dist/chunk-3Y74BQOH.js new file mode 100644 index 00000000..709e4281 --- /dev/null +++ b/packages/plugin/dist/chunk-3Y74BQOH.js @@ -0,0 +1 @@ +//# sourceMappingURL=chunk-3Y74BQOH.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-3Y74BQOH.js.map b/packages/plugin/dist/chunk-3Y74BQOH.js.map new file mode 100644 index 00000000..84c51b28 --- /dev/null +++ b/packages/plugin/dist/chunk-3Y74BQOH.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-ZSMKKVNT.js b/packages/plugin/dist/chunk-A6TBYMRP.js similarity index 96% rename from packages/plugin/dist/chunk-ZSMKKVNT.js rename to packages/plugin/dist/chunk-A6TBYMRP.js index 3df1d758..acf38a87 100644 --- a/packages/plugin/dist/chunk-ZSMKKVNT.js +++ b/packages/plugin/dist/chunk-A6TBYMRP.js @@ -2,7 +2,7 @@ import { debug, error, info -} from "./chunk-PP5673GG.js"; +} from "./chunk-FW6ZW4J3.js"; // lib/native-deps.ts import { existsSync, mkdirSync } from "fs"; @@ -53,4 +53,4 @@ function ensureNativeDeps(opts) { export { ensureNativeDeps }; -//# sourceMappingURL=chunk-ZSMKKVNT.js.map \ No newline at end of file +//# sourceMappingURL=chunk-A6TBYMRP.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-A6TBYMRP.js.map b/packages/plugin/dist/chunk-A6TBYMRP.js.map new file mode 100644 index 00000000..1d618cbd --- /dev/null +++ b/packages/plugin/dist/chunk-A6TBYMRP.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../lib/native-deps.ts"],"sourcesContent":["/**\n * Shared native dependency installer.\n *\n * Ensures `better-sqlite3` is compiled and available so that Node's\n * standard module resolution finds it at runtime.\n *\n * Primary strategy: install into `pluginRoot/node_modules/` so that\n * `require('better-sqlite3')` from `dist/` resolves naturally via\n * directory walking. Fallback: `~/.betterprompt/node_modules/` for\n * callers that don't know the plugin root.\n *\n * Safe to call from multiple entry points (SessionStart hook, CLI\n * startup) — a marker file prevents redundant installs.\n */\n\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { debug, info, error as logError } from './logger.js';\n\nexport function ensureNativeDeps(opts?: { pluginRoot?: string; fatal?: boolean }): void {\n const installDir = opts?.pluginRoot ?? join(homedir(), '.betterprompt');\n\n // Ensure the data directory exists before any install attempt\n const dataDir = join(homedir(), '.betterprompt');\n try {\n mkdirSync(dataDir, { recursive: true });\n } catch {\n // best-effort — directory may already exist\n }\n\n const marker = join(installDir, 'node_modules', 'better-sqlite3', 'build', 'Release', 'better_sqlite3.node');\n if (existsSync(marker)) {\n debug('native-deps', 'marker found, skipping install', { installDir });\n return;\n }\n\n info('native-deps', 'installing better-sqlite3', { installDir });\n try {\n // Capture output for diagnostics instead of silently ignoring\n const output = execFileSync('npm', ['install', '--prefix', installDir, 'better-sqlite3@12.8.0'], {\n timeout: 120_000,\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n if (output) {\n debug('native-deps', 'npm output', { output: output.slice(0, 500) });\n }\n info('native-deps', 'install succeeded');\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : String(err);\n const stderr = (err as { stderr?: string }).stderr ?? '';\n logError('native-deps', 'install failed', {\n error: errorMsg,\n ...(stderr ? { stderr: stderr.slice(0, 1000) } : {}),\n hint: 'Ensure Node.js >=18 and build tools are available (Xcode CLI on macOS, build-essential on Linux)',\n });\n if (opts?.fatal) {\n throw new Error(\n `[betterprompt] Failed to install better-sqlite3: ${errorMsg}\\n` +\n (stderr ? `npm stderr: ${stderr.slice(0, 500)}\\n` : '') +\n 'Hint: Ensure Node.js >=18 and build tools are installed (macOS: xcode-select --install)',\n );\n }\n }\n}\n"],"mappings":";;;;;;;AAeA,SAAS,YAAY,iBAAiB;AACtC,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,eAAe;AAGjB,SAAS,iBAAiB,MAAuD;AACtF,QAAM,aAAa,MAAM,cAAc,KAAK,QAAQ,GAAG,eAAe;AAGtE,QAAM,UAAU,KAAK,QAAQ,GAAG,eAAe;AAC/C,MAAI;AACF,cAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC,QAAQ;AAAA,EAER;AAEA,QAAM,SAAS,KAAK,YAAY,gBAAgB,kBAAkB,SAAS,WAAW,qBAAqB;AAC3G,MAAI,WAAW,MAAM,GAAG;AACtB,UAAM,eAAe,kCAAkC,EAAE,WAAW,CAAC;AACrE;AAAA,EACF;AAEA,OAAK,eAAe,6BAA6B,EAAE,WAAW,CAAC;AAC/D,MAAI;AAEF,UAAM,SAAS,aAAa,OAAO,CAAC,WAAW,YAAY,YAAY,uBAAuB,GAAG;AAAA,MAC/F,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IAClC,CAAC;AACD,QAAI,QAAQ;AACV,YAAM,eAAe,cAAc,EAAE,QAAQ,OAAO,MAAM,GAAG,GAAG,EAAE,CAAC;AAAA,IACrE;AACA,SAAK,eAAe,mBAAmB;AAAA,EACzC,SAAS,KAAK;AACZ,UAAM,WAAW,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAChE,UAAM,SAAU,IAA4B,UAAU;AACtD,UAAS,eAAe,kBAAkB;AAAA,MACxC,OAAO;AAAA,MACP,GAAI,SAAS,EAAE,QAAQ,OAAO,MAAM,GAAG,GAAI,EAAE,IAAI,CAAC;AAAA,MAClD,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAM,OAAO;AACf,YAAM,IAAI;AAAA,QACR,oDAAoD,QAAQ;AAAA,KAC3D,SAAS,eAAe,OAAO,MAAM,GAAG,GAAG,CAAC;AAAA,IAAO,MACpD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-FIGO7IPG.js b/packages/plugin/dist/chunk-FIGO7IPG.js new file mode 100644 index 00000000..8f8c2dfe --- /dev/null +++ b/packages/plugin/dist/chunk-FIGO7IPG.js @@ -0,0 +1,41 @@ +import { + debug +} from "./chunk-FW6ZW4J3.js"; +import { + getPluginDataDir +} from "./chunk-UORQZYNI.js"; + +// lib/config.ts +import { join } from "path"; +var DEFAULTS = { + serverUrl: "http://localhost:3000", + autoAnalyze: true, + analyzeThreshold: 5 +}; +var cachedConfig = null; +function getConfig() { + if (cachedConfig) return cachedConfig; + cachedConfig = { + serverUrl: (process.env.BETTERPROMPT_SERVER_URL ?? DEFAULTS.serverUrl).replace(/\/$/, ""), + autoAnalyze: process.env.BETTERPROMPT_AUTO_ANALYZE !== "false", + analyzeThreshold: Number.parseInt( + process.env.BETTERPROMPT_ANALYZE_THRESHOLD ?? "", + 10 + ) || DEFAULTS.analyzeThreshold + }; + debug("config", "resolved", { ...cachedConfig }); + return cachedConfig; +} +function getPluginDataDir2() { + return getPluginDataDir(); +} +function getStateFilePath() { + return join(getPluginDataDir2(), "plugin-state.json"); +} + +export { + getConfig, + getPluginDataDir2 as getPluginDataDir, + getStateFilePath +}; +//# sourceMappingURL=chunk-FIGO7IPG.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-FIGO7IPG.js.map b/packages/plugin/dist/chunk-FIGO7IPG.js.map new file mode 100644 index 00000000..c04151d5 --- /dev/null +++ b/packages/plugin/dist/chunk-FIGO7IPG.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../lib/config.ts"],"sourcesContent":["/**\n * Plugin Configuration\n *\n * Claude Code injects plugin.json settings into the plugin runtime.\n * BetterPrompt treats these as plugin settings, not as a user-facing\n * environment-variable configuration surface.\n */\n\nimport { join } from 'node:path';\nimport { getPluginDataDir as resolvePluginDataDir } from './core/session-scanner.js';\nimport { debug } from './logger.js';\n\nexport interface PluginConfig {\n serverUrl: string;\n autoAnalyze: boolean;\n analyzeThreshold: number;\n}\n\nconst DEFAULTS: PluginConfig = {\n serverUrl: 'http://localhost:3000',\n autoAnalyze: true,\n analyzeThreshold: 5,\n};\n\nlet cachedConfig: PluginConfig | null = null;\n\nexport function getConfig(): PluginConfig {\n if (cachedConfig) return cachedConfig;\n\n cachedConfig = {\n serverUrl: (process.env.BETTERPROMPT_SERVER_URL ?? DEFAULTS.serverUrl).replace(/\\/$/, ''),\n\n autoAnalyze:\n process.env.BETTERPROMPT_AUTO_ANALYZE !== 'false',\n\n analyzeThreshold: Number.parseInt(\n process.env.BETTERPROMPT_ANALYZE_THRESHOLD ?? '',\n 10,\n ) || DEFAULTS.analyzeThreshold,\n };\n\n debug('config', 'resolved', { ...cachedConfig });\n return cachedConfig;\n}\n\n/** Reset cached config (for testing) */\nexport function resetConfig(): void {\n cachedConfig = null;\n}\n\n/** Base directory for plugin state files */\nexport function getPluginDataDir(): string {\n return resolvePluginDataDir();\n}\n\n/** Path to the plugin state file (debounce tracking) */\nexport function getStateFilePath(): string {\n return join(getPluginDataDir(), 'plugin-state.json');\n}\n\n/** Path to the insight cache database */\nexport function getCacheDbPath(): string {\n return join(getPluginDataDir(), 'insight-cache.db');\n}\n\n/** Path to the error log */\nexport function getErrorLogPath(): string {\n return join(getPluginDataDir(), 'plugin-errors.log');\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,YAAY;AAUrB,IAAM,WAAyB;AAAA,EAC7B,WAAW;AAAA,EACX,aAAa;AAAA,EACb,kBAAkB;AACpB;AAEA,IAAI,eAAoC;AAEjC,SAAS,YAA0B;AACxC,MAAI,aAAc,QAAO;AAEzB,iBAAe;AAAA,IACb,YAAY,QAAQ,IAAI,2BAA2B,SAAS,WAAW,QAAQ,OAAO,EAAE;AAAA,IAExF,aACE,QAAQ,IAAI,8BAA8B;AAAA,IAE5C,kBAAkB,OAAO;AAAA,MACvB,QAAQ,IAAI,kCAAkC;AAAA,MAC9C;AAAA,IACF,KAAK,SAAS;AAAA,EAChB;AAEA,QAAM,UAAU,YAAY,EAAE,GAAG,aAAa,CAAC;AAC/C,SAAO;AACT;AAQO,SAASA,oBAA2B;AACzC,SAAO,iBAAqB;AAC9B;AAGO,SAAS,mBAA2B;AACzC,SAAO,KAAKA,kBAAiB,GAAG,mBAAmB;AACrD;","names":["getPluginDataDir"]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-FW6ZW4J3.js b/packages/plugin/dist/chunk-FW6ZW4J3.js new file mode 100644 index 00000000..d0bd06e4 --- /dev/null +++ b/packages/plugin/dist/chunk-FW6ZW4J3.js @@ -0,0 +1,51 @@ +// lib/logger.ts +import { appendFileSync, mkdirSync } from "fs"; +import { join } from "path"; +import { homedir } from "os"; +var stderrEnabled = process.env.BETTERPROMPT_DEBUG === "1"; +var logDir = join(homedir(), ".betterprompt"); +var logPath = join(logDir, "debug.log"); +var dirEnsured = false; +function ensureLogDir() { + if (dirEnsured) return; + try { + mkdirSync(logDir, { recursive: true }); + } catch { + } + dirEnsured = true; +} +function format(tag, msg, data) { + const suffix = data ? ` ${JSON.stringify(data)}` : ""; + return `[bp:${tag}] ${msg}${suffix} +`; +} +function writeToFile(line) { + ensureLogDir(); + try { + const timestamped = `${(/* @__PURE__ */ new Date()).toISOString()} ${line}`; + appendFileSync(logPath, timestamped); + } catch { + } +} +function debug(tag, msg, data) { + const line = format(tag, msg, data); + writeToFile(line); + if (stderrEnabled) process.stderr.write(line); +} +function info(tag, msg, data) { + const line = format(tag, msg, data); + writeToFile(line); + process.stderr.write(line); +} +function error(tag, msg, data) { + const line = format(tag, msg, data); + writeToFile(line); + process.stderr.write(line); +} + +export { + debug, + info, + error +}; +//# sourceMappingURL=chunk-FW6ZW4J3.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-PP5673GG.js.map b/packages/plugin/dist/chunk-FW6ZW4J3.js.map similarity index 68% rename from packages/plugin/dist/chunk-PP5673GG.js.map rename to packages/plugin/dist/chunk-FW6ZW4J3.js.map index 4992e028..ae39dc1a 100644 --- a/packages/plugin/dist/chunk-PP5673GG.js.map +++ b/packages/plugin/dist/chunk-FW6ZW4J3.js.map @@ -1 +1 @@ -{"version":3,"sources":["../lib/logger.ts"],"sourcesContent":["/**\n * Debug Logger\n *\n * Logging utility for the BetterPrompt plugin.\n * Writes to both stderr and ~/.betterprompt/debug.log.\n * Stderr output is gated by BETTERPROMPT_DEBUG=1;\n * the log file always receives all messages.\n *\n * Output format: [bp:] {optional JSON}\\n\n */\n\nimport { appendFileSync, mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\n\nconst stderrEnabled = process.env.BETTERPROMPT_DEBUG === '1';\n\nconst logDir = join(homedir(), '.betterprompt');\nconst logPath = join(logDir, 'debug.log');\n\nlet dirEnsured = false;\n\nfunction ensureLogDir(): void {\n if (dirEnsured) return;\n try {\n mkdirSync(logDir, { recursive: true });\n } catch {\n // best-effort\n }\n dirEnsured = true;\n}\n\nfunction format(tag: string, msg: string, data?: Record): string {\n const suffix = data ? ` ${JSON.stringify(data)}` : '';\n return `[bp:${tag}] ${msg}${suffix}\\n`;\n}\n\nfunction writeToFile(line: string): void {\n ensureLogDir();\n try {\n const timestamped = `${new Date().toISOString()} ${line}`;\n appendFileSync(logPath, timestamped);\n } catch {\n // best-effort — never crash the plugin for logging\n }\n}\n\n/** Debug-level log — file always, stderr only when BETTERPROMPT_DEBUG=1. */\nexport function debug(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n if (stderrEnabled) process.stderr.write(line);\n}\n\n/** Info-level log — always emits to both file and stderr. */\nexport function info(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n process.stderr.write(line);\n}\n\n/** Error-level log — always emits to both file and stderr. */\nexport function error(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n process.stderr.write(line);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,SAAS,gBAAgB,iBAAiB;AAC1C,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,IAAM,gBAAgB,QAAQ,IAAI,uBAAuB;AAEzD,IAAM,SAAS,KAAK,QAAQ,GAAG,eAAe;AAC9C,IAAM,UAAU,KAAK,QAAQ,WAAW;AAExC,IAAI,aAAa;AAEjB,SAAS,eAAqB;AAC5B,MAAI,WAAY;AAChB,MAAI;AACF,cAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACvC,QAAQ;AAAA,EAER;AACA,eAAa;AACf;AAEA,SAAS,OAAO,KAAa,KAAa,MAAwC;AAChF,QAAM,SAAS,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK;AACnD,SAAO,OAAO,GAAG,KAAK,GAAG,GAAG,MAAM;AAAA;AACpC;AAEA,SAAS,YAAY,MAAoB;AACvC,eAAa;AACb,MAAI;AACF,UAAM,cAAc,IAAG,oBAAI,KAAK,GAAE,YAAY,CAAC,IAAI,IAAI;AACvD,mBAAe,SAAS,WAAW;AAAA,EACrC,QAAQ;AAAA,EAER;AACF;AAGO,SAAS,MAAM,KAAa,KAAa,MAAsC;AACpF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,MAAI,cAAe,SAAQ,OAAO,MAAM,IAAI;AAC9C;AAGO,SAAS,KAAK,KAAa,KAAa,MAAsC;AACnF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,UAAQ,OAAO,MAAM,IAAI;AAC3B;AAGO,SAAS,MAAM,KAAa,KAAa,MAAsC;AACpF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,UAAQ,OAAO,MAAM,IAAI;AAC3B;","names":[]} \ No newline at end of file +{"version":3,"sources":["../lib/logger.ts"],"sourcesContent":["/**\n * Debug Logger\n *\n * Logging utility for the BetterPrompt plugin.\n * Writes to both stderr and ~/.betterprompt/debug.log.\n * Stderr output is gated by BETTERPROMPT_DEBUG=1;\n * the log file always receives all messages.\n *\n * Output format: [bp:] {optional JSON}\\n\n */\n\nimport { appendFileSync, mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\n\nconst stderrEnabled = process.env.BETTERPROMPT_DEBUG === '1';\n\nconst logDir = join(homedir(), '.betterprompt');\nconst logPath = join(logDir, 'debug.log');\n\nlet dirEnsured = false;\n\nfunction ensureLogDir(): void {\n if (dirEnsured) return;\n try {\n mkdirSync(logDir, { recursive: true });\n } catch {\n // best-effort\n }\n dirEnsured = true;\n}\n\nfunction format(tag: string, msg: string, data?: Record): string {\n const suffix = data ? ` ${JSON.stringify(data)}` : '';\n return `[bp:${tag}] ${msg}${suffix}\\n`;\n}\n\nfunction writeToFile(line: string): void {\n ensureLogDir();\n try {\n const timestamped = `${new Date().toISOString()} ${line}`;\n appendFileSync(logPath, timestamped);\n } catch {\n // best-effort — never crash the plugin for logging\n }\n}\n\n/** Debug-level log — file always, stderr only when BETTERPROMPT_DEBUG=1. */\nexport function debug(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n if (stderrEnabled) process.stderr.write(line);\n}\n\n/** Info-level log — always emits to both file and stderr. */\nexport function info(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n process.stderr.write(line);\n}\n\n/** Error-level log — always emits to both file and stderr. */\nexport function error(tag: string, msg: string, data?: Record): void {\n const line = format(tag, msg, data);\n writeToFile(line);\n process.stderr.write(line);\n}\n"],"mappings":";AAWA,SAAS,gBAAgB,iBAAiB;AAC1C,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,IAAM,gBAAgB,QAAQ,IAAI,uBAAuB;AAEzD,IAAM,SAAS,KAAK,QAAQ,GAAG,eAAe;AAC9C,IAAM,UAAU,KAAK,QAAQ,WAAW;AAExC,IAAI,aAAa;AAEjB,SAAS,eAAqB;AAC5B,MAAI,WAAY;AAChB,MAAI;AACF,cAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACvC,QAAQ;AAAA,EAER;AACA,eAAa;AACf;AAEA,SAAS,OAAO,KAAa,KAAa,MAAwC;AAChF,QAAM,SAAS,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK;AACnD,SAAO,OAAO,GAAG,KAAK,GAAG,GAAG,MAAM;AAAA;AACpC;AAEA,SAAS,YAAY,MAAoB;AACvC,eAAa;AACb,MAAI;AACF,UAAM,cAAc,IAAG,oBAAI,KAAK,GAAE,YAAY,CAAC,IAAI,IAAI;AACvD,mBAAe,SAAS,WAAW;AAAA,EACrC,QAAQ;AAAA,EAER;AACF;AAGO,SAAS,MAAM,KAAa,KAAa,MAAsC;AACpF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,MAAI,cAAe,SAAQ,OAAO,MAAM,IAAI;AAC9C;AAGO,SAAS,KAAK,KAAa,KAAa,MAAsC;AACnF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,UAAQ,OAAO,MAAM,IAAI;AAC3B;AAGO,SAAS,MAAM,KAAa,KAAa,MAAsC;AACpF,QAAM,OAAO,OAAO,KAAK,KAAK,IAAI;AAClC,cAAY,IAAI;AAChB,UAAQ,OAAO,MAAM,IAAI;AAC3B;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-QFCYET5Y.js b/packages/plugin/dist/chunk-IQ4EWBXE.js similarity index 86% rename from packages/plugin/dist/chunk-QFCYET5Y.js rename to packages/plugin/dist/chunk-IQ4EWBXE.js index de86a606..fc4735c3 100644 --- a/packages/plugin/dist/chunk-QFCYET5Y.js +++ b/packages/plugin/dist/chunk-IQ4EWBXE.js @@ -1,6 +1,6 @@ import { - getPluginDataDir2 as getPluginDataDir -} from "./chunk-SUEN2LKX.js"; + getPluginDataDir +} from "./chunk-FIGO7IPG.js"; // lib/prefs.ts import { readFileSync, writeFileSync, mkdirSync } from "fs"; @@ -34,4 +34,4 @@ export { writePrefs, isFirstRun }; -//# sourceMappingURL=chunk-QFCYET5Y.js.map \ No newline at end of file +//# sourceMappingURL=chunk-IQ4EWBXE.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-QFCYET5Y.js.map b/packages/plugin/dist/chunk-IQ4EWBXE.js.map similarity index 100% rename from packages/plugin/dist/chunk-QFCYET5Y.js.map rename to packages/plugin/dist/chunk-IQ4EWBXE.js.map diff --git a/packages/plugin/dist/chunk-NSBPE2FW.js b/packages/plugin/dist/chunk-NSBPE2FW.js new file mode 100644 index 00000000..cfe2849a --- /dev/null +++ b/packages/plugin/dist/chunk-NSBPE2FW.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] +}) : x)(function(x) { + if (typeof require !== "undefined") return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); +}); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; + +export { + __require, + __export +}; +//# sourceMappingURL=chunk-NSBPE2FW.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-NSBPE2FW.js.map b/packages/plugin/dist/chunk-NSBPE2FW.js.map new file mode 100644 index 00000000..84c51b28 --- /dev/null +++ b/packages/plugin/dist/chunk-NSBPE2FW.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-PP5673GG.js b/packages/plugin/dist/chunk-PP5673GG.js deleted file mode 100644 index cbc411ae..00000000 --- a/packages/plugin/dist/chunk-PP5673GG.js +++ /dev/null @@ -1,91 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// lib/logger.ts -import { appendFileSync, mkdirSync } from "fs"; -import { join } from "path"; -import { homedir } from "os"; -var stderrEnabled = process.env.BETTERPROMPT_DEBUG === "1"; -var logDir = join(homedir(), ".betterprompt"); -var logPath = join(logDir, "debug.log"); -var dirEnsured = false; -function ensureLogDir() { - if (dirEnsured) return; - try { - mkdirSync(logDir, { recursive: true }); - } catch { - } - dirEnsured = true; -} -function format(tag, msg, data) { - const suffix = data ? ` ${JSON.stringify(data)}` : ""; - return `[bp:${tag}] ${msg}${suffix} -`; -} -function writeToFile(line) { - ensureLogDir(); - try { - const timestamped = `${(/* @__PURE__ */ new Date()).toISOString()} ${line}`; - appendFileSync(logPath, timestamped); - } catch { - } -} -function debug(tag, msg, data) { - const line = format(tag, msg, data); - writeToFile(line); - if (stderrEnabled) process.stderr.write(line); -} -function info(tag, msg, data) { - const line = format(tag, msg, data); - writeToFile(line); - process.stderr.write(line); -} -function error(tag, msg, data) { - const line = format(tag, msg, data); - writeToFile(line); - process.stderr.write(line); -} - -export { - __require, - __commonJS, - __export, - __toESM, - debug, - info, - error -}; -//# sourceMappingURL=chunk-PP5673GG.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-SUEN2LKX.js b/packages/plugin/dist/chunk-SUEN2LKX.js deleted file mode 100644 index 5719b9b5..00000000 --- a/packages/plugin/dist/chunk-SUEN2LKX.js +++ /dev/null @@ -1,29741 +0,0 @@ -import { - __export, - debug -} from "./chunk-PP5673GG.js"; - -// node_modules/zod/v4/classic/external.js -var external_exports = {}; -__export(external_exports, { - $brand: () => $brand, - $input: () => $input, - $output: () => $output, - NEVER: () => NEVER, - TimePrecision: () => TimePrecision, - ZodAny: () => ZodAny, - ZodArray: () => ZodArray, - ZodBase64: () => ZodBase64, - ZodBase64URL: () => ZodBase64URL, - ZodBigInt: () => ZodBigInt, - ZodBigIntFormat: () => ZodBigIntFormat, - ZodBoolean: () => ZodBoolean, - ZodCIDRv4: () => ZodCIDRv4, - ZodCIDRv6: () => ZodCIDRv6, - ZodCUID: () => ZodCUID, - ZodCUID2: () => ZodCUID2, - ZodCatch: () => ZodCatch, - ZodCodec: () => ZodCodec, - ZodCustom: () => ZodCustom, - ZodCustomStringFormat: () => ZodCustomStringFormat, - ZodDate: () => ZodDate, - ZodDefault: () => ZodDefault, - ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, - ZodE164: () => ZodE164, - ZodEmail: () => ZodEmail, - ZodEmoji: () => ZodEmoji, - ZodEnum: () => ZodEnum, - ZodError: () => ZodError, - ZodExactOptional: () => ZodExactOptional, - ZodFile: () => ZodFile, - ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind, - ZodFunction: () => ZodFunction, - ZodGUID: () => ZodGUID, - ZodIPv4: () => ZodIPv4, - ZodIPv6: () => ZodIPv6, - ZodISODate: () => ZodISODate, - ZodISODateTime: () => ZodISODateTime, - ZodISODuration: () => ZodISODuration, - ZodISOTime: () => ZodISOTime, - ZodIntersection: () => ZodIntersection, - ZodIssueCode: () => ZodIssueCode, - ZodJWT: () => ZodJWT, - ZodKSUID: () => ZodKSUID, - ZodLazy: () => ZodLazy, - ZodLiteral: () => ZodLiteral, - ZodMAC: () => ZodMAC, - ZodMap: () => ZodMap, - ZodNaN: () => ZodNaN, - ZodNanoID: () => ZodNanoID, - ZodNever: () => ZodNever, - ZodNonOptional: () => ZodNonOptional, - ZodNull: () => ZodNull, - ZodNullable: () => ZodNullable, - ZodNumber: () => ZodNumber, - ZodNumberFormat: () => ZodNumberFormat, - ZodObject: () => ZodObject, - ZodOptional: () => ZodOptional, - ZodPipe: () => ZodPipe, - ZodPrefault: () => ZodPrefault, - ZodPromise: () => ZodPromise, - ZodReadonly: () => ZodReadonly, - ZodRealError: () => ZodRealError, - ZodRecord: () => ZodRecord, - ZodSet: () => ZodSet, - ZodString: () => ZodString, - ZodStringFormat: () => ZodStringFormat, - ZodSuccess: () => ZodSuccess, - ZodSymbol: () => ZodSymbol, - ZodTemplateLiteral: () => ZodTemplateLiteral, - ZodTransform: () => ZodTransform, - ZodTuple: () => ZodTuple, - ZodType: () => ZodType, - ZodULID: () => ZodULID, - ZodURL: () => ZodURL, - ZodUUID: () => ZodUUID, - ZodUndefined: () => ZodUndefined, - ZodUnion: () => ZodUnion, - ZodUnknown: () => ZodUnknown, - ZodVoid: () => ZodVoid, - ZodXID: () => ZodXID, - ZodXor: () => ZodXor, - _ZodString: () => _ZodString, - _default: () => _default2, - _function: () => _function, - any: () => any, - array: () => array, - base64: () => base642, - base64url: () => base64url2, - bigint: () => bigint2, - boolean: () => boolean2, - catch: () => _catch2, - check: () => check, - cidrv4: () => cidrv42, - cidrv6: () => cidrv62, - clone: () => clone, - codec: () => codec, - coerce: () => coerce_exports, - config: () => config, - core: () => core_exports2, - cuid: () => cuid3, - cuid2: () => cuid22, - custom: () => custom, - date: () => date3, - decode: () => decode2, - decodeAsync: () => decodeAsync2, - describe: () => describe2, - discriminatedUnion: () => discriminatedUnion, - e164: () => e1642, - email: () => email2, - emoji: () => emoji2, - encode: () => encode2, - encodeAsync: () => encodeAsync2, - endsWith: () => _endsWith, - enum: () => _enum2, - exactOptional: () => exactOptional, - file: () => file, - flattenError: () => flattenError, - float32: () => float32, - float64: () => float64, - formatError: () => formatError, - fromJSONSchema: () => fromJSONSchema, - function: () => _function, - getErrorMap: () => getErrorMap, - globalRegistry: () => globalRegistry, - gt: () => _gt, - gte: () => _gte, - guid: () => guid2, - hash: () => hash, - hex: () => hex2, - hostname: () => hostname2, - httpUrl: () => httpUrl, - includes: () => _includes, - instanceof: () => _instanceof, - int: () => int, - int32: () => int32, - int64: () => int64, - intersection: () => intersection, - ipv4: () => ipv42, - ipv6: () => ipv62, - iso: () => iso_exports, - json: () => json, - jwt: () => jwt, - keyof: () => keyof, - ksuid: () => ksuid2, - lazy: () => lazy, - length: () => _length, - literal: () => literal, - locales: () => locales_exports, - looseObject: () => looseObject, - looseRecord: () => looseRecord, - lowercase: () => _lowercase, - lt: () => _lt, - lte: () => _lte, - mac: () => mac2, - map: () => map, - maxLength: () => _maxLength, - maxSize: () => _maxSize, - meta: () => meta2, - mime: () => _mime, - minLength: () => _minLength, - minSize: () => _minSize, - multipleOf: () => _multipleOf, - nan: () => nan, - nanoid: () => nanoid2, - nativeEnum: () => nativeEnum, - negative: () => _negative, - never: () => never, - nonnegative: () => _nonnegative, - nonoptional: () => nonoptional, - nonpositive: () => _nonpositive, - normalize: () => _normalize, - null: () => _null3, - nullable: () => nullable, - nullish: () => nullish2, - number: () => number2, - object: () => object, - optional: () => optional, - overwrite: () => _overwrite, - parse: () => parse2, - parseAsync: () => parseAsync2, - partialRecord: () => partialRecord, - pipe: () => pipe, - positive: () => _positive, - prefault: () => prefault, - preprocess: () => preprocess, - prettifyError: () => prettifyError, - promise: () => promise, - property: () => _property, - readonly: () => readonly, - record: () => record, - refine: () => refine, - regex: () => _regex, - regexes: () => regexes_exports, - registry: () => registry, - safeDecode: () => safeDecode2, - safeDecodeAsync: () => safeDecodeAsync2, - safeEncode: () => safeEncode2, - safeEncodeAsync: () => safeEncodeAsync2, - safeParse: () => safeParse2, - safeParseAsync: () => safeParseAsync2, - set: () => set, - setErrorMap: () => setErrorMap, - size: () => _size, - slugify: () => _slugify, - startsWith: () => _startsWith, - strictObject: () => strictObject, - string: () => string2, - stringFormat: () => stringFormat, - stringbool: () => stringbool, - success: () => success, - superRefine: () => superRefine, - symbol: () => symbol, - templateLiteral: () => templateLiteral, - toJSONSchema: () => toJSONSchema, - toLowerCase: () => _toLowerCase, - toUpperCase: () => _toUpperCase, - transform: () => transform, - treeifyError: () => treeifyError, - trim: () => _trim, - tuple: () => tuple, - uint32: () => uint32, - uint64: () => uint64, - ulid: () => ulid2, - undefined: () => _undefined3, - union: () => union, - unknown: () => unknown, - uppercase: () => _uppercase, - url: () => url, - util: () => util_exports, - uuid: () => uuid2, - uuidv4: () => uuidv4, - uuidv6: () => uuidv6, - uuidv7: () => uuidv7, - void: () => _void2, - xid: () => xid2, - xor: () => xor -}); - -// node_modules/zod/v4/core/index.js -var core_exports2 = {}; -__export(core_exports2, { - $ZodAny: () => $ZodAny, - $ZodArray: () => $ZodArray, - $ZodAsyncError: () => $ZodAsyncError, - $ZodBase64: () => $ZodBase64, - $ZodBase64URL: () => $ZodBase64URL, - $ZodBigInt: () => $ZodBigInt, - $ZodBigIntFormat: () => $ZodBigIntFormat, - $ZodBoolean: () => $ZodBoolean, - $ZodCIDRv4: () => $ZodCIDRv4, - $ZodCIDRv6: () => $ZodCIDRv6, - $ZodCUID: () => $ZodCUID, - $ZodCUID2: () => $ZodCUID2, - $ZodCatch: () => $ZodCatch, - $ZodCheck: () => $ZodCheck, - $ZodCheckBigIntFormat: () => $ZodCheckBigIntFormat, - $ZodCheckEndsWith: () => $ZodCheckEndsWith, - $ZodCheckGreaterThan: () => $ZodCheckGreaterThan, - $ZodCheckIncludes: () => $ZodCheckIncludes, - $ZodCheckLengthEquals: () => $ZodCheckLengthEquals, - $ZodCheckLessThan: () => $ZodCheckLessThan, - $ZodCheckLowerCase: () => $ZodCheckLowerCase, - $ZodCheckMaxLength: () => $ZodCheckMaxLength, - $ZodCheckMaxSize: () => $ZodCheckMaxSize, - $ZodCheckMimeType: () => $ZodCheckMimeType, - $ZodCheckMinLength: () => $ZodCheckMinLength, - $ZodCheckMinSize: () => $ZodCheckMinSize, - $ZodCheckMultipleOf: () => $ZodCheckMultipleOf, - $ZodCheckNumberFormat: () => $ZodCheckNumberFormat, - $ZodCheckOverwrite: () => $ZodCheckOverwrite, - $ZodCheckProperty: () => $ZodCheckProperty, - $ZodCheckRegex: () => $ZodCheckRegex, - $ZodCheckSizeEquals: () => $ZodCheckSizeEquals, - $ZodCheckStartsWith: () => $ZodCheckStartsWith, - $ZodCheckStringFormat: () => $ZodCheckStringFormat, - $ZodCheckUpperCase: () => $ZodCheckUpperCase, - $ZodCodec: () => $ZodCodec, - $ZodCustom: () => $ZodCustom, - $ZodCustomStringFormat: () => $ZodCustomStringFormat, - $ZodDate: () => $ZodDate, - $ZodDefault: () => $ZodDefault, - $ZodDiscriminatedUnion: () => $ZodDiscriminatedUnion, - $ZodE164: () => $ZodE164, - $ZodEmail: () => $ZodEmail, - $ZodEmoji: () => $ZodEmoji, - $ZodEncodeError: () => $ZodEncodeError, - $ZodEnum: () => $ZodEnum, - $ZodError: () => $ZodError, - $ZodExactOptional: () => $ZodExactOptional, - $ZodFile: () => $ZodFile, - $ZodFunction: () => $ZodFunction, - $ZodGUID: () => $ZodGUID, - $ZodIPv4: () => $ZodIPv4, - $ZodIPv6: () => $ZodIPv6, - $ZodISODate: () => $ZodISODate, - $ZodISODateTime: () => $ZodISODateTime, - $ZodISODuration: () => $ZodISODuration, - $ZodISOTime: () => $ZodISOTime, - $ZodIntersection: () => $ZodIntersection, - $ZodJWT: () => $ZodJWT, - $ZodKSUID: () => $ZodKSUID, - $ZodLazy: () => $ZodLazy, - $ZodLiteral: () => $ZodLiteral, - $ZodMAC: () => $ZodMAC, - $ZodMap: () => $ZodMap, - $ZodNaN: () => $ZodNaN, - $ZodNanoID: () => $ZodNanoID, - $ZodNever: () => $ZodNever, - $ZodNonOptional: () => $ZodNonOptional, - $ZodNull: () => $ZodNull, - $ZodNullable: () => $ZodNullable, - $ZodNumber: () => $ZodNumber, - $ZodNumberFormat: () => $ZodNumberFormat, - $ZodObject: () => $ZodObject, - $ZodObjectJIT: () => $ZodObjectJIT, - $ZodOptional: () => $ZodOptional, - $ZodPipe: () => $ZodPipe, - $ZodPrefault: () => $ZodPrefault, - $ZodPromise: () => $ZodPromise, - $ZodReadonly: () => $ZodReadonly, - $ZodRealError: () => $ZodRealError, - $ZodRecord: () => $ZodRecord, - $ZodRegistry: () => $ZodRegistry, - $ZodSet: () => $ZodSet, - $ZodString: () => $ZodString, - $ZodStringFormat: () => $ZodStringFormat, - $ZodSuccess: () => $ZodSuccess, - $ZodSymbol: () => $ZodSymbol, - $ZodTemplateLiteral: () => $ZodTemplateLiteral, - $ZodTransform: () => $ZodTransform, - $ZodTuple: () => $ZodTuple, - $ZodType: () => $ZodType, - $ZodULID: () => $ZodULID, - $ZodURL: () => $ZodURL, - $ZodUUID: () => $ZodUUID, - $ZodUndefined: () => $ZodUndefined, - $ZodUnion: () => $ZodUnion, - $ZodUnknown: () => $ZodUnknown, - $ZodVoid: () => $ZodVoid, - $ZodXID: () => $ZodXID, - $ZodXor: () => $ZodXor, - $brand: () => $brand, - $constructor: () => $constructor, - $input: () => $input, - $output: () => $output, - Doc: () => Doc, - JSONSchema: () => json_schema_exports, - JSONSchemaGenerator: () => JSONSchemaGenerator, - NEVER: () => NEVER, - TimePrecision: () => TimePrecision, - _any: () => _any, - _array: () => _array, - _base64: () => _base64, - _base64url: () => _base64url, - _bigint: () => _bigint, - _boolean: () => _boolean, - _catch: () => _catch, - _check: () => _check, - _cidrv4: () => _cidrv4, - _cidrv6: () => _cidrv6, - _coercedBigint: () => _coercedBigint, - _coercedBoolean: () => _coercedBoolean, - _coercedDate: () => _coercedDate, - _coercedNumber: () => _coercedNumber, - _coercedString: () => _coercedString, - _cuid: () => _cuid, - _cuid2: () => _cuid2, - _custom: () => _custom, - _date: () => _date, - _decode: () => _decode, - _decodeAsync: () => _decodeAsync, - _default: () => _default, - _discriminatedUnion: () => _discriminatedUnion, - _e164: () => _e164, - _email: () => _email, - _emoji: () => _emoji2, - _encode: () => _encode, - _encodeAsync: () => _encodeAsync, - _endsWith: () => _endsWith, - _enum: () => _enum, - _file: () => _file, - _float32: () => _float32, - _float64: () => _float64, - _gt: () => _gt, - _gte: () => _gte, - _guid: () => _guid, - _includes: () => _includes, - _int: () => _int, - _int32: () => _int32, - _int64: () => _int64, - _intersection: () => _intersection, - _ipv4: () => _ipv4, - _ipv6: () => _ipv6, - _isoDate: () => _isoDate, - _isoDateTime: () => _isoDateTime, - _isoDuration: () => _isoDuration, - _isoTime: () => _isoTime, - _jwt: () => _jwt, - _ksuid: () => _ksuid, - _lazy: () => _lazy, - _length: () => _length, - _literal: () => _literal, - _lowercase: () => _lowercase, - _lt: () => _lt, - _lte: () => _lte, - _mac: () => _mac, - _map: () => _map, - _max: () => _lte, - _maxLength: () => _maxLength, - _maxSize: () => _maxSize, - _mime: () => _mime, - _min: () => _gte, - _minLength: () => _minLength, - _minSize: () => _minSize, - _multipleOf: () => _multipleOf, - _nan: () => _nan, - _nanoid: () => _nanoid, - _nativeEnum: () => _nativeEnum, - _negative: () => _negative, - _never: () => _never, - _nonnegative: () => _nonnegative, - _nonoptional: () => _nonoptional, - _nonpositive: () => _nonpositive, - _normalize: () => _normalize, - _null: () => _null2, - _nullable: () => _nullable, - _number: () => _number, - _optional: () => _optional, - _overwrite: () => _overwrite, - _parse: () => _parse, - _parseAsync: () => _parseAsync, - _pipe: () => _pipe, - _positive: () => _positive, - _promise: () => _promise, - _property: () => _property, - _readonly: () => _readonly, - _record: () => _record, - _refine: () => _refine, - _regex: () => _regex, - _safeDecode: () => _safeDecode, - _safeDecodeAsync: () => _safeDecodeAsync, - _safeEncode: () => _safeEncode, - _safeEncodeAsync: () => _safeEncodeAsync, - _safeParse: () => _safeParse, - _safeParseAsync: () => _safeParseAsync, - _set: () => _set, - _size: () => _size, - _slugify: () => _slugify, - _startsWith: () => _startsWith, - _string: () => _string, - _stringFormat: () => _stringFormat, - _stringbool: () => _stringbool, - _success: () => _success, - _superRefine: () => _superRefine, - _symbol: () => _symbol, - _templateLiteral: () => _templateLiteral, - _toLowerCase: () => _toLowerCase, - _toUpperCase: () => _toUpperCase, - _transform: () => _transform, - _trim: () => _trim, - _tuple: () => _tuple, - _uint32: () => _uint32, - _uint64: () => _uint64, - _ulid: () => _ulid, - _undefined: () => _undefined2, - _union: () => _union, - _unknown: () => _unknown, - _uppercase: () => _uppercase, - _url: () => _url, - _uuid: () => _uuid, - _uuidv4: () => _uuidv4, - _uuidv6: () => _uuidv6, - _uuidv7: () => _uuidv7, - _void: () => _void, - _xid: () => _xid, - _xor: () => _xor, - clone: () => clone, - config: () => config, - createStandardJSONSchemaMethod: () => createStandardJSONSchemaMethod, - createToJSONSchemaMethod: () => createToJSONSchemaMethod, - decode: () => decode, - decodeAsync: () => decodeAsync, - describe: () => describe, - encode: () => encode, - encodeAsync: () => encodeAsync, - extractDefs: () => extractDefs, - finalize: () => finalize, - flattenError: () => flattenError, - formatError: () => formatError, - globalConfig: () => globalConfig, - globalRegistry: () => globalRegistry, - initializeContext: () => initializeContext, - isValidBase64: () => isValidBase64, - isValidBase64URL: () => isValidBase64URL, - isValidJWT: () => isValidJWT, - locales: () => locales_exports, - meta: () => meta, - parse: () => parse, - parseAsync: () => parseAsync, - prettifyError: () => prettifyError, - process: () => process2, - regexes: () => regexes_exports, - registry: () => registry, - safeDecode: () => safeDecode, - safeDecodeAsync: () => safeDecodeAsync, - safeEncode: () => safeEncode, - safeEncodeAsync: () => safeEncodeAsync, - safeParse: () => safeParse, - safeParseAsync: () => safeParseAsync, - toDotPath: () => toDotPath, - toJSONSchema: () => toJSONSchema, - treeifyError: () => treeifyError, - util: () => util_exports, - version: () => version -}); - -// node_modules/zod/v4/core/core.js -var NEVER = Object.freeze({ - status: "aborted" -}); -// @__NO_SIDE_EFFECTS__ -function $constructor(name, initializer5, params) { - function init(inst, def) { - if (!inst._zod) { - Object.defineProperty(inst, "_zod", { - value: { - def, - constr: _, - traits: /* @__PURE__ */ new Set() - }, - enumerable: false - }); - } - if (inst._zod.traits.has(name)) { - return; - } - inst._zod.traits.add(name); - initializer5(inst, def); - const proto = _.prototype; - const keys = Object.keys(proto); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - if (!(k in inst)) { - inst[k] = proto[k].bind(inst); - } - } - } - const Parent = params?.Parent ?? Object; - class Definition extends Parent { - } - Object.defineProperty(Definition, "name", { value: name }); - function _(def) { - var _a3; - const inst = params?.Parent ? new Definition() : this; - init(inst, def); - (_a3 = inst._zod).deferred ?? (_a3.deferred = []); - for (const fn of inst._zod.deferred) { - fn(); - } - return inst; - } - Object.defineProperty(_, "init", { value: init }); - Object.defineProperty(_, Symbol.hasInstance, { - value: (inst) => { - if (params?.Parent && inst instanceof params.Parent) - return true; - return inst?._zod?.traits?.has(name); - } - }); - Object.defineProperty(_, "name", { value: name }); - return _; -} -var $brand = /* @__PURE__ */ Symbol("zod_brand"); -var $ZodAsyncError = class extends Error { - constructor() { - super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`); - } -}; -var $ZodEncodeError = class extends Error { - constructor(name) { - super(`Encountered unidirectional transform during encode: ${name}`); - this.name = "ZodEncodeError"; - } -}; -var globalConfig = {}; -function config(newConfig) { - if (newConfig) - Object.assign(globalConfig, newConfig); - return globalConfig; -} - -// node_modules/zod/v4/core/util.js -var util_exports = {}; -__export(util_exports, { - BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES, - Class: () => Class, - NUMBER_FORMAT_RANGES: () => NUMBER_FORMAT_RANGES, - aborted: () => aborted, - allowsEval: () => allowsEval, - assert: () => assert, - assertEqual: () => assertEqual, - assertIs: () => assertIs, - assertNever: () => assertNever, - assertNotEqual: () => assertNotEqual, - assignProp: () => assignProp, - base64ToUint8Array: () => base64ToUint8Array, - base64urlToUint8Array: () => base64urlToUint8Array, - cached: () => cached, - captureStackTrace: () => captureStackTrace, - cleanEnum: () => cleanEnum, - cleanRegex: () => cleanRegex, - clone: () => clone, - cloneDef: () => cloneDef, - createTransparentProxy: () => createTransparentProxy, - defineLazy: () => defineLazy, - esc: () => esc, - escapeRegex: () => escapeRegex, - extend: () => extend, - finalizeIssue: () => finalizeIssue, - floatSafeRemainder: () => floatSafeRemainder, - getElementAtPath: () => getElementAtPath, - getEnumValues: () => getEnumValues, - getLengthableOrigin: () => getLengthableOrigin, - getParsedType: () => getParsedType, - getSizableOrigin: () => getSizableOrigin, - hexToUint8Array: () => hexToUint8Array, - isObject: () => isObject, - isPlainObject: () => isPlainObject, - issue: () => issue, - joinValues: () => joinValues, - jsonStringifyReplacer: () => jsonStringifyReplacer, - merge: () => merge, - mergeDefs: () => mergeDefs, - normalizeParams: () => normalizeParams, - nullish: () => nullish, - numKeys: () => numKeys, - objectClone: () => objectClone, - omit: () => omit, - optionalKeys: () => optionalKeys, - parsedType: () => parsedType, - partial: () => partial, - pick: () => pick, - prefixIssues: () => prefixIssues, - primitiveTypes: () => primitiveTypes, - promiseAllObject: () => promiseAllObject, - propertyKeyTypes: () => propertyKeyTypes, - randomString: () => randomString, - required: () => required, - safeExtend: () => safeExtend, - shallowClone: () => shallowClone, - slugify: () => slugify, - stringifyPrimitive: () => stringifyPrimitive, - uint8ArrayToBase64: () => uint8ArrayToBase64, - uint8ArrayToBase64url: () => uint8ArrayToBase64url, - uint8ArrayToHex: () => uint8ArrayToHex, - unwrapMessage: () => unwrapMessage -}); -function assertEqual(val) { - return val; -} -function assertNotEqual(val) { - return val; -} -function assertIs(_arg) { -} -function assertNever(_x) { - throw new Error("Unexpected value in exhaustive check"); -} -function assert(_) { -} -function getEnumValues(entries) { - const numericValues = Object.values(entries).filter((v) => typeof v === "number"); - const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); - return values; -} -function joinValues(array3, separator = "|") { - return array3.map((val) => stringifyPrimitive(val)).join(separator); -} -function jsonStringifyReplacer(_, value) { - if (typeof value === "bigint") - return value.toString(); - return value; -} -function cached(getter) { - const set3 = false; - return { - get value() { - if (!set3) { - const value = getter(); - Object.defineProperty(this, "value", { value }); - return value; - } - throw new Error("cached value already set"); - } - }; -} -function nullish(input) { - return input === null || input === void 0; -} -function cleanRegex(source) { - const start = source.startsWith("^") ? 1 : 0; - const end = source.endsWith("$") ? source.length - 1 : source.length; - return source.slice(start, end); -} -function floatSafeRemainder(val, step) { - const valDecCount = (val.toString().split(".")[1] || "").length; - const stepString = step.toString(); - let stepDecCount = (stepString.split(".")[1] || "").length; - if (stepDecCount === 0 && /\d?e-\d?/.test(stepString)) { - const match = stepString.match(/\d?e-(\d?)/); - if (match?.[1]) { - stepDecCount = Number.parseInt(match[1]); - } - } - const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; - const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); - const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); - return valInt % stepInt / 10 ** decCount; -} -var EVALUATING = /* @__PURE__ */ Symbol("evaluating"); -function defineLazy(object3, key, getter) { - let value = void 0; - Object.defineProperty(object3, key, { - get() { - if (value === EVALUATING) { - return void 0; - } - if (value === void 0) { - value = EVALUATING; - value = getter(); - } - return value; - }, - set(v) { - Object.defineProperty(object3, key, { - value: v - // configurable: true, - }); - }, - configurable: true - }); -} -function objectClone(obj) { - return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); -} -function assignProp(target, prop, value) { - Object.defineProperty(target, prop, { - value, - writable: true, - enumerable: true, - configurable: true - }); -} -function mergeDefs(...defs) { - const mergedDescriptors = {}; - for (const def of defs) { - const descriptors = Object.getOwnPropertyDescriptors(def); - Object.assign(mergedDescriptors, descriptors); - } - return Object.defineProperties({}, mergedDescriptors); -} -function cloneDef(schema) { - return mergeDefs(schema._zod.def); -} -function getElementAtPath(obj, path) { - if (!path) - return obj; - return path.reduce((acc, key) => acc?.[key], obj); -} -function promiseAllObject(promisesObj) { - const keys = Object.keys(promisesObj); - const promises = keys.map((key) => promisesObj[key]); - return Promise.all(promises).then((results) => { - const resolvedObj = {}; - for (let i = 0; i < keys.length; i++) { - resolvedObj[keys[i]] = results[i]; - } - return resolvedObj; - }); -} -function randomString(length = 10) { - const chars = "abcdefghijklmnopqrstuvwxyz"; - let str = ""; - for (let i = 0; i < length; i++) { - str += chars[Math.floor(Math.random() * chars.length)]; - } - return str; -} -function esc(str) { - return JSON.stringify(str); -} -function slugify(input) { - return input.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, ""); -} -var captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { -}; -function isObject(data) { - return typeof data === "object" && data !== null && !Array.isArray(data); -} -var allowsEval = cached(() => { - if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) { - return false; - } - try { - const F = Function; - new F(""); - return true; - } catch (_) { - return false; - } -}); -function isPlainObject(o) { - if (isObject(o) === false) - return false; - const ctor = o.constructor; - if (ctor === void 0) - return true; - if (typeof ctor !== "function") - return true; - const prot = ctor.prototype; - if (isObject(prot) === false) - return false; - if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) { - return false; - } - return true; -} -function shallowClone(o) { - if (isPlainObject(o)) - return { ...o }; - if (Array.isArray(o)) - return [...o]; - return o; -} -function numKeys(data) { - let keyCount = 0; - for (const key in data) { - if (Object.prototype.hasOwnProperty.call(data, key)) { - keyCount++; - } - } - return keyCount; -} -var getParsedType = (data) => { - const t = typeof data; - switch (t) { - case "undefined": - return "undefined"; - case "string": - return "string"; - case "number": - return Number.isNaN(data) ? "nan" : "number"; - case "boolean": - return "boolean"; - case "function": - return "function"; - case "bigint": - return "bigint"; - case "symbol": - return "symbol"; - case "object": - if (Array.isArray(data)) { - return "array"; - } - if (data === null) { - return "null"; - } - if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { - return "promise"; - } - if (typeof Map !== "undefined" && data instanceof Map) { - return "map"; - } - if (typeof Set !== "undefined" && data instanceof Set) { - return "set"; - } - if (typeof Date !== "undefined" && data instanceof Date) { - return "date"; - } - if (typeof File !== "undefined" && data instanceof File) { - return "file"; - } - return "object"; - default: - throw new Error(`Unknown data type: ${t}`); - } -}; -var propertyKeyTypes = /* @__PURE__ */ new Set(["string", "number", "symbol"]); -var primitiveTypes = /* @__PURE__ */ new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]); -function escapeRegex(str) { - return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); -} -function clone(inst, def, params) { - const cl = new inst._zod.constr(def ?? inst._zod.def); - if (!def || params?.parent) - cl._zod.parent = inst; - return cl; -} -function normalizeParams(_params) { - const params = _params; - if (!params) - return {}; - if (typeof params === "string") - return { error: () => params }; - if (params?.message !== void 0) { - if (params?.error !== void 0) - throw new Error("Cannot specify both `message` and `error` params"); - params.error = params.message; - } - delete params.message; - if (typeof params.error === "string") - return { ...params, error: () => params.error }; - return params; -} -function createTransparentProxy(getter) { - let target; - return new Proxy({}, { - get(_, prop, receiver) { - target ?? (target = getter()); - return Reflect.get(target, prop, receiver); - }, - set(_, prop, value, receiver) { - target ?? (target = getter()); - return Reflect.set(target, prop, value, receiver); - }, - has(_, prop) { - target ?? (target = getter()); - return Reflect.has(target, prop); - }, - deleteProperty(_, prop) { - target ?? (target = getter()); - return Reflect.deleteProperty(target, prop); - }, - ownKeys(_) { - target ?? (target = getter()); - return Reflect.ownKeys(target); - }, - getOwnPropertyDescriptor(_, prop) { - target ?? (target = getter()); - return Reflect.getOwnPropertyDescriptor(target, prop); - }, - defineProperty(_, prop, descriptor) { - target ?? (target = getter()); - return Reflect.defineProperty(target, prop, descriptor); - } - }); -} -function stringifyPrimitive(value) { - if (typeof value === "bigint") - return value.toString() + "n"; - if (typeof value === "string") - return `"${value}"`; - return `${value}`; -} -function optionalKeys(shape) { - return Object.keys(shape).filter((k) => { - return shape[k]._zod.optin === "optional" && shape[k]._zod.optout === "optional"; - }); -} -var NUMBER_FORMAT_RANGES = { - safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], - int32: [-2147483648, 2147483647], - uint32: [0, 4294967295], - float32: [-34028234663852886e22, 34028234663852886e22], - float64: [-Number.MAX_VALUE, Number.MAX_VALUE] -}; -var BIGINT_FORMAT_RANGES = { - int64: [/* @__PURE__ */ BigInt("-9223372036854775808"), /* @__PURE__ */ BigInt("9223372036854775807")], - uint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt("18446744073709551615")] -}; -function pick(schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".pick() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs(schema._zod.def, { - get shape() { - const newShape = {}; - for (const key in mask) { - if (!(key in currDef.shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - newShape[key] = currDef.shape[key]; - } - assignProp(this, "shape", newShape); - return newShape; - }, - checks: [] - }); - return clone(schema, def); -} -function omit(schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".omit() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs(schema._zod.def, { - get shape() { - const newShape = { ...schema._zod.def.shape }; - for (const key in mask) { - if (!(key in currDef.shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - delete newShape[key]; - } - assignProp(this, "shape", newShape); - return newShape; - }, - checks: [] - }); - return clone(schema, def); -} -function extend(schema, shape) { - if (!isPlainObject(shape)) { - throw new Error("Invalid input to extend: expected a plain object"); - } - const checks = schema._zod.def.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - const existingShape = schema._zod.def.shape; - for (const key in shape) { - if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) { - throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead."); - } - } - } - const def = mergeDefs(schema._zod.def, { - get shape() { - const _shape = { ...schema._zod.def.shape, ...shape }; - assignProp(this, "shape", _shape); - return _shape; - } - }); - return clone(schema, def); -} -function safeExtend(schema, shape) { - if (!isPlainObject(shape)) { - throw new Error("Invalid input to safeExtend: expected a plain object"); - } - const def = mergeDefs(schema._zod.def, { - get shape() { - const _shape = { ...schema._zod.def.shape, ...shape }; - assignProp(this, "shape", _shape); - return _shape; - } - }); - return clone(schema, def); -} -function merge(a, b) { - const def = mergeDefs(a._zod.def, { - get shape() { - const _shape = { ...a._zod.def.shape, ...b._zod.def.shape }; - assignProp(this, "shape", _shape); - return _shape; - }, - get catchall() { - return b._zod.def.catchall; - }, - checks: [] - // delete existing checks - }); - return clone(a, def); -} -function partial(Class3, schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".partial() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs(schema._zod.def, { - get shape() { - const oldShape = schema._zod.def.shape; - const shape = { ...oldShape }; - if (mask) { - for (const key in mask) { - if (!(key in oldShape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - shape[key] = Class3 ? new Class3({ - type: "optional", - innerType: oldShape[key] - }) : oldShape[key]; - } - } else { - for (const key in oldShape) { - shape[key] = Class3 ? new Class3({ - type: "optional", - innerType: oldShape[key] - }) : oldShape[key]; - } - } - assignProp(this, "shape", shape); - return shape; - }, - checks: [] - }); - return clone(schema, def); -} -function required(Class3, schema, mask) { - const def = mergeDefs(schema._zod.def, { - get shape() { - const oldShape = schema._zod.def.shape; - const shape = { ...oldShape }; - if (mask) { - for (const key in mask) { - if (!(key in shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - shape[key] = new Class3({ - type: "nonoptional", - innerType: oldShape[key] - }); - } - } else { - for (const key in oldShape) { - shape[key] = new Class3({ - type: "nonoptional", - innerType: oldShape[key] - }); - } - } - assignProp(this, "shape", shape); - return shape; - } - }); - return clone(schema, def); -} -function aborted(x, startIndex = 0) { - if (x.aborted === true) - return true; - for (let i = startIndex; i < x.issues.length; i++) { - if (x.issues[i]?.continue !== true) { - return true; - } - } - return false; -} -function prefixIssues(path, issues) { - return issues.map((iss) => { - var _a3; - (_a3 = iss).path ?? (_a3.path = []); - iss.path.unshift(path); - return iss; - }); -} -function unwrapMessage(message) { - return typeof message === "string" ? message : message?.message; -} -function finalizeIssue(iss, ctx, config3) { - const full = { ...iss, path: iss.path ?? [] }; - if (!iss.message) { - const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config3.customError?.(iss)) ?? unwrapMessage(config3.localeError?.(iss)) ?? "Invalid input"; - full.message = message; - } - delete full.inst; - delete full.continue; - if (!ctx?.reportInput) { - delete full.input; - } - return full; -} -function getSizableOrigin(input) { - if (input instanceof Set) - return "set"; - if (input instanceof Map) - return "map"; - if (input instanceof File) - return "file"; - return "unknown"; -} -function getLengthableOrigin(input) { - if (Array.isArray(input)) - return "array"; - if (typeof input === "string") - return "string"; - return "unknown"; -} -function parsedType(data) { - const t = typeof data; - switch (t) { - case "number": { - return Number.isNaN(data) ? "nan" : "number"; - } - case "object": { - if (data === null) { - return "null"; - } - if (Array.isArray(data)) { - return "array"; - } - const obj = data; - if (obj && Object.getPrototypeOf(obj) !== Object.prototype && "constructor" in obj && obj.constructor) { - return obj.constructor.name; - } - } - } - return t; -} -function issue(...args) { - const [iss, input, inst] = args; - if (typeof iss === "string") { - return { - message: iss, - code: "custom", - input, - inst - }; - } - return { ...iss }; -} -function cleanEnum(obj) { - return Object.entries(obj).filter(([k, _]) => { - return Number.isNaN(Number.parseInt(k, 10)); - }).map((el) => el[1]); -} -function base64ToUint8Array(base645) { - const binaryString = atob(base645); - const bytes = new Uint8Array(binaryString.length); - for (let i = 0; i < binaryString.length; i++) { - bytes[i] = binaryString.charCodeAt(i); - } - return bytes; -} -function uint8ArrayToBase64(bytes) { - let binaryString = ""; - for (let i = 0; i < bytes.length; i++) { - binaryString += String.fromCharCode(bytes[i]); - } - return btoa(binaryString); -} -function base64urlToUint8Array(base64url5) { - const base645 = base64url5.replace(/-/g, "+").replace(/_/g, "/"); - const padding = "=".repeat((4 - base645.length % 4) % 4); - return base64ToUint8Array(base645 + padding); -} -function uint8ArrayToBase64url(bytes) { - return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -function hexToUint8Array(hex5) { - const cleanHex = hex5.replace(/^0x/, ""); - if (cleanHex.length % 2 !== 0) { - throw new Error("Invalid hex string length"); - } - const bytes = new Uint8Array(cleanHex.length / 2); - for (let i = 0; i < cleanHex.length; i += 2) { - bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16); - } - return bytes; -} -function uint8ArrayToHex(bytes) { - return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join(""); -} -var Class = class { - constructor(..._args) { - } -}; - -// node_modules/zod/v4/core/errors.js -var initializer = (inst, def) => { - inst.name = "$ZodError"; - Object.defineProperty(inst, "_zod", { - value: inst._zod, - enumerable: false - }); - Object.defineProperty(inst, "issues", { - value: def, - enumerable: false - }); - inst.message = JSON.stringify(def, jsonStringifyReplacer, 2); - Object.defineProperty(inst, "toString", { - value: () => inst.message, - enumerable: false - }); -}; -var $ZodError = $constructor("$ZodError", initializer); -var $ZodRealError = $constructor("$ZodError", initializer, { Parent: Error }); -function flattenError(error95, mapper = (issue3) => issue3.message) { - const fieldErrors = {}; - const formErrors = []; - for (const sub of error95.issues) { - if (sub.path.length > 0) { - fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; - fieldErrors[sub.path[0]].push(mapper(sub)); - } else { - formErrors.push(mapper(sub)); - } - } - return { formErrors, fieldErrors }; -} -function formatError(error95, mapper = (issue3) => issue3.message) { - const fieldErrors = { _errors: [] }; - const processError = (error96) => { - for (const issue3 of error96.issues) { - if (issue3.code === "invalid_union" && issue3.errors.length) { - issue3.errors.map((issues) => processError({ issues })); - } else if (issue3.code === "invalid_key") { - processError({ issues: issue3.issues }); - } else if (issue3.code === "invalid_element") { - processError({ issues: issue3.issues }); - } else if (issue3.path.length === 0) { - fieldErrors._errors.push(mapper(issue3)); - } else { - let curr = fieldErrors; - let i = 0; - while (i < issue3.path.length) { - const el = issue3.path[i]; - const terminal = i === issue3.path.length - 1; - if (!terminal) { - curr[el] = curr[el] || { _errors: [] }; - } else { - curr[el] = curr[el] || { _errors: [] }; - curr[el]._errors.push(mapper(issue3)); - } - curr = curr[el]; - i++; - } - } - } - }; - processError(error95); - return fieldErrors; -} -function treeifyError(error95, mapper = (issue3) => issue3.message) { - const result = { errors: [] }; - const processError = (error96, path = []) => { - var _a3, _b; - for (const issue3 of error96.issues) { - if (issue3.code === "invalid_union" && issue3.errors.length) { - issue3.errors.map((issues) => processError({ issues }, issue3.path)); - } else if (issue3.code === "invalid_key") { - processError({ issues: issue3.issues }, issue3.path); - } else if (issue3.code === "invalid_element") { - processError({ issues: issue3.issues }, issue3.path); - } else { - const fullpath = [...path, ...issue3.path]; - if (fullpath.length === 0) { - result.errors.push(mapper(issue3)); - continue; - } - let curr = result; - let i = 0; - while (i < fullpath.length) { - const el = fullpath[i]; - const terminal = i === fullpath.length - 1; - if (typeof el === "string") { - curr.properties ?? (curr.properties = {}); - (_a3 = curr.properties)[el] ?? (_a3[el] = { errors: [] }); - curr = curr.properties[el]; - } else { - curr.items ?? (curr.items = []); - (_b = curr.items)[el] ?? (_b[el] = { errors: [] }); - curr = curr.items[el]; - } - if (terminal) { - curr.errors.push(mapper(issue3)); - } - i++; - } - } - } - }; - processError(error95); - return result; -} -function toDotPath(_path) { - const segs = []; - const path = _path.map((seg) => typeof seg === "object" ? seg.key : seg); - for (const seg of path) { - if (typeof seg === "number") - segs.push(`[${seg}]`); - else if (typeof seg === "symbol") - segs.push(`[${JSON.stringify(String(seg))}]`); - else if (/[^\w$]/.test(seg)) - segs.push(`[${JSON.stringify(seg)}]`); - else { - if (segs.length) - segs.push("."); - segs.push(seg); - } - } - return segs.join(""); -} -function prettifyError(error95) { - const lines = []; - const issues = [...error95.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length); - for (const issue3 of issues) { - lines.push(`\u2716 ${issue3.message}`); - if (issue3.path?.length) - lines.push(` \u2192 at ${toDotPath(issue3.path)}`); - } - return lines.join("\n"); -} - -// node_modules/zod/v4/core/parse.js -var _parse = (_Err) => (schema, value, _ctx, _params) => { - const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; - const result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) { - throw new $ZodAsyncError(); - } - if (result.issues.length) { - const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); - captureStackTrace(e, _params?.callee); - throw e; - } - return result.value; -}; -var parse = /* @__PURE__ */ _parse($ZodRealError); -var _parseAsync = (_Err) => async (schema, value, _ctx, params) => { - const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; - let result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) - result = await result; - if (result.issues.length) { - const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); - captureStackTrace(e, params?.callee); - throw e; - } - return result.value; -}; -var parseAsync = /* @__PURE__ */ _parseAsync($ZodRealError); -var _safeParse = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; - const result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) { - throw new $ZodAsyncError(); - } - return result.issues.length ? { - success: false, - error: new (_Err ?? $ZodError)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) - } : { success: true, data: result.value }; -}; -var safeParse = /* @__PURE__ */ _safeParse($ZodRealError); -var _safeParseAsync = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; - let result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) - result = await result; - return result.issues.length ? { - success: false, - error: new _Err(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) - } : { success: true, data: result.value }; -}; -var safeParseAsync = /* @__PURE__ */ _safeParseAsync($ZodRealError); -var _encode = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _parse(_Err)(schema, value, ctx); -}; -var encode = /* @__PURE__ */ _encode($ZodRealError); -var _decode = (_Err) => (schema, value, _ctx) => { - return _parse(_Err)(schema, value, _ctx); -}; -var decode = /* @__PURE__ */ _decode($ZodRealError); -var _encodeAsync = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _parseAsync(_Err)(schema, value, ctx); -}; -var encodeAsync = /* @__PURE__ */ _encodeAsync($ZodRealError); -var _decodeAsync = (_Err) => async (schema, value, _ctx) => { - return _parseAsync(_Err)(schema, value, _ctx); -}; -var decodeAsync = /* @__PURE__ */ _decodeAsync($ZodRealError); -var _safeEncode = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _safeParse(_Err)(schema, value, ctx); -}; -var safeEncode = /* @__PURE__ */ _safeEncode($ZodRealError); -var _safeDecode = (_Err) => (schema, value, _ctx) => { - return _safeParse(_Err)(schema, value, _ctx); -}; -var safeDecode = /* @__PURE__ */ _safeDecode($ZodRealError); -var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _safeParseAsync(_Err)(schema, value, ctx); -}; -var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync($ZodRealError); -var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => { - return _safeParseAsync(_Err)(schema, value, _ctx); -}; -var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); - -// node_modules/zod/v4/core/regexes.js -var regexes_exports = {}; -__export(regexes_exports, { - base64: () => base64, - base64url: () => base64url, - bigint: () => bigint, - boolean: () => boolean, - browserEmail: () => browserEmail, - cidrv4: () => cidrv4, - cidrv6: () => cidrv6, - cuid: () => cuid, - cuid2: () => cuid2, - date: () => date, - datetime: () => datetime, - domain: () => domain, - duration: () => duration, - e164: () => e164, - email: () => email, - emoji: () => emoji, - extendedDuration: () => extendedDuration, - guid: () => guid, - hex: () => hex, - hostname: () => hostname, - html5Email: () => html5Email, - idnEmail: () => idnEmail, - integer: () => integer, - ipv4: () => ipv4, - ipv6: () => ipv6, - ksuid: () => ksuid, - lowercase: () => lowercase, - mac: () => mac, - md5_base64: () => md5_base64, - md5_base64url: () => md5_base64url, - md5_hex: () => md5_hex, - nanoid: () => nanoid, - null: () => _null, - number: () => number, - rfc5322Email: () => rfc5322Email, - sha1_base64: () => sha1_base64, - sha1_base64url: () => sha1_base64url, - sha1_hex: () => sha1_hex, - sha256_base64: () => sha256_base64, - sha256_base64url: () => sha256_base64url, - sha256_hex: () => sha256_hex, - sha384_base64: () => sha384_base64, - sha384_base64url: () => sha384_base64url, - sha384_hex: () => sha384_hex, - sha512_base64: () => sha512_base64, - sha512_base64url: () => sha512_base64url, - sha512_hex: () => sha512_hex, - string: () => string, - time: () => time, - ulid: () => ulid, - undefined: () => _undefined, - unicodeEmail: () => unicodeEmail, - uppercase: () => uppercase, - uuid: () => uuid, - uuid4: () => uuid4, - uuid6: () => uuid6, - uuid7: () => uuid7, - xid: () => xid -}); -var cuid = /^[cC][^\s-]{8,}$/; -var cuid2 = /^[0-9a-z]+$/; -var ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; -var xid = /^[0-9a-vA-V]{20}$/; -var ksuid = /^[A-Za-z0-9]{27}$/; -var nanoid = /^[a-zA-Z0-9_-]{21}$/; -var duration = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; -var extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; -var guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; -var uuid = (version3) => { - if (!version3) - return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/; - return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version3}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`); -}; -var uuid4 = /* @__PURE__ */ uuid(4); -var uuid6 = /* @__PURE__ */ uuid(6); -var uuid7 = /* @__PURE__ */ uuid(7); -var email = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; -var html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; -var rfc5322Email = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; -var unicodeEmail = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u; -var idnEmail = unicodeEmail; -var browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; -var _emoji = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; -function emoji() { - return new RegExp(_emoji, "u"); -} -var ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; -var ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; -var mac = (delimiter) => { - const escapedDelim = escapeRegex(delimiter ?? ":"); - return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`); -}; -var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; -var cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; -var base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; -var base64url = /^[A-Za-z0-9_-]*$/; -var hostname = /^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/; -var domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; -var e164 = /^\+[1-9]\d{6,14}$/; -var dateSource = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`; -var date = /* @__PURE__ */ new RegExp(`^${dateSource}$`); -function timeSource(args) { - const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`; - const regex = typeof args.precision === "number" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\d` : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`; - return regex; -} -function time(args) { - return new RegExp(`^${timeSource(args)}$`); -} -function datetime(args) { - const time5 = timeSource({ precision: args.precision }); - const opts = ["Z"]; - if (args.local) - opts.push(""); - if (args.offset) - opts.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`); - const timeRegex = `${time5}(?:${opts.join("|")})`; - return new RegExp(`^${dateSource}T(?:${timeRegex})$`); -} -var string = (params) => { - const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`; - return new RegExp(`^${regex}$`); -}; -var bigint = /^-?\d+n?$/; -var integer = /^-?\d+$/; -var number = /^-?\d+(?:\.\d+)?$/; -var boolean = /^(?:true|false)$/i; -var _null = /^null$/i; -var _undefined = /^undefined$/i; -var lowercase = /^[^A-Z]*$/; -var uppercase = /^[^a-z]*$/; -var hex = /^[0-9a-fA-F]*$/; -function fixedBase64(bodyLength, padding) { - return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`); -} -function fixedBase64url(length) { - return new RegExp(`^[A-Za-z0-9_-]{${length}}$`); -} -var md5_hex = /^[0-9a-fA-F]{32}$/; -var md5_base64 = /* @__PURE__ */ fixedBase64(22, "=="); -var md5_base64url = /* @__PURE__ */ fixedBase64url(22); -var sha1_hex = /^[0-9a-fA-F]{40}$/; -var sha1_base64 = /* @__PURE__ */ fixedBase64(27, "="); -var sha1_base64url = /* @__PURE__ */ fixedBase64url(27); -var sha256_hex = /^[0-9a-fA-F]{64}$/; -var sha256_base64 = /* @__PURE__ */ fixedBase64(43, "="); -var sha256_base64url = /* @__PURE__ */ fixedBase64url(43); -var sha384_hex = /^[0-9a-fA-F]{96}$/; -var sha384_base64 = /* @__PURE__ */ fixedBase64(64, ""); -var sha384_base64url = /* @__PURE__ */ fixedBase64url(64); -var sha512_hex = /^[0-9a-fA-F]{128}$/; -var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "=="); -var sha512_base64url = /* @__PURE__ */ fixedBase64url(86); - -// node_modules/zod/v4/core/checks.js -var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { - var _a3; - inst._zod ?? (inst._zod = {}); - inst._zod.def = def; - (_a3 = inst._zod).onattach ?? (_a3.onattach = []); -}); -var numericOriginMap = { - number: "number", - bigint: "bigint", - object: "date" -}; -var $ZodCheckLessThan = /* @__PURE__ */ $constructor("$ZodCheckLessThan", (inst, def) => { - $ZodCheck.init(inst, def); - const origin = numericOriginMap[typeof def.value]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY; - if (def.value < curr) { - if (def.inclusive) - bag.maximum = def.value; - else - bag.exclusiveMaximum = def.value; - } - }); - inst._zod.check = (payload) => { - if (def.inclusive ? payload.value <= def.value : payload.value < def.value) { - return; - } - payload.issues.push({ - origin, - code: "too_big", - maximum: typeof def.value === "object" ? def.value.getTime() : def.value, - input: payload.value, - inclusive: def.inclusive, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan", (inst, def) => { - $ZodCheck.init(inst, def); - const origin = numericOriginMap[typeof def.value]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY; - if (def.value > curr) { - if (def.inclusive) - bag.minimum = def.value; - else - bag.exclusiveMinimum = def.value; - } - }); - inst._zod.check = (payload) => { - if (def.inclusive ? payload.value >= def.value : payload.value > def.value) { - return; - } - payload.issues.push({ - origin, - code: "too_small", - minimum: typeof def.value === "object" ? def.value.getTime() : def.value, - input: payload.value, - inclusive: def.inclusive, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => { - $ZodCheck.init(inst, def); - inst._zod.onattach.push((inst2) => { - var _a3; - (_a3 = inst2._zod.bag).multipleOf ?? (_a3.multipleOf = def.value); - }); - inst._zod.check = (payload) => { - if (typeof payload.value !== typeof def.value) - throw new Error("Cannot mix number and bigint in multiple_of check."); - const isMultiple = typeof payload.value === "bigint" ? payload.value % def.value === BigInt(0) : floatSafeRemainder(payload.value, def.value) === 0; - if (isMultiple) - return; - payload.issues.push({ - origin: typeof payload.value, - code: "not_multiple_of", - divisor: def.value, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckNumberFormat = /* @__PURE__ */ $constructor("$ZodCheckNumberFormat", (inst, def) => { - $ZodCheck.init(inst, def); - def.format = def.format || "float64"; - const isInt = def.format?.includes("int"); - const origin = isInt ? "int" : "number"; - const [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - bag.minimum = minimum; - bag.maximum = maximum; - if (isInt) - bag.pattern = integer; - }); - inst._zod.check = (payload) => { - const input = payload.value; - if (isInt) { - if (!Number.isInteger(input)) { - payload.issues.push({ - expected: origin, - format: def.format, - code: "invalid_type", - continue: false, - input, - inst - }); - return; - } - if (!Number.isSafeInteger(input)) { - if (input > 0) { - payload.issues.push({ - input, - code: "too_big", - maximum: Number.MAX_SAFE_INTEGER, - note: "Integers must be within the safe integer range.", - inst, - origin, - inclusive: true, - continue: !def.abort - }); - } else { - payload.issues.push({ - input, - code: "too_small", - minimum: Number.MIN_SAFE_INTEGER, - note: "Integers must be within the safe integer range.", - inst, - origin, - inclusive: true, - continue: !def.abort - }); - } - return; - } - } - if (input < minimum) { - payload.issues.push({ - origin: "number", - input, - code: "too_small", - minimum, - inclusive: true, - inst, - continue: !def.abort - }); - } - if (input > maximum) { - payload.issues.push({ - origin: "number", - input, - code: "too_big", - maximum, - inclusive: true, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat", (inst, def) => { - $ZodCheck.init(inst, def); - const [minimum, maximum] = BIGINT_FORMAT_RANGES[def.format]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - bag.minimum = minimum; - bag.maximum = maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - if (input < minimum) { - payload.issues.push({ - origin: "bigint", - input, - code: "too_small", - minimum, - inclusive: true, - inst, - continue: !def.abort - }); - } - if (input > maximum) { - payload.issues.push({ - origin: "bigint", - input, - code: "too_big", - maximum, - inclusive: true, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; - if (def.maximum < curr) - inst2._zod.bag.maximum = def.maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size <= def.maximum) - return; - payload.issues.push({ - origin: getSizableOrigin(input), - code: "too_big", - maximum: def.maximum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; - if (def.minimum > curr) - inst2._zod.bag.minimum = def.minimum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size >= def.minimum) - return; - payload.issues.push({ - origin: getSizableOrigin(input), - code: "too_small", - minimum: def.minimum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.minimum = def.size; - bag.maximum = def.size; - bag.size = def.size; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size === def.size) - return; - const tooBig = size > def.size; - payload.issues.push({ - origin: getSizableOrigin(input), - ...tooBig ? { code: "too_big", maximum: def.size } : { code: "too_small", minimum: def.size }, - inclusive: true, - exact: true, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; - if (def.maximum < curr) - inst2._zod.bag.maximum = def.maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length <= def.maximum) - return; - const origin = getLengthableOrigin(input); - payload.issues.push({ - origin, - code: "too_big", - maximum: def.maximum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; - if (def.minimum > curr) - inst2._zod.bag.minimum = def.minimum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length >= def.minimum) - return; - const origin = getLengthableOrigin(input); - payload.issues.push({ - origin, - code: "too_small", - minimum: def.minimum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => { - var _a3; - $ZodCheck.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.minimum = def.length; - bag.maximum = def.length; - bag.length = def.length; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length === def.length) - return; - const origin = getLengthableOrigin(input); - const tooBig = length > def.length; - payload.issues.push({ - origin, - ...tooBig ? { code: "too_big", maximum: def.length } : { code: "too_small", minimum: def.length }, - inclusive: true, - exact: true, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => { - var _a3, _b; - $ZodCheck.init(inst, def); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - if (def.pattern) { - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(def.pattern); - } - }); - if (def.pattern) - (_a3 = inst._zod).check ?? (_a3.check = (payload) => { - def.pattern.lastIndex = 0; - if (def.pattern.test(payload.value)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: def.format, - input: payload.value, - ...def.pattern ? { pattern: def.pattern.toString() } : {}, - inst, - continue: !def.abort - }); - }); - else - (_b = inst._zod).check ?? (_b.check = () => { - }); -}); -var $ZodCheckRegex = /* @__PURE__ */ $constructor("$ZodCheckRegex", (inst, def) => { - $ZodCheckStringFormat.init(inst, def); - inst._zod.check = (payload) => { - def.pattern.lastIndex = 0; - if (def.pattern.test(payload.value)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "regex", - input: payload.value, - pattern: def.pattern.toString(), - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckLowerCase = /* @__PURE__ */ $constructor("$ZodCheckLowerCase", (inst, def) => { - def.pattern ?? (def.pattern = lowercase); - $ZodCheckStringFormat.init(inst, def); -}); -var $ZodCheckUpperCase = /* @__PURE__ */ $constructor("$ZodCheckUpperCase", (inst, def) => { - def.pattern ?? (def.pattern = uppercase); - $ZodCheckStringFormat.init(inst, def); -}); -var $ZodCheckIncludes = /* @__PURE__ */ $constructor("$ZodCheckIncludes", (inst, def) => { - $ZodCheck.init(inst, def); - const escapedRegex = escapeRegex(def.includes); - const pattern = new RegExp(typeof def.position === "number" ? `^.{${def.position}}${escapedRegex}` : escapedRegex); - def.pattern = pattern; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.includes(def.includes, def.position)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "includes", - includes: def.includes, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckStartsWith = /* @__PURE__ */ $constructor("$ZodCheckStartsWith", (inst, def) => { - $ZodCheck.init(inst, def); - const pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`); - def.pattern ?? (def.pattern = pattern); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.startsWith(def.prefix)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "starts_with", - prefix: def.prefix, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckEndsWith = /* @__PURE__ */ $constructor("$ZodCheckEndsWith", (inst, def) => { - $ZodCheck.init(inst, def); - const pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`); - def.pattern ?? (def.pattern = pattern); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.endsWith(def.suffix)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "ends_with", - suffix: def.suffix, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -function handleCheckPropertyResult(result, payload, property) { - if (result.issues.length) { - payload.issues.push(...prefixIssues(property, result.issues)); - } -} -var $ZodCheckProperty = /* @__PURE__ */ $constructor("$ZodCheckProperty", (inst, def) => { - $ZodCheck.init(inst, def); - inst._zod.check = (payload) => { - const result = def.schema._zod.run({ - value: payload.value[def.property], - issues: [] - }, {}); - if (result instanceof Promise) { - return result.then((result2) => handleCheckPropertyResult(result2, payload, def.property)); - } - handleCheckPropertyResult(result, payload, def.property); - return; - }; -}); -var $ZodCheckMimeType = /* @__PURE__ */ $constructor("$ZodCheckMimeType", (inst, def) => { - $ZodCheck.init(inst, def); - const mimeSet = new Set(def.mime); - inst._zod.onattach.push((inst2) => { - inst2._zod.bag.mime = def.mime; - }); - inst._zod.check = (payload) => { - if (mimeSet.has(payload.value.type)) - return; - payload.issues.push({ - code: "invalid_value", - values: def.mime, - input: payload.value.type, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (inst, def) => { - $ZodCheck.init(inst, def); - inst._zod.check = (payload) => { - payload.value = def.tx(payload.value); - }; -}); - -// node_modules/zod/v4/core/doc.js -var Doc = class { - constructor(args = []) { - this.content = []; - this.indent = 0; - if (this) - this.args = args; - } - indented(fn) { - this.indent += 1; - fn(this); - this.indent -= 1; - } - write(arg) { - if (typeof arg === "function") { - arg(this, { execution: "sync" }); - arg(this, { execution: "async" }); - return; - } - const content = arg; - const lines = content.split("\n").filter((x) => x); - const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length)); - const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x); - for (const line of dedented) { - this.content.push(line); - } - } - compile() { - const F = Function; - const args = this?.args; - const content = this?.content ?? [``]; - const lines = [...content.map((x) => ` ${x}`)]; - return new F(...args, lines.join("\n")); - } -}; - -// node_modules/zod/v4/core/versions.js -var version = { - major: 4, - minor: 3, - patch: 6 -}; - -// node_modules/zod/v4/core/schemas.js -var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { - var _a3; - inst ?? (inst = {}); - inst._zod.def = def; - inst._zod.bag = inst._zod.bag || {}; - inst._zod.version = version; - const checks = [...inst._zod.def.checks ?? []]; - if (inst._zod.traits.has("$ZodCheck")) { - checks.unshift(inst); - } - for (const ch of checks) { - for (const fn of ch._zod.onattach) { - fn(inst); - } - } - if (checks.length === 0) { - (_a3 = inst._zod).deferred ?? (_a3.deferred = []); - inst._zod.deferred?.push(() => { - inst._zod.run = inst._zod.parse; - }); - } else { - const runChecks = (payload, checks2, ctx) => { - let isAborted = aborted(payload); - let asyncResult; - for (const ch of checks2) { - if (ch._zod.def.when) { - const shouldRun = ch._zod.def.when(payload); - if (!shouldRun) - continue; - } else if (isAborted) { - continue; - } - const currLen = payload.issues.length; - const _ = ch._zod.check(payload); - if (_ instanceof Promise && ctx?.async === false) { - throw new $ZodAsyncError(); - } - if (asyncResult || _ instanceof Promise) { - asyncResult = (asyncResult ?? Promise.resolve()).then(async () => { - await _; - const nextLen = payload.issues.length; - if (nextLen === currLen) - return; - if (!isAborted) - isAborted = aborted(payload, currLen); - }); - } else { - const nextLen = payload.issues.length; - if (nextLen === currLen) - continue; - if (!isAborted) - isAborted = aborted(payload, currLen); - } - } - if (asyncResult) { - return asyncResult.then(() => { - return payload; - }); - } - return payload; - }; - const handleCanaryResult = (canary, payload, ctx) => { - if (aborted(canary)) { - canary.aborted = true; - return canary; - } - const checkResult = runChecks(payload, checks, ctx); - if (checkResult instanceof Promise) { - if (ctx.async === false) - throw new $ZodAsyncError(); - return checkResult.then((checkResult2) => inst._zod.parse(checkResult2, ctx)); - } - return inst._zod.parse(checkResult, ctx); - }; - inst._zod.run = (payload, ctx) => { - if (ctx.skipChecks) { - return inst._zod.parse(payload, ctx); - } - if (ctx.direction === "backward") { - const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true }); - if (canary instanceof Promise) { - return canary.then((canary2) => { - return handleCanaryResult(canary2, payload, ctx); - }); - } - return handleCanaryResult(canary, payload, ctx); - } - const result = inst._zod.parse(payload, ctx); - if (result instanceof Promise) { - if (ctx.async === false) - throw new $ZodAsyncError(); - return result.then((result2) => runChecks(result2, checks, ctx)); - } - return runChecks(result, checks, ctx); - }; - } - defineLazy(inst, "~standard", () => ({ - validate: (value) => { - try { - const r = safeParse(inst, value); - return r.success ? { value: r.data } : { issues: r.error?.issues }; - } catch (_) { - return safeParseAsync(inst, value).then((r) => r.success ? { value: r.data } : { issues: r.error?.issues }); - } - }, - vendor: "zod", - version: 1 - })); -}); -var $ZodString = /* @__PURE__ */ $constructor("$ZodString", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = [...inst?._zod.bag?.patterns ?? []].pop() ?? string(inst._zod.bag); - inst._zod.parse = (payload, _) => { - if (def.coerce) - try { - payload.value = String(payload.value); - } catch (_2) { - } - if (typeof payload.value === "string") - return payload; - payload.issues.push({ - expected: "string", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodStringFormat = /* @__PURE__ */ $constructor("$ZodStringFormat", (inst, def) => { - $ZodCheckStringFormat.init(inst, def); - $ZodString.init(inst, def); -}); -var $ZodGUID = /* @__PURE__ */ $constructor("$ZodGUID", (inst, def) => { - def.pattern ?? (def.pattern = guid); - $ZodStringFormat.init(inst, def); -}); -var $ZodUUID = /* @__PURE__ */ $constructor("$ZodUUID", (inst, def) => { - if (def.version) { - const versionMap = { - v1: 1, - v2: 2, - v3: 3, - v4: 4, - v5: 5, - v6: 6, - v7: 7, - v8: 8 - }; - const v = versionMap[def.version]; - if (v === void 0) - throw new Error(`Invalid UUID version: "${def.version}"`); - def.pattern ?? (def.pattern = uuid(v)); - } else - def.pattern ?? (def.pattern = uuid()); - $ZodStringFormat.init(inst, def); -}); -var $ZodEmail = /* @__PURE__ */ $constructor("$ZodEmail", (inst, def) => { - def.pattern ?? (def.pattern = email); - $ZodStringFormat.init(inst, def); -}); -var $ZodURL = /* @__PURE__ */ $constructor("$ZodURL", (inst, def) => { - $ZodStringFormat.init(inst, def); - inst._zod.check = (payload) => { - try { - const trimmed = payload.value.trim(); - const url3 = new URL(trimmed); - if (def.hostname) { - def.hostname.lastIndex = 0; - if (!def.hostname.test(url3.hostname)) { - payload.issues.push({ - code: "invalid_format", - format: "url", - note: "Invalid hostname", - pattern: def.hostname.source, - input: payload.value, - inst, - continue: !def.abort - }); - } - } - if (def.protocol) { - def.protocol.lastIndex = 0; - if (!def.protocol.test(url3.protocol.endsWith(":") ? url3.protocol.slice(0, -1) : url3.protocol)) { - payload.issues.push({ - code: "invalid_format", - format: "url", - note: "Invalid protocol", - pattern: def.protocol.source, - input: payload.value, - inst, - continue: !def.abort - }); - } - } - if (def.normalize) { - payload.value = url3.href; - } else { - payload.value = trimmed; - } - return; - } catch (_) { - payload.issues.push({ - code: "invalid_format", - format: "url", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodEmoji = /* @__PURE__ */ $constructor("$ZodEmoji", (inst, def) => { - def.pattern ?? (def.pattern = emoji()); - $ZodStringFormat.init(inst, def); -}); -var $ZodNanoID = /* @__PURE__ */ $constructor("$ZodNanoID", (inst, def) => { - def.pattern ?? (def.pattern = nanoid); - $ZodStringFormat.init(inst, def); -}); -var $ZodCUID = /* @__PURE__ */ $constructor("$ZodCUID", (inst, def) => { - def.pattern ?? (def.pattern = cuid); - $ZodStringFormat.init(inst, def); -}); -var $ZodCUID2 = /* @__PURE__ */ $constructor("$ZodCUID2", (inst, def) => { - def.pattern ?? (def.pattern = cuid2); - $ZodStringFormat.init(inst, def); -}); -var $ZodULID = /* @__PURE__ */ $constructor("$ZodULID", (inst, def) => { - def.pattern ?? (def.pattern = ulid); - $ZodStringFormat.init(inst, def); -}); -var $ZodXID = /* @__PURE__ */ $constructor("$ZodXID", (inst, def) => { - def.pattern ?? (def.pattern = xid); - $ZodStringFormat.init(inst, def); -}); -var $ZodKSUID = /* @__PURE__ */ $constructor("$ZodKSUID", (inst, def) => { - def.pattern ?? (def.pattern = ksuid); - $ZodStringFormat.init(inst, def); -}); -var $ZodISODateTime = /* @__PURE__ */ $constructor("$ZodISODateTime", (inst, def) => { - def.pattern ?? (def.pattern = datetime(def)); - $ZodStringFormat.init(inst, def); -}); -var $ZodISODate = /* @__PURE__ */ $constructor("$ZodISODate", (inst, def) => { - def.pattern ?? (def.pattern = date); - $ZodStringFormat.init(inst, def); -}); -var $ZodISOTime = /* @__PURE__ */ $constructor("$ZodISOTime", (inst, def) => { - def.pattern ?? (def.pattern = time(def)); - $ZodStringFormat.init(inst, def); -}); -var $ZodISODuration = /* @__PURE__ */ $constructor("$ZodISODuration", (inst, def) => { - def.pattern ?? (def.pattern = duration); - $ZodStringFormat.init(inst, def); -}); -var $ZodIPv4 = /* @__PURE__ */ $constructor("$ZodIPv4", (inst, def) => { - def.pattern ?? (def.pattern = ipv4); - $ZodStringFormat.init(inst, def); - inst._zod.bag.format = `ipv4`; -}); -var $ZodIPv6 = /* @__PURE__ */ $constructor("$ZodIPv6", (inst, def) => { - def.pattern ?? (def.pattern = ipv6); - $ZodStringFormat.init(inst, def); - inst._zod.bag.format = `ipv6`; - inst._zod.check = (payload) => { - try { - new URL(`http://[${payload.value}]`); - } catch { - payload.issues.push({ - code: "invalid_format", - format: "ipv6", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodMAC = /* @__PURE__ */ $constructor("$ZodMAC", (inst, def) => { - def.pattern ?? (def.pattern = mac(def.delimiter)); - $ZodStringFormat.init(inst, def); - inst._zod.bag.format = `mac`; -}); -var $ZodCIDRv4 = /* @__PURE__ */ $constructor("$ZodCIDRv4", (inst, def) => { - def.pattern ?? (def.pattern = cidrv4); - $ZodStringFormat.init(inst, def); -}); -var $ZodCIDRv6 = /* @__PURE__ */ $constructor("$ZodCIDRv6", (inst, def) => { - def.pattern ?? (def.pattern = cidrv6); - $ZodStringFormat.init(inst, def); - inst._zod.check = (payload) => { - const parts = payload.value.split("/"); - try { - if (parts.length !== 2) - throw new Error(); - const [address, prefix] = parts; - if (!prefix) - throw new Error(); - const prefixNum = Number(prefix); - if (`${prefixNum}` !== prefix) - throw new Error(); - if (prefixNum < 0 || prefixNum > 128) - throw new Error(); - new URL(`http://[${address}]`); - } catch { - payload.issues.push({ - code: "invalid_format", - format: "cidrv6", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -function isValidBase64(data) { - if (data === "") - return true; - if (data.length % 4 !== 0) - return false; - try { - atob(data); - return true; - } catch { - return false; - } -} -var $ZodBase64 = /* @__PURE__ */ $constructor("$ZodBase64", (inst, def) => { - def.pattern ?? (def.pattern = base64); - $ZodStringFormat.init(inst, def); - inst._zod.bag.contentEncoding = "base64"; - inst._zod.check = (payload) => { - if (isValidBase64(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: "base64", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -function isValidBase64URL(data) { - if (!base64url.test(data)) - return false; - const base645 = data.replace(/[-_]/g, (c) => c === "-" ? "+" : "/"); - const padded = base645.padEnd(Math.ceil(base645.length / 4) * 4, "="); - return isValidBase64(padded); -} -var $ZodBase64URL = /* @__PURE__ */ $constructor("$ZodBase64URL", (inst, def) => { - def.pattern ?? (def.pattern = base64url); - $ZodStringFormat.init(inst, def); - inst._zod.bag.contentEncoding = "base64url"; - inst._zod.check = (payload) => { - if (isValidBase64URL(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: "base64url", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodE164 = /* @__PURE__ */ $constructor("$ZodE164", (inst, def) => { - def.pattern ?? (def.pattern = e164); - $ZodStringFormat.init(inst, def); -}); -function isValidJWT(token, algorithm = null) { - try { - const tokensParts = token.split("."); - if (tokensParts.length !== 3) - return false; - const [header] = tokensParts; - if (!header) - return false; - const parsedHeader = JSON.parse(atob(header)); - if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT") - return false; - if (!parsedHeader.alg) - return false; - if (algorithm && (!("alg" in parsedHeader) || parsedHeader.alg !== algorithm)) - return false; - return true; - } catch { - return false; - } -} -var $ZodJWT = /* @__PURE__ */ $constructor("$ZodJWT", (inst, def) => { - $ZodStringFormat.init(inst, def); - inst._zod.check = (payload) => { - if (isValidJWT(payload.value, def.alg)) - return; - payload.issues.push({ - code: "invalid_format", - format: "jwt", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCustomStringFormat = /* @__PURE__ */ $constructor("$ZodCustomStringFormat", (inst, def) => { - $ZodStringFormat.init(inst, def); - inst._zod.check = (payload) => { - if (def.fn(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: def.format, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodNumber = /* @__PURE__ */ $constructor("$ZodNumber", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = inst._zod.bag.pattern ?? number; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = Number(payload.value); - } catch (_) { - } - const input = payload.value; - if (typeof input === "number" && !Number.isNaN(input) && Number.isFinite(input)) { - return payload; - } - const received = typeof input === "number" ? Number.isNaN(input) ? "NaN" : !Number.isFinite(input) ? "Infinity" : void 0 : void 0; - payload.issues.push({ - expected: "number", - code: "invalid_type", - input, - inst, - ...received ? { received } : {} - }); - return payload; - }; -}); -var $ZodNumberFormat = /* @__PURE__ */ $constructor("$ZodNumberFormat", (inst, def) => { - $ZodCheckNumberFormat.init(inst, def); - $ZodNumber.init(inst, def); -}); -var $ZodBoolean = /* @__PURE__ */ $constructor("$ZodBoolean", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = boolean; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = Boolean(payload.value); - } catch (_) { - } - const input = payload.value; - if (typeof input === "boolean") - return payload; - payload.issues.push({ - expected: "boolean", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodBigInt = /* @__PURE__ */ $constructor("$ZodBigInt", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = bigint; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = BigInt(payload.value); - } catch (_) { - } - if (typeof payload.value === "bigint") - return payload; - payload.issues.push({ - expected: "bigint", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodBigIntFormat = /* @__PURE__ */ $constructor("$ZodBigIntFormat", (inst, def) => { - $ZodCheckBigIntFormat.init(inst, def); - $ZodBigInt.init(inst, def); -}); -var $ZodSymbol = /* @__PURE__ */ $constructor("$ZodSymbol", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "symbol") - return payload; - payload.issues.push({ - expected: "symbol", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodUndefined = /* @__PURE__ */ $constructor("$ZodUndefined", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = _undefined; - inst._zod.values = /* @__PURE__ */ new Set([void 0]); - inst._zod.optin = "optional"; - inst._zod.optout = "optional"; - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "undefined") - return payload; - payload.issues.push({ - expected: "undefined", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodNull = /* @__PURE__ */ $constructor("$ZodNull", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.pattern = _null; - inst._zod.values = /* @__PURE__ */ new Set([null]); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (input === null) - return payload; - payload.issues.push({ - expected: "null", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodAny = /* @__PURE__ */ $constructor("$ZodAny", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload) => payload; -}); -var $ZodUnknown = /* @__PURE__ */ $constructor("$ZodUnknown", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload) => payload; -}); -var $ZodNever = /* @__PURE__ */ $constructor("$ZodNever", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - payload.issues.push({ - expected: "never", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodVoid = /* @__PURE__ */ $constructor("$ZodVoid", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "undefined") - return payload; - payload.issues.push({ - expected: "void", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) { - try { - payload.value = new Date(payload.value); - } catch (_err) { - } - } - const input = payload.value; - const isDate = input instanceof Date; - const isValidDate = isDate && !Number.isNaN(input.getTime()); - if (isValidDate) - return payload; - payload.issues.push({ - expected: "date", - code: "invalid_type", - input, - ...isDate ? { received: "Invalid Date" } : {}, - inst - }); - return payload; - }; -}); -function handleArrayResult(result, final, index) { - if (result.issues.length) { - final.issues.push(...prefixIssues(index, result.issues)); - } - final.value[index] = result.value; -} -var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!Array.isArray(input)) { - payload.issues.push({ - expected: "array", - code: "invalid_type", - input, - inst - }); - return payload; - } - payload.value = Array(input.length); - const proms = []; - for (let i = 0; i < input.length; i++) { - const item = input[i]; - const result = def.element._zod.run({ - value: item, - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleArrayResult(result2, payload, i))); - } else { - handleArrayResult(result, payload, i); - } - } - if (proms.length) { - return Promise.all(proms).then(() => payload); - } - return payload; - }; -}); -function handlePropertyResult(result, final, key, input, isOptionalOut) { - if (result.issues.length) { - if (isOptionalOut && !(key in input)) { - return; - } - final.issues.push(...prefixIssues(key, result.issues)); - } - if (result.value === void 0) { - if (key in input) { - final.value[key] = void 0; - } - } else { - final.value[key] = result.value; - } -} -function normalizeDef(def) { - const keys = Object.keys(def.shape); - for (const k of keys) { - if (!def.shape?.[k]?._zod?.traits?.has("$ZodType")) { - throw new Error(`Invalid element at key "${k}": expected a Zod schema`); - } - } - const okeys = optionalKeys(def.shape); - return { - ...def, - keys, - keySet: new Set(keys), - numKeys: keys.length, - optionalKeys: new Set(okeys) - }; -} -function handleCatchall(proms, input, payload, ctx, def, inst) { - const unrecognized = []; - const keySet = def.keySet; - const _catchall = def.catchall._zod; - const t = _catchall.def.type; - const isOptionalOut = _catchall.optout === "optional"; - for (const key in input) { - if (keySet.has(key)) - continue; - if (t === "never") { - unrecognized.push(key); - continue; - } - const r = _catchall.run({ value: input[key], issues: [] }, ctx); - if (r instanceof Promise) { - proms.push(r.then((r2) => handlePropertyResult(r2, payload, key, input, isOptionalOut))); - } else { - handlePropertyResult(r, payload, key, input, isOptionalOut); - } - } - if (unrecognized.length) { - payload.issues.push({ - code: "unrecognized_keys", - keys: unrecognized, - input, - inst - }); - } - if (!proms.length) - return payload; - return Promise.all(proms).then(() => { - return payload; - }); -} -var $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => { - $ZodType.init(inst, def); - const desc = Object.getOwnPropertyDescriptor(def, "shape"); - if (!desc?.get) { - const sh = def.shape; - Object.defineProperty(def, "shape", { - get: () => { - const newSh = { ...sh }; - Object.defineProperty(def, "shape", { - value: newSh - }); - return newSh; - } - }); - } - const _normalized = cached(() => normalizeDef(def)); - defineLazy(inst._zod, "propValues", () => { - const shape = def.shape; - const propValues = {}; - for (const key in shape) { - const field = shape[key]._zod; - if (field.values) { - propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set()); - for (const v of field.values) - propValues[key].add(v); - } - } - return propValues; - }); - const isObject3 = isObject; - const catchall = def.catchall; - let value; - inst._zod.parse = (payload, ctx) => { - value ?? (value = _normalized.value); - const input = payload.value; - if (!isObject3(input)) { - payload.issues.push({ - expected: "object", - code: "invalid_type", - input, - inst - }); - return payload; - } - payload.value = {}; - const proms = []; - const shape = value.shape; - for (const key of value.keys) { - const el = shape[key]; - const isOptionalOut = el._zod.optout === "optional"; - const r = el._zod.run({ value: input[key], issues: [] }, ctx); - if (r instanceof Promise) { - proms.push(r.then((r2) => handlePropertyResult(r2, payload, key, input, isOptionalOut))); - } else { - handlePropertyResult(r, payload, key, input, isOptionalOut); - } - } - if (!catchall) { - return proms.length ? Promise.all(proms).then(() => payload) : payload; - } - return handleCatchall(proms, input, payload, ctx, _normalized.value, inst); - }; -}); -var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) => { - $ZodObject.init(inst, def); - const superParse = inst._zod.parse; - const _normalized = cached(() => normalizeDef(def)); - const generateFastpass = (shape) => { - const doc = new Doc(["shape", "payload", "ctx"]); - const normalized = _normalized.value; - const parseStr = (key) => { - const k = esc(key); - return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`; - }; - doc.write(`const input = payload.value;`); - const ids = /* @__PURE__ */ Object.create(null); - let counter = 0; - for (const key of normalized.keys) { - ids[key] = `key_${counter++}`; - } - doc.write(`const newResult = {};`); - for (const key of normalized.keys) { - const id = ids[key]; - const k = esc(key); - const schema = shape[key]; - const isOptionalOut = schema?._zod?.optout === "optional"; - doc.write(`const ${id} = ${parseStr(key)};`); - if (isOptionalOut) { - doc.write(` - if (${id}.issues.length) { - if (${k} in input) { - payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${k}, ...iss.path] : [${k}] - }))); - } - } - - if (${id}.value === undefined) { - if (${k} in input) { - newResult[${k}] = undefined; - } - } else { - newResult[${k}] = ${id}.value; - } - - `); - } else { - doc.write(` - if (${id}.issues.length) { - payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${k}, ...iss.path] : [${k}] - }))); - } - - if (${id}.value === undefined) { - if (${k} in input) { - newResult[${k}] = undefined; - } - } else { - newResult[${k}] = ${id}.value; - } - - `); - } - } - doc.write(`payload.value = newResult;`); - doc.write(`return payload;`); - const fn = doc.compile(); - return (payload, ctx) => fn(shape, payload, ctx); - }; - let fastpass; - const isObject3 = isObject; - const jit = !globalConfig.jitless; - const allowsEval3 = allowsEval; - const fastEnabled = jit && allowsEval3.value; - const catchall = def.catchall; - let value; - inst._zod.parse = (payload, ctx) => { - value ?? (value = _normalized.value); - const input = payload.value; - if (!isObject3(input)) { - payload.issues.push({ - expected: "object", - code: "invalid_type", - input, - inst - }); - return payload; - } - if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) { - if (!fastpass) - fastpass = generateFastpass(def.shape); - payload = fastpass(payload, ctx); - if (!catchall) - return payload; - return handleCatchall([], input, payload, ctx, value, inst); - } - return superParse(payload, ctx); - }; -}); -function handleUnionResults(results, final, inst, ctx) { - for (const result of results) { - if (result.issues.length === 0) { - final.value = result.value; - return final; - } - } - const nonaborted = results.filter((r) => !aborted(r)); - if (nonaborted.length === 1) { - final.value = nonaborted[0].value; - return nonaborted[0]; - } - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) - }); - return final; -} -var $ZodUnion = /* @__PURE__ */ $constructor("$ZodUnion", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "optin", () => def.options.some((o) => o._zod.optin === "optional") ? "optional" : void 0); - defineLazy(inst._zod, "optout", () => def.options.some((o) => o._zod.optout === "optional") ? "optional" : void 0); - defineLazy(inst._zod, "values", () => { - if (def.options.every((o) => o._zod.values)) { - return new Set(def.options.flatMap((option) => Array.from(option._zod.values))); - } - return void 0; - }); - defineLazy(inst._zod, "pattern", () => { - if (def.options.every((o) => o._zod.pattern)) { - const patterns = def.options.map((o) => o._zod.pattern); - return new RegExp(`^(${patterns.map((p) => cleanRegex(p.source)).join("|")})$`); - } - return void 0; - }); - const single = def.options.length === 1; - const first = def.options[0]._zod.run; - inst._zod.parse = (payload, ctx) => { - if (single) { - return first(payload, ctx); - } - let async = false; - const results = []; - for (const option of def.options) { - const result = option._zod.run({ - value: payload.value, - issues: [] - }, ctx); - if (result instanceof Promise) { - results.push(result); - async = true; - } else { - if (result.issues.length === 0) - return result; - results.push(result); - } - } - if (!async) - return handleUnionResults(results, payload, inst, ctx); - return Promise.all(results).then((results2) => { - return handleUnionResults(results2, payload, inst, ctx); - }); - }; -}); -function handleExclusiveUnionResults(results, final, inst, ctx) { - const successes = results.filter((r) => r.issues.length === 0); - if (successes.length === 1) { - final.value = successes[0].value; - return final; - } - if (successes.length === 0) { - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) - }); - } else { - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: [], - inclusive: false - }); - } - return final; -} -var $ZodXor = /* @__PURE__ */ $constructor("$ZodXor", (inst, def) => { - $ZodUnion.init(inst, def); - def.inclusive = false; - const single = def.options.length === 1; - const first = def.options[0]._zod.run; - inst._zod.parse = (payload, ctx) => { - if (single) { - return first(payload, ctx); - } - let async = false; - const results = []; - for (const option of def.options) { - const result = option._zod.run({ - value: payload.value, - issues: [] - }, ctx); - if (result instanceof Promise) { - results.push(result); - async = true; - } else { - results.push(result); - } - } - if (!async) - return handleExclusiveUnionResults(results, payload, inst, ctx); - return Promise.all(results).then((results2) => { - return handleExclusiveUnionResults(results2, payload, inst, ctx); - }); - }; -}); -var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnion", (inst, def) => { - def.inclusive = false; - $ZodUnion.init(inst, def); - const _super = inst._zod.parse; - defineLazy(inst._zod, "propValues", () => { - const propValues = {}; - for (const option of def.options) { - const pv = option._zod.propValues; - if (!pv || Object.keys(pv).length === 0) - throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`); - for (const [k, v] of Object.entries(pv)) { - if (!propValues[k]) - propValues[k] = /* @__PURE__ */ new Set(); - for (const val of v) { - propValues[k].add(val); - } - } - } - return propValues; - }); - const disc = cached(() => { - const opts = def.options; - const map3 = /* @__PURE__ */ new Map(); - for (const o of opts) { - const values = o._zod.propValues?.[def.discriminator]; - if (!values || values.size === 0) - throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`); - for (const v of values) { - if (map3.has(v)) { - throw new Error(`Duplicate discriminator value "${String(v)}"`); - } - map3.set(v, o); - } - } - return map3; - }); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!isObject(input)) { - payload.issues.push({ - code: "invalid_type", - expected: "object", - input, - inst - }); - return payload; - } - const opt = disc.value.get(input?.[def.discriminator]); - if (opt) { - return opt._zod.run(payload, ctx); - } - if (def.unionFallback) { - return _super(payload, ctx); - } - payload.issues.push({ - code: "invalid_union", - errors: [], - note: "No matching discriminator", - discriminator: def.discriminator, - input, - path: [def.discriminator], - inst - }); - return payload; - }; -}); -var $ZodIntersection = /* @__PURE__ */ $constructor("$ZodIntersection", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - const left = def.left._zod.run({ value: input, issues: [] }, ctx); - const right = def.right._zod.run({ value: input, issues: [] }, ctx); - const async = left instanceof Promise || right instanceof Promise; - if (async) { - return Promise.all([left, right]).then(([left2, right2]) => { - return handleIntersectionResults(payload, left2, right2); - }); - } - return handleIntersectionResults(payload, left, right); - }; -}); -function mergeValues(a, b) { - if (a === b) { - return { valid: true, data: a }; - } - if (a instanceof Date && b instanceof Date && +a === +b) { - return { valid: true, data: a }; - } - if (isPlainObject(a) && isPlainObject(b)) { - const bKeys = Object.keys(b); - const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1); - const newObj = { ...a, ...b }; - for (const key of sharedKeys) { - const sharedValue = mergeValues(a[key], b[key]); - if (!sharedValue.valid) { - return { - valid: false, - mergeErrorPath: [key, ...sharedValue.mergeErrorPath] - }; - } - newObj[key] = sharedValue.data; - } - return { valid: true, data: newObj }; - } - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) { - return { valid: false, mergeErrorPath: [] }; - } - const newArray = []; - for (let index = 0; index < a.length; index++) { - const itemA = a[index]; - const itemB = b[index]; - const sharedValue = mergeValues(itemA, itemB); - if (!sharedValue.valid) { - return { - valid: false, - mergeErrorPath: [index, ...sharedValue.mergeErrorPath] - }; - } - newArray.push(sharedValue.data); - } - return { valid: true, data: newArray }; - } - return { valid: false, mergeErrorPath: [] }; -} -function handleIntersectionResults(result, left, right) { - const unrecKeys = /* @__PURE__ */ new Map(); - let unrecIssue; - for (const iss of left.issues) { - if (iss.code === "unrecognized_keys") { - unrecIssue ?? (unrecIssue = iss); - for (const k of iss.keys) { - if (!unrecKeys.has(k)) - unrecKeys.set(k, {}); - unrecKeys.get(k).l = true; - } - } else { - result.issues.push(iss); - } - } - for (const iss of right.issues) { - if (iss.code === "unrecognized_keys") { - for (const k of iss.keys) { - if (!unrecKeys.has(k)) - unrecKeys.set(k, {}); - unrecKeys.get(k).r = true; - } - } else { - result.issues.push(iss); - } - } - const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k); - if (bothKeys.length && unrecIssue) { - result.issues.push({ ...unrecIssue, keys: bothKeys }); - } - if (aborted(result)) - return result; - const merged = mergeValues(left.value, right.value); - if (!merged.valid) { - throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`); - } - result.value = merged.data; - return result; -} -var $ZodTuple = /* @__PURE__ */ $constructor("$ZodTuple", (inst, def) => { - $ZodType.init(inst, def); - const items = def.items; - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!Array.isArray(input)) { - payload.issues.push({ - input, - inst, - expected: "tuple", - code: "invalid_type" - }); - return payload; - } - payload.value = []; - const proms = []; - const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== "optional"); - const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex; - if (!def.rest) { - const tooBig = input.length > items.length; - const tooSmall = input.length < optStart - 1; - if (tooBig || tooSmall) { - payload.issues.push({ - ...tooBig ? { code: "too_big", maximum: items.length, inclusive: true } : { code: "too_small", minimum: items.length }, - input, - inst, - origin: "array" - }); - return payload; - } - } - let i = -1; - for (const item of items) { - i++; - if (i >= input.length) { - if (i >= optStart) - continue; - } - const result = item._zod.run({ - value: input[i], - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleTupleResult(result2, payload, i))); - } else { - handleTupleResult(result, payload, i); - } - } - if (def.rest) { - const rest = input.slice(items.length); - for (const el of rest) { - i++; - const result = def.rest._zod.run({ - value: el, - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleTupleResult(result2, payload, i))); - } else { - handleTupleResult(result, payload, i); - } - } - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleTupleResult(result, final, index) { - if (result.issues.length) { - final.issues.push(...prefixIssues(index, result.issues)); - } - final.value[index] = result.value; -} -var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!isPlainObject(input)) { - payload.issues.push({ - expected: "record", - code: "invalid_type", - input, - inst - }); - return payload; - } - const proms = []; - const values = def.keyType._zod.values; - if (values) { - payload.value = {}; - const recordKeys = /* @__PURE__ */ new Set(); - for (const key of values) { - if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { - recordKeys.add(typeof key === "number" ? key.toString() : key); - const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => { - if (result2.issues.length) { - payload.issues.push(...prefixIssues(key, result2.issues)); - } - payload.value[key] = result2.value; - })); - } else { - if (result.issues.length) { - payload.issues.push(...prefixIssues(key, result.issues)); - } - payload.value[key] = result.value; - } - } - } - let unrecognized; - for (const key in input) { - if (!recordKeys.has(key)) { - unrecognized = unrecognized ?? []; - unrecognized.push(key); - } - } - if (unrecognized && unrecognized.length > 0) { - payload.issues.push({ - code: "unrecognized_keys", - input, - inst, - keys: unrecognized - }); - } - } else { - payload.value = {}; - for (const key of Reflect.ownKeys(input)) { - if (key === "__proto__") - continue; - let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); - if (keyResult instanceof Promise) { - throw new Error("Async schemas not supported in object keys currently"); - } - const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length; - if (checkNumericKey) { - const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx); - if (retryResult instanceof Promise) { - throw new Error("Async schemas not supported in object keys currently"); - } - if (retryResult.issues.length === 0) { - keyResult = retryResult; - } - } - if (keyResult.issues.length) { - if (def.mode === "loose") { - payload.value[key] = input[key]; - } else { - payload.issues.push({ - code: "invalid_key", - origin: "record", - issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())), - input: key, - path: [key], - inst - }); - } - continue; - } - const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => { - if (result2.issues.length) { - payload.issues.push(...prefixIssues(key, result2.issues)); - } - payload.value[keyResult.value] = result2.value; - })); - } else { - if (result.issues.length) { - payload.issues.push(...prefixIssues(key, result.issues)); - } - payload.value[keyResult.value] = result.value; - } - } - } - if (proms.length) { - return Promise.all(proms).then(() => payload); - } - return payload; - }; -}); -var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!(input instanceof Map)) { - payload.issues.push({ - expected: "map", - code: "invalid_type", - input, - inst - }); - return payload; - } - const proms = []; - payload.value = /* @__PURE__ */ new Map(); - for (const [key, value] of input) { - const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); - const valueResult = def.valueType._zod.run({ value, issues: [] }, ctx); - if (keyResult instanceof Promise || valueResult instanceof Promise) { - proms.push(Promise.all([keyResult, valueResult]).then(([keyResult2, valueResult2]) => { - handleMapResult(keyResult2, valueResult2, payload, key, input, inst, ctx); - })); - } else { - handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx); - } - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) { - if (keyResult.issues.length) { - if (propertyKeyTypes.has(typeof key)) { - final.issues.push(...prefixIssues(key, keyResult.issues)); - } else { - final.issues.push({ - code: "invalid_key", - origin: "map", - input, - inst, - issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) - }); - } - } - if (valueResult.issues.length) { - if (propertyKeyTypes.has(typeof key)) { - final.issues.push(...prefixIssues(key, valueResult.issues)); - } else { - final.issues.push({ - origin: "map", - code: "invalid_element", - input, - inst, - key, - issues: valueResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) - }); - } - } - final.value.set(keyResult.value, valueResult.value); -} -var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!(input instanceof Set)) { - payload.issues.push({ - input, - inst, - expected: "set", - code: "invalid_type" - }); - return payload; - } - const proms = []; - payload.value = /* @__PURE__ */ new Set(); - for (const item of input) { - const result = def.valueType._zod.run({ value: item, issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleSetResult(result2, payload))); - } else - handleSetResult(result, payload); - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleSetResult(result, final) { - if (result.issues.length) { - final.issues.push(...result.issues); - } - final.value.add(result.value); -} -var $ZodEnum = /* @__PURE__ */ $constructor("$ZodEnum", (inst, def) => { - $ZodType.init(inst, def); - const values = getEnumValues(def.entries); - const valuesSet = new Set(values); - inst._zod.values = valuesSet; - inst._zod.pattern = new RegExp(`^(${values.filter((k) => propertyKeyTypes.has(typeof k)).map((o) => typeof o === "string" ? escapeRegex(o) : o.toString()).join("|")})$`); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (valuesSet.has(input)) { - return payload; - } - payload.issues.push({ - code: "invalid_value", - values, - input, - inst - }); - return payload; - }; -}); -var $ZodLiteral = /* @__PURE__ */ $constructor("$ZodLiteral", (inst, def) => { - $ZodType.init(inst, def); - if (def.values.length === 0) { - throw new Error("Cannot create literal schema with no valid values"); - } - const values = new Set(def.values); - inst._zod.values = values; - inst._zod.pattern = new RegExp(`^(${def.values.map((o) => typeof o === "string" ? escapeRegex(o) : o ? escapeRegex(o.toString()) : String(o)).join("|")})$`); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (values.has(input)) { - return payload; - } - payload.issues.push({ - code: "invalid_value", - values: def.values, - input, - inst - }); - return payload; - }; -}); -var $ZodFile = /* @__PURE__ */ $constructor("$ZodFile", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (input instanceof File) - return payload; - payload.issues.push({ - expected: "file", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodTransform = /* @__PURE__ */ $constructor("$ZodTransform", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - throw new $ZodEncodeError(inst.constructor.name); - } - const _out = def.transform(payload.value, payload); - if (ctx.async) { - const output = _out instanceof Promise ? _out : Promise.resolve(_out); - return output.then((output2) => { - payload.value = output2; - return payload; - }); - } - if (_out instanceof Promise) { - throw new $ZodAsyncError(); - } - payload.value = _out; - return payload; - }; -}); -function handleOptionalResult(result, input) { - if (result.issues.length && input === void 0) { - return { issues: [], value: void 0 }; - } - return result; -} -var $ZodOptional = /* @__PURE__ */ $constructor("$ZodOptional", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.optin = "optional"; - inst._zod.optout = "optional"; - defineLazy(inst._zod, "values", () => { - return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, void 0]) : void 0; - }); - defineLazy(inst._zod, "pattern", () => { - const pattern = def.innerType._zod.pattern; - return pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - if (def.innerType._zod.optin === "optional") { - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) - return result.then((r) => handleOptionalResult(r, payload.value)); - return handleOptionalResult(result, payload.value); - } - if (payload.value === void 0) { - return payload; - } - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodExactOptional = /* @__PURE__ */ $constructor("$ZodExactOptional", (inst, def) => { - $ZodOptional.init(inst, def); - defineLazy(inst._zod, "values", () => def.innerType._zod.values); - defineLazy(inst._zod, "pattern", () => def.innerType._zod.pattern); - inst._zod.parse = (payload, ctx) => { - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodNullable = /* @__PURE__ */ $constructor("$ZodNullable", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); - defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); - defineLazy(inst._zod, "pattern", () => { - const pattern = def.innerType._zod.pattern; - return pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0; - }); - defineLazy(inst._zod, "values", () => { - return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, null]) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - if (payload.value === null) - return payload; - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodDefault = /* @__PURE__ */ $constructor("$ZodDefault", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.optin = "optional"; - defineLazy(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - if (payload.value === void 0) { - payload.value = def.defaultValue; - return payload; - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => handleDefaultResult(result2, def)); - } - return handleDefaultResult(result, def); - }; -}); -function handleDefaultResult(payload, def) { - if (payload.value === void 0) { - payload.value = def.defaultValue; - } - return payload; -} -var $ZodPrefault = /* @__PURE__ */ $constructor("$ZodPrefault", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.optin = "optional"; - defineLazy(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - if (payload.value === void 0) { - payload.value = def.defaultValue; - } - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodNonOptional = /* @__PURE__ */ $constructor("$ZodNonOptional", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "values", () => { - const v = def.innerType._zod.values; - return v ? new Set([...v].filter((x) => x !== void 0)) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => handleNonOptionalResult(result2, inst)); - } - return handleNonOptionalResult(result, inst); - }; -}); -function handleNonOptionalResult(payload, inst) { - if (!payload.issues.length && payload.value === void 0) { - payload.issues.push({ - code: "invalid_type", - expected: "nonoptional", - input: payload.value, - inst - }); - } - return payload; -} -var $ZodSuccess = /* @__PURE__ */ $constructor("$ZodSuccess", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - throw new $ZodEncodeError("ZodSuccess"); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => { - payload.value = result2.issues.length === 0; - return payload; - }); - } - payload.value = result.issues.length === 0; - return payload; - }; -}); -var $ZodCatch = /* @__PURE__ */ $constructor("$ZodCatch", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); - defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); - defineLazy(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => { - payload.value = result2.value; - if (result2.issues.length) { - payload.value = def.catchValue({ - ...payload, - error: { - issues: result2.issues.map((iss) => finalizeIssue(iss, ctx, config())) - }, - input: payload.value - }); - payload.issues = []; - } - return payload; - }); - } - payload.value = result.value; - if (result.issues.length) { - payload.value = def.catchValue({ - ...payload, - error: { - issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) - }, - input: payload.value - }); - payload.issues = []; - } - return payload; - }; -}); -var $ZodNaN = /* @__PURE__ */ $constructor("$ZodNaN", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "number" || !Number.isNaN(payload.value)) { - payload.issues.push({ - input: payload.value, - inst, - expected: "nan", - code: "invalid_type" - }); - return payload; - } - return payload; - }; -}); -var $ZodPipe = /* @__PURE__ */ $constructor("$ZodPipe", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "values", () => def.in._zod.values); - defineLazy(inst._zod, "optin", () => def.in._zod.optin); - defineLazy(inst._zod, "optout", () => def.out._zod.optout); - defineLazy(inst._zod, "propValues", () => def.in._zod.propValues); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - const right = def.out._zod.run(payload, ctx); - if (right instanceof Promise) { - return right.then((right2) => handlePipeResult(right2, def.in, ctx)); - } - return handlePipeResult(right, def.in, ctx); - } - const left = def.in._zod.run(payload, ctx); - if (left instanceof Promise) { - return left.then((left2) => handlePipeResult(left2, def.out, ctx)); - } - return handlePipeResult(left, def.out, ctx); - }; -}); -function handlePipeResult(left, next, ctx) { - if (left.issues.length) { - left.aborted = true; - return left; - } - return next._zod.run({ value: left.value, issues: left.issues }, ctx); -} -var $ZodCodec = /* @__PURE__ */ $constructor("$ZodCodec", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "values", () => def.in._zod.values); - defineLazy(inst._zod, "optin", () => def.in._zod.optin); - defineLazy(inst._zod, "optout", () => def.out._zod.optout); - defineLazy(inst._zod, "propValues", () => def.in._zod.propValues); - inst._zod.parse = (payload, ctx) => { - const direction = ctx.direction || "forward"; - if (direction === "forward") { - const left = def.in._zod.run(payload, ctx); - if (left instanceof Promise) { - return left.then((left2) => handleCodecAResult(left2, def, ctx)); - } - return handleCodecAResult(left, def, ctx); - } else { - const right = def.out._zod.run(payload, ctx); - if (right instanceof Promise) { - return right.then((right2) => handleCodecAResult(right2, def, ctx)); - } - return handleCodecAResult(right, def, ctx); - } - }; -}); -function handleCodecAResult(result, def, ctx) { - if (result.issues.length) { - result.aborted = true; - return result; - } - const direction = ctx.direction || "forward"; - if (direction === "forward") { - const transformed = def.transform(result.value, result); - if (transformed instanceof Promise) { - return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx)); - } - return handleCodecTxResult(result, transformed, def.out, ctx); - } else { - const transformed = def.reverseTransform(result.value, result); - if (transformed instanceof Promise) { - return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx)); - } - return handleCodecTxResult(result, transformed, def.in, ctx); - } -} -function handleCodecTxResult(left, value, nextSchema, ctx) { - if (left.issues.length) { - left.aborted = true; - return left; - } - return nextSchema._zod.run({ value, issues: left.issues }, ctx); -} -var $ZodReadonly = /* @__PURE__ */ $constructor("$ZodReadonly", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues); - defineLazy(inst._zod, "values", () => def.innerType._zod.values); - defineLazy(inst._zod, "optin", () => def.innerType?._zod?.optin); - defineLazy(inst._zod, "optout", () => def.innerType?._zod?.optout); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then(handleReadonlyResult); - } - return handleReadonlyResult(result); - }; -}); -function handleReadonlyResult(payload) { - payload.value = Object.freeze(payload.value); - return payload; -} -var $ZodTemplateLiteral = /* @__PURE__ */ $constructor("$ZodTemplateLiteral", (inst, def) => { - $ZodType.init(inst, def); - const regexParts = []; - for (const part of def.parts) { - if (typeof part === "object" && part !== null) { - if (!part._zod.pattern) { - throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`); - } - const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern; - if (!source) - throw new Error(`Invalid template literal part: ${part._zod.traits}`); - const start = source.startsWith("^") ? 1 : 0; - const end = source.endsWith("$") ? source.length - 1 : source.length; - regexParts.push(source.slice(start, end)); - } else if (part === null || primitiveTypes.has(typeof part)) { - regexParts.push(escapeRegex(`${part}`)); - } else { - throw new Error(`Invalid template literal part: ${part}`); - } - } - inst._zod.pattern = new RegExp(`^${regexParts.join("")}$`); - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "string") { - payload.issues.push({ - input: payload.value, - inst, - expected: "string", - code: "invalid_type" - }); - return payload; - } - inst._zod.pattern.lastIndex = 0; - if (!inst._zod.pattern.test(payload.value)) { - payload.issues.push({ - input: payload.value, - inst, - code: "invalid_format", - format: def.format ?? "template_literal", - pattern: inst._zod.pattern.source - }); - return payload; - } - return payload; - }; -}); -var $ZodFunction = /* @__PURE__ */ $constructor("$ZodFunction", (inst, def) => { - $ZodType.init(inst, def); - inst._def = def; - inst._zod.def = def; - inst.implement = (func) => { - if (typeof func !== "function") { - throw new Error("implement() must be called with a function"); - } - return function(...args) { - const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args; - const result = Reflect.apply(func, this, parsedArgs); - if (inst._def.output) { - return parse(inst._def.output, result); - } - return result; - }; - }; - inst.implementAsync = (func) => { - if (typeof func !== "function") { - throw new Error("implementAsync() must be called with a function"); - } - return async function(...args) { - const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args; - const result = await Reflect.apply(func, this, parsedArgs); - if (inst._def.output) { - return await parseAsync(inst._def.output, result); - } - return result; - }; - }; - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "function") { - payload.issues.push({ - code: "invalid_type", - expected: "function", - input: payload.value, - inst - }); - return payload; - } - const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === "promise"; - if (hasPromiseOutput) { - payload.value = inst.implementAsync(payload.value); - } else { - payload.value = inst.implement(payload.value); - } - return payload; - }; - inst.input = (...args) => { - const F = inst.constructor; - if (Array.isArray(args[0])) { - return new F({ - type: "function", - input: new $ZodTuple({ - type: "tuple", - items: args[0], - rest: args[1] - }), - output: inst._def.output - }); - } - return new F({ - type: "function", - input: args[0], - output: inst._def.output - }); - }; - inst.output = (output) => { - const F = inst.constructor; - return new F({ - type: "function", - input: inst._def.input, - output - }); - }; - return inst; -}); -var $ZodPromise = /* @__PURE__ */ $constructor("$ZodPromise", (inst, def) => { - $ZodType.init(inst, def); - inst._zod.parse = (payload, ctx) => { - return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx)); - }; -}); -var $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => { - $ZodType.init(inst, def); - defineLazy(inst._zod, "innerType", () => def.getter()); - defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern); - defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues); - defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0); - defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0); - inst._zod.parse = (payload, ctx) => { - const inner = inst._zod.innerType; - return inner._zod.run(payload, ctx); - }; -}); -var $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => { - $ZodCheck.init(inst, def); - $ZodType.init(inst, def); - inst._zod.parse = (payload, _) => { - return payload; - }; - inst._zod.check = (payload) => { - const input = payload.value; - const r = def.fn(input); - if (r instanceof Promise) { - return r.then((r2) => handleRefineResult(r2, payload, input, inst)); - } - handleRefineResult(r, payload, input, inst); - return; - }; -}); -function handleRefineResult(result, payload, input, inst) { - if (!result) { - const _iss = { - code: "custom", - input, - inst, - // incorporates params.error into issue reporting - path: [...inst._zod.def.path ?? []], - // incorporates params.error into issue reporting - continue: !inst._zod.def.abort - // params: inst._zod.def.params, - }; - if (inst._zod.def.params) - _iss.params = inst._zod.def.params; - payload.issues.push(issue(_iss)); - } -} - -// node_modules/zod/v4/locales/index.js -var locales_exports = {}; -__export(locales_exports, { - ar: () => ar_default, - az: () => az_default, - be: () => be_default, - bg: () => bg_default, - ca: () => ca_default, - cs: () => cs_default, - da: () => da_default, - de: () => de_default, - en: () => en_default, - eo: () => eo_default, - es: () => es_default, - fa: () => fa_default, - fi: () => fi_default, - fr: () => fr_default, - frCA: () => fr_CA_default, - he: () => he_default, - hu: () => hu_default, - hy: () => hy_default, - id: () => id_default, - is: () => is_default, - it: () => it_default, - ja: () => ja_default, - ka: () => ka_default, - kh: () => kh_default, - km: () => km_default, - ko: () => ko_default, - lt: () => lt_default, - mk: () => mk_default, - ms: () => ms_default, - nl: () => nl_default, - no: () => no_default, - ota: () => ota_default, - pl: () => pl_default, - ps: () => ps_default, - pt: () => pt_default, - ru: () => ru_default, - sl: () => sl_default, - sv: () => sv_default, - ta: () => ta_default, - th: () => th_default, - tr: () => tr_default, - ua: () => ua_default, - uk: () => uk_default, - ur: () => ur_default, - uz: () => uz_default, - vi: () => vi_default, - yo: () => yo_default, - zhCN: () => zh_CN_default, - zhTW: () => zh_TW_default -}); - -// node_modules/zod/v4/locales/ar.js -var error = () => { - const Sizable = { - string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - file: { unit: "\u0628\u0627\u064A\u062A", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - array: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - set: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0645\u062F\u062E\u0644", - email: "\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A", - url: "\u0631\u0627\u0628\u0637", - emoji: "\u0625\u064A\u0645\u0648\u062C\u064A", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - date: "\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - time: "\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - duration: "\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - ipv4: "\u0639\u0646\u0648\u0627\u0646 IPv4", - ipv6: "\u0639\u0646\u0648\u0627\u0646 IPv6", - cidrv4: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4", - cidrv6: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6", - base64: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded", - base64url: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded", - json_string: "\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON", - e164: "\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164", - jwt: "JWT", - template_literal: "\u0645\u062F\u062E\u0644" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue3.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; - } - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${stringifyPrimitive(issue3.values[0])}`; - return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue3.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"}`; - return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue3.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue3.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue3.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${issue3.prefix}"`; - if (_issue.format === "ends_with") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`; - } - case "not_multiple_of": - return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue3.divisor}`; - case "unrecognized_keys": - return `\u0645\u0639\u0631\u0641${issue3.keys.length > 1 ? "\u0627\u062A" : ""} \u063A\u0631\u064A\u0628${issue3.keys.length > 1 ? "\u0629" : ""}: ${joinValues(issue3.keys, "\u060C ")}`; - case "invalid_key": - return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue3.origin}`; - case "invalid_union": - return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; - case "invalid_element": - return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue3.origin}`; - default: - return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; - } - }; -}; -function ar_default() { - return { - localeError: error() - }; -} - -// node_modules/zod/v4/locales/az.js -var error2 = () => { - const Sizable = { - string: { unit: "simvol", verb: "olmal\u0131d\u0131r" }, - file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, - array: { unit: "element", verb: "olmal\u0131d\u0131r" }, - set: { unit: "element", verb: "olmal\u0131d\u0131r" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "email address", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datetime", - date: "ISO date", - time: "ISO time", - duration: "ISO duration", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded string", - base64url: "base64url-encoded string", - json_string: "JSON string", - e164: "E.164 number", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${issue3.expected}, daxil olan ${received}`; - } - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${stringifyPrimitive(issue3.values[0])}`; - return `Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue3.origin ?? "d\u0259y\u0259r"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element"}`; - return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue3.origin ?? "d\u0259y\u0259r"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`; - if (_issue.format === "ends_with") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.suffix}" il\u0259 bitm\u0259lidir`; - if (_issue.format === "includes") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.includes}" daxil olmal\u0131d\u0131r`; - if (_issue.format === "regex") - return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`; - return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Yanl\u0131\u015F \u0259d\u0259d: ${issue3.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`; - case "unrecognized_keys": - return `Tan\u0131nmayan a\xE7ar${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`; - case "invalid_union": - return "Yanl\u0131\u015F d\u0259y\u0259r"; - case "invalid_element": - return `${issue3.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`; - default: - return `Yanl\u0131\u015F d\u0259y\u0259r`; - } - }; -}; -function az_default() { - return { - localeError: error2() - }; -} - -// node_modules/zod/v4/locales/be.js -function getBelarusianPlural(count, one, few, many) { - const absCount = Math.abs(count); - const lastDigit = absCount % 10; - const lastTwoDigits = absCount % 100; - if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { - return many; - } - if (lastDigit === 1) { - return one; - } - if (lastDigit >= 2 && lastDigit <= 4) { - return few; - } - return many; -} -var error3 = () => { - const Sizable = { - string: { - unit: { - one: "\u0441\u0456\u043C\u0432\u0430\u043B", - few: "\u0441\u0456\u043C\u0432\u0430\u043B\u044B", - many: "\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - array: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - set: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - file: { - unit: { - one: "\u0431\u0430\u0439\u0442", - few: "\u0431\u0430\u0439\u0442\u044B", - many: "\u0431\u0430\u0439\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0443\u0432\u043E\u0434", - email: "email \u0430\u0434\u0440\u0430\u0441", - url: "URL", - emoji: "\u044D\u043C\u043E\u0434\u0437\u0456", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0447\u0430\u0441", - duration: "ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C", - ipv4: "IPv4 \u0430\u0434\u0440\u0430\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0430\u0441", - cidrv4: "IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", - base64: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64", - base64url: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url", - json_string: "JSON \u0440\u0430\u0434\u043E\u043A", - e164: "\u043D\u0443\u043C\u0430\u0440 E.164", - jwt: "JWT", - template_literal: "\u0443\u0432\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u043B\u0456\u043A", - array: "\u043C\u0430\u0441\u0456\u045E" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue3.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; - } - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${stringifyPrimitive(issue3.values[0])}`; - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue3.keys.length > 1 ? "\u043A\u043B\u044E\u0447\u044B" : "\u043A\u043B\u044E\u0447"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"; - case "invalid_element": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue3.origin}`; - default: - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`; - } - }; -}; -function be_default() { - return { - localeError: error3() - }; -} - -// node_modules/zod/v4/locales/bg.js -var error4 = () => { - const Sizable = { - string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - file: { unit: "\u0431\u0430\u0439\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0445\u043E\u0434", - email: "\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441", - url: "URL", - emoji: "\u0435\u043C\u043E\u0434\u0436\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0432\u0440\u0435\u043C\u0435", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0432\u0440\u0435\u043C\u0435", - duration: "ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", - cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - base64: "base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", - base64url: "base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", - json_string: "JSON \u043D\u0438\u0437", - e164: "E.164 \u043D\u043E\u043C\u0435\u0440", - jwt: "JWT", - template_literal: "\u0432\u0445\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue3.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; - } - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${stringifyPrimitive(issue3.values[0])}`; - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`; - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`; - let invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D"; - if (_issue.format === "emoji") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "datetime") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "date") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; - if (_issue.format === "time") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "duration") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; - return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue3.keys.length > 1 ? "\u0438" : ""} \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u043E\u0432\u0435" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"; - case "invalid_element": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue3.origin}`; - default: - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`; - } - }; -}; -function bg_default() { - return { - localeError: error4() - }; -} - -// node_modules/zod/v4/locales/ca.js -var error5 = () => { - const Sizable = { - string: { unit: "car\xE0cters", verb: "contenir" }, - file: { unit: "bytes", verb: "contenir" }, - array: { unit: "elements", verb: "contenir" }, - set: { unit: "elements", verb: "contenir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entrada", - email: "adre\xE7a electr\xF2nica", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data i hora ISO", - date: "data ISO", - time: "hora ISO", - duration: "durada ISO", - ipv4: "adre\xE7a IPv4", - ipv6: "adre\xE7a IPv6", - cidrv4: "rang IPv4", - cidrv6: "rang IPv6", - base64: "cadena codificada en base64", - base64url: "cadena codificada en base64url", - json_string: "cadena JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Tipus inv\xE0lid: s'esperava instanceof ${issue3.expected}, s'ha rebut ${received}`; - } - return `Tipus inv\xE0lid: s'esperava ${expected}, s'ha rebut ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Valor inv\xE0lid: s'esperava ${stringifyPrimitive(issue3.values[0])}`; - return `Opci\xF3 inv\xE0lida: s'esperava una de ${joinValues(issue3.values, " o ")}`; - case "too_big": { - const adj = issue3.inclusive ? "com a m\xE0xim" : "menys de"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Massa gran: s'esperava que ${issue3.origin ?? "el valor"} contingu\xE9s ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "elements"}`; - return `Massa gran: s'esperava que ${issue3.origin ?? "el valor"} fos ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "com a m\xEDnim" : "m\xE9s de"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Massa petit: s'esperava que ${issue3.origin} contingu\xE9s ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Massa petit: s'esperava que ${issue3.origin} fos ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Format inv\xE0lid: ha de comen\xE7ar amb "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Format inv\xE0lid: ha d'acabar amb "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Format inv\xE0lid: ha d'incloure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${_issue.pattern}`; - return `Format inv\xE0lid per a ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Clau${issue3.keys.length > 1 ? "s" : ""} no reconeguda${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Clau inv\xE0lida a ${issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE0lida"; - // Could also be "Tipus d'unió invàlid" but "Entrada invàlida" is more general - case "invalid_element": - return `Element inv\xE0lid a ${issue3.origin}`; - default: - return `Entrada inv\xE0lida`; - } - }; -}; -function ca_default() { - return { - localeError: error5() - }; -} - -// node_modules/zod/v4/locales/cs.js -var error6 = () => { - const Sizable = { - string: { unit: "znak\u016F", verb: "m\xEDt" }, - file: { unit: "bajt\u016F", verb: "m\xEDt" }, - array: { unit: "prvk\u016F", verb: "m\xEDt" }, - set: { unit: "prvk\u016F", verb: "m\xEDt" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "regul\xE1rn\xED v\xFDraz", - email: "e-mailov\xE1 adresa", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "datum a \u010Das ve form\xE1tu ISO", - date: "datum ve form\xE1tu ISO", - time: "\u010Das ve form\xE1tu ISO", - duration: "doba trv\xE1n\xED ISO", - ipv4: "IPv4 adresa", - ipv6: "IPv6 adresa", - cidrv4: "rozsah IPv4", - cidrv6: "rozsah IPv6", - base64: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64", - base64url: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url", - json_string: "\u0159et\u011Bzec ve form\xE1tu JSON", - e164: "\u010D\xEDslo E.164", - jwt: "JWT", - template_literal: "vstup" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u010D\xEDslo", - string: "\u0159et\u011Bzec", - function: "funkce", - array: "pole" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${issue3.expected}, obdr\u017Eeno ${received}`; - } - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${expected}, obdr\u017Eeno ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${stringifyPrimitive(issue3.values[0])}`; - return `Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue3.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "prvk\u016F"}`; - } - return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue3.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue3.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue3.minimum.toString()} ${sizing.unit ?? "prvk\u016F"}`; - } - return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue3.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${_issue.includes}"`; - if (_issue.format === "regex") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${_issue.pattern}`; - return `Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${issue3.divisor}`; - case "unrecognized_keys": - return `Nezn\xE1m\xE9 kl\xED\u010De: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Neplatn\xFD kl\xED\u010D v ${issue3.origin}`; - case "invalid_union": - return "Neplatn\xFD vstup"; - case "invalid_element": - return `Neplatn\xE1 hodnota v ${issue3.origin}`; - default: - return `Neplatn\xFD vstup`; - } - }; -}; -function cs_default() { - return { - localeError: error6() - }; -} - -// node_modules/zod/v4/locales/da.js -var error7 = () => { - const Sizable = { - string: { unit: "tegn", verb: "havde" }, - file: { unit: "bytes", verb: "havde" }, - array: { unit: "elementer", verb: "indeholdt" }, - set: { unit: "elementer", verb: "indeholdt" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "e-mailadresse", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dato- og klokkesl\xE6t", - date: "ISO-dato", - time: "ISO-klokkesl\xE6t", - duration: "ISO-varighed", - ipv4: "IPv4-omr\xE5de", - ipv6: "IPv6-omr\xE5de", - cidrv4: "IPv4-spektrum", - cidrv6: "IPv6-spektrum", - base64: "base64-kodet streng", - base64url: "base64url-kodet streng", - json_string: "JSON-streng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - string: "streng", - number: "tal", - boolean: "boolean", - array: "liste", - object: "objekt", - set: "s\xE6t", - file: "fil" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ugyldigt input: forventede instanceof ${issue3.expected}, fik ${received}`; - } - return `Ugyldigt input: forventede ${expected}, fik ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ugyldig v\xE6rdi: forventede ${stringifyPrimitive(issue3.values[0])}`; - return `Ugyldigt valg: forventede en af f\xF8lgende ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) - return `For stor: forventede ${origin ?? "value"} ${sizing.verb} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "elementer"}`; - return `For stor: forventede ${origin ?? "value"} havde ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) { - return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `For lille: forventede ${origin} havde ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ugyldig streng: skal starte med "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Ugyldig streng: skal ende med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ugyldig streng: skal indeholde "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ugyldig streng: skal matche m\xF8nsteret ${_issue.pattern}`; - return `Ugyldig ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ugyldigt tal: skal v\xE6re deleligt med ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ukendte n\xF8gler" : "Ukendt n\xF8gle"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Ugyldig n\xF8gle i ${issue3.origin}`; - case "invalid_union": - return "Ugyldigt input: matcher ingen af de tilladte typer"; - case "invalid_element": - return `Ugyldig v\xE6rdi i ${issue3.origin}`; - default: - return `Ugyldigt input`; - } - }; -}; -function da_default() { - return { - localeError: error7() - }; -} - -// node_modules/zod/v4/locales/de.js -var error8 = () => { - const Sizable = { - string: { unit: "Zeichen", verb: "zu haben" }, - file: { unit: "Bytes", verb: "zu haben" }, - array: { unit: "Elemente", verb: "zu haben" }, - set: { unit: "Elemente", verb: "zu haben" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "Eingabe", - email: "E-Mail-Adresse", - url: "URL", - emoji: "Emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-Datum und -Uhrzeit", - date: "ISO-Datum", - time: "ISO-Uhrzeit", - duration: "ISO-Dauer", - ipv4: "IPv4-Adresse", - ipv6: "IPv6-Adresse", - cidrv4: "IPv4-Bereich", - cidrv6: "IPv6-Bereich", - base64: "Base64-codierter String", - base64url: "Base64-URL-codierter String", - json_string: "JSON-String", - e164: "E.164-Nummer", - jwt: "JWT", - template_literal: "Eingabe" - }; - const TypeDictionary = { - nan: "NaN", - number: "Zahl", - array: "Array" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ung\xFCltige Eingabe: erwartet instanceof ${issue3.expected}, erhalten ${received}`; - } - return `Ung\xFCltige Eingabe: erwartet ${expected}, erhalten ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ung\xFCltige Eingabe: erwartet ${stringifyPrimitive(issue3.values[0])}`; - return `Ung\xFCltige Option: erwartet eine von ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Zu gro\xDF: erwartet, dass ${issue3.origin ?? "Wert"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "Elemente"} hat`; - return `Zu gro\xDF: erwartet, dass ${issue3.origin ?? "Wert"} ${adj}${issue3.maximum.toString()} ist`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Zu klein: erwartet, dass ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} hat`; - } - return `Zu klein: erwartet, dass ${issue3.origin} ${adj}${issue3.minimum.toString()} ist`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ung\xFCltiger String: muss mit "${_issue.prefix}" beginnen`; - if (_issue.format === "ends_with") - return `Ung\xFCltiger String: muss mit "${_issue.suffix}" enden`; - if (_issue.format === "includes") - return `Ung\xFCltiger String: muss "${_issue.includes}" enthalten`; - if (_issue.format === "regex") - return `Ung\xFCltiger String: muss dem Muster ${_issue.pattern} entsprechen`; - return `Ung\xFCltig: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ung\xFCltige Zahl: muss ein Vielfaches von ${issue3.divisor} sein`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Unbekannte Schl\xFCssel" : "Unbekannter Schl\xFCssel"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Ung\xFCltiger Schl\xFCssel in ${issue3.origin}`; - case "invalid_union": - return "Ung\xFCltige Eingabe"; - case "invalid_element": - return `Ung\xFCltiger Wert in ${issue3.origin}`; - default: - return `Ung\xFCltige Eingabe`; - } - }; -}; -function de_default() { - return { - localeError: error8() - }; -} - -// node_modules/zod/v4/locales/en.js -var error9 = () => { - const Sizable = { - string: { unit: "characters", verb: "to have" }, - file: { unit: "bytes", verb: "to have" }, - array: { unit: "items", verb: "to have" }, - set: { unit: "items", verb: "to have" }, - map: { unit: "entries", verb: "to have" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "email address", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datetime", - date: "ISO date", - time: "ISO time", - duration: "ISO duration", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - mac: "MAC address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded string", - base64url: "base64url-encoded string", - json_string: "JSON string", - e164: "E.164 number", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - // Compatibility: "nan" -> "NaN" for display - nan: "NaN" - // All other type names omitted - they fall back to raw values via ?? operator - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - return `Invalid input: expected ${expected}, received ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Invalid input: expected ${stringifyPrimitive(issue3.values[0])}`; - return `Invalid option: expected one of ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Too big: expected ${issue3.origin ?? "value"} to have ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elements"}`; - return `Too big: expected ${issue3.origin ?? "value"} to be ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Too small: expected ${issue3.origin} to have ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Too small: expected ${issue3.origin} to be ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Invalid string: must start with "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Invalid string: must end with "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Invalid string: must include "${_issue.includes}"`; - if (_issue.format === "regex") - return `Invalid string: must match pattern ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Invalid number: must be a multiple of ${issue3.divisor}`; - case "unrecognized_keys": - return `Unrecognized key${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Invalid key in ${issue3.origin}`; - case "invalid_union": - return "Invalid input"; - case "invalid_element": - return `Invalid value in ${issue3.origin}`; - default: - return `Invalid input`; - } - }; -}; -function en_default() { - return { - localeError: error9() - }; -} - -// node_modules/zod/v4/locales/eo.js -var error10 = () => { - const Sizable = { - string: { unit: "karaktrojn", verb: "havi" }, - file: { unit: "bajtojn", verb: "havi" }, - array: { unit: "elementojn", verb: "havi" }, - set: { unit: "elementojn", verb: "havi" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "enigo", - email: "retadreso", - url: "URL", - emoji: "emo\u011Dio", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-datotempo", - date: "ISO-dato", - time: "ISO-tempo", - duration: "ISO-da\u016Dro", - ipv4: "IPv4-adreso", - ipv6: "IPv6-adreso", - cidrv4: "IPv4-rango", - cidrv6: "IPv6-rango", - base64: "64-ume kodita karaktraro", - base64url: "URL-64-ume kodita karaktraro", - json_string: "JSON-karaktraro", - e164: "E.164-nombro", - jwt: "JWT", - template_literal: "enigo" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombro", - array: "tabelo", - null: "senvalora" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Nevalida enigo: atendi\u011Dis instanceof ${issue3.expected}, ricevi\u011Dis ${received}`; - } - return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Nevalida enigo: atendi\u011Dis ${stringifyPrimitive(issue3.values[0])}`; - return `Nevalida opcio: atendi\u011Dis unu el ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Tro granda: atendi\u011Dis ke ${issue3.origin ?? "valoro"} havu ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementojn"}`; - return `Tro granda: atendi\u011Dis ke ${issue3.origin ?? "valoro"} havu ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Tro malgranda: atendi\u011Dis ke ${issue3.origin} havu ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Tro malgranda: atendi\u011Dis ke ${issue3.origin} estu ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Nevalida karaktraro: devas komenci\u011Di per "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Nevalida karaktraro: devas fini\u011Di per "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`; - if (_issue.format === "regex") - return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`; - return `Nevalida ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Nevalida nombro: devas esti oblo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Nekonata${issue3.keys.length > 1 ? "j" : ""} \u015Dlosilo${issue3.keys.length > 1 ? "j" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Nevalida \u015Dlosilo en ${issue3.origin}`; - case "invalid_union": - return "Nevalida enigo"; - case "invalid_element": - return `Nevalida valoro en ${issue3.origin}`; - default: - return `Nevalida enigo`; - } - }; -}; -function eo_default() { - return { - localeError: error10() - }; -} - -// node_modules/zod/v4/locales/es.js -var error11 = () => { - const Sizable = { - string: { unit: "caracteres", verb: "tener" }, - file: { unit: "bytes", verb: "tener" }, - array: { unit: "elementos", verb: "tener" }, - set: { unit: "elementos", verb: "tener" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entrada", - email: "direcci\xF3n de correo electr\xF3nico", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "fecha y hora ISO", - date: "fecha ISO", - time: "hora ISO", - duration: "duraci\xF3n ISO", - ipv4: "direcci\xF3n IPv4", - ipv6: "direcci\xF3n IPv6", - cidrv4: "rango IPv4", - cidrv6: "rango IPv6", - base64: "cadena codificada en base64", - base64url: "URL codificada en base64", - json_string: "cadena JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN", - string: "texto", - number: "n\xFAmero", - boolean: "booleano", - array: "arreglo", - object: "objeto", - set: "conjunto", - file: "archivo", - date: "fecha", - bigint: "n\xFAmero grande", - symbol: "s\xEDmbolo", - undefined: "indefinido", - null: "nulo", - function: "funci\xF3n", - map: "mapa", - record: "registro", - tuple: "tupla", - enum: "enumeraci\xF3n", - union: "uni\xF3n", - literal: "literal", - promise: "promesa", - void: "vac\xEDo", - never: "nunca", - unknown: "desconocido", - any: "cualquiera" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entrada inv\xE1lida: se esperaba instanceof ${issue3.expected}, recibido ${received}`; - } - return `Entrada inv\xE1lida: se esperaba ${expected}, recibido ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entrada inv\xE1lida: se esperaba ${stringifyPrimitive(issue3.values[0])}`; - return `Opci\xF3n inv\xE1lida: se esperaba una de ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) - return `Demasiado grande: se esperaba que ${origin ?? "valor"} tuviera ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementos"}`; - return `Demasiado grande: se esperaba que ${origin ?? "valor"} fuera ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) { - return `Demasiado peque\xF1o: se esperaba que ${origin} tuviera ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Demasiado peque\xF1o: se esperaba que ${origin} fuera ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Cadena inv\xE1lida: debe comenzar con "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Cadena inv\xE1lida: debe terminar en "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cadena inv\xE1lida: debe incluir "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${_issue.pattern}`; - return `Inv\xE1lido ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Llave${issue3.keys.length > 1 ? "s" : ""} desconocida${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Llave inv\xE1lida en ${TypeDictionary[issue3.origin] ?? issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE1lida"; - case "invalid_element": - return `Valor inv\xE1lido en ${TypeDictionary[issue3.origin] ?? issue3.origin}`; - default: - return `Entrada inv\xE1lida`; - } - }; -}; -function es_default() { - return { - localeError: error11() - }; -} - -// node_modules/zod/v4/locales/fa.js -var error12 = () => { - const Sizable = { - string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - file: { unit: "\u0628\u0627\u06CC\u062A", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - array: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - set: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0648\u0631\u0648\u062F\u06CC", - email: "\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644", - url: "URL", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - date: "\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648", - time: "\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - duration: "\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - ipv4: "IPv4 \u0622\u062F\u0631\u0633", - ipv6: "IPv6 \u0622\u062F\u0631\u0633", - cidrv4: "IPv4 \u062F\u0627\u0645\u0646\u0647", - cidrv6: "IPv6 \u062F\u0627\u0645\u0646\u0647", - base64: "base64-encoded \u0631\u0634\u062A\u0647", - base64url: "base64url-encoded \u0631\u0634\u062A\u0647", - json_string: "JSON \u0631\u0634\u062A\u0647", - e164: "E.164 \u0639\u062F\u062F", - jwt: "JWT", - template_literal: "\u0648\u0631\u0648\u062F\u06CC" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0639\u062F\u062F", - array: "\u0622\u0631\u0627\u06CC\u0647" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue3.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; - } - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; - } - case "invalid_value": - if (issue3.values.length === 1) { - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${stringifyPrimitive(issue3.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`; - } - return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${joinValues(issue3.values, "|")} \u0645\u06CC\u200C\u0628\u0648\u062F`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue3.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`; - } - return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue3.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} \u0628\u0627\u0634\u062F`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`; - } - return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} \u0628\u0627\u0634\u062F`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`; - } - if (_issue.format === "ends_with") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`; - } - if (_issue.format === "includes") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${_issue.includes}" \u0628\u0627\u0634\u062F`; - } - if (_issue.format === "regex") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`; - } - return `${FormatDictionary[_issue.format] ?? issue3.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - } - case "not_multiple_of": - return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue3.divisor} \u0628\u0627\u0634\u062F`; - case "unrecognized_keys": - return `\u06A9\u0644\u06CC\u062F${issue3.keys.length > 1 ? "\u0647\u0627\u06CC" : ""} \u0646\u0627\u0634\u0646\u0627\u0633: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue3.origin}`; - case "invalid_union": - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - case "invalid_element": - return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue3.origin}`; - default: - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - } - }; -}; -function fa_default() { - return { - localeError: error12() - }; -} - -// node_modules/zod/v4/locales/fi.js -var error13 = () => { - const Sizable = { - string: { unit: "merkki\xE4", subject: "merkkijonon" }, - file: { unit: "tavua", subject: "tiedoston" }, - array: { unit: "alkiota", subject: "listan" }, - set: { unit: "alkiota", subject: "joukon" }, - number: { unit: "", subject: "luvun" }, - bigint: { unit: "", subject: "suuren kokonaisluvun" }, - int: { unit: "", subject: "kokonaisluvun" }, - date: { unit: "", subject: "p\xE4iv\xE4m\xE4\xE4r\xE4n" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "s\xE4\xE4nn\xF6llinen lauseke", - email: "s\xE4hk\xF6postiosoite", - url: "URL-osoite", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-aikaleima", - date: "ISO-p\xE4iv\xE4m\xE4\xE4r\xE4", - time: "ISO-aika", - duration: "ISO-kesto", - ipv4: "IPv4-osoite", - ipv6: "IPv6-osoite", - cidrv4: "IPv4-alue", - cidrv6: "IPv6-alue", - base64: "base64-koodattu merkkijono", - base64url: "base64url-koodattu merkkijono", - json_string: "JSON-merkkijono", - e164: "E.164-luku", - jwt: "JWT", - template_literal: "templaattimerkkijono" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Virheellinen tyyppi: odotettiin instanceof ${issue3.expected}, oli ${received}`; - } - return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Virheellinen sy\xF6te: t\xE4ytyy olla ${stringifyPrimitive(issue3.values[0])}`; - return `Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Liian suuri: ${sizing.subject} t\xE4ytyy olla ${adj}${issue3.maximum.toString()} ${sizing.unit}`.trim(); - } - return `Liian suuri: arvon t\xE4ytyy olla ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Liian pieni: ${sizing.subject} t\xE4ytyy olla ${adj}${issue3.minimum.toString()} ${sizing.unit}`.trim(); - } - return `Liian pieni: arvon t\xE4ytyy olla ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Virheellinen sy\xF6te: t\xE4ytyy alkaa "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Virheellinen sy\xF6te: t\xE4ytyy loppua "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${_issue.includes}"`; - if (_issue.format === "regex") { - return `Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${_issue.pattern}`; - } - return `Virheellinen ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Virheellinen luku: t\xE4ytyy olla luvun ${issue3.divisor} monikerta`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Tuntemattomat avaimet" : "Tuntematon avain"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return "Virheellinen avain tietueessa"; - case "invalid_union": - return "Virheellinen unioni"; - case "invalid_element": - return "Virheellinen arvo joukossa"; - default: - return `Virheellinen sy\xF6te`; - } - }; -}; -function fi_default() { - return { - localeError: error13() - }; -} - -// node_modules/zod/v4/locales/fr.js -var error14 = () => { - const Sizable = { - string: { unit: "caract\xE8res", verb: "avoir" }, - file: { unit: "octets", verb: "avoir" }, - array: { unit: "\xE9l\xE9ments", verb: "avoir" }, - set: { unit: "\xE9l\xE9ments", verb: "avoir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entr\xE9e", - email: "adresse e-mail", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "date et heure ISO", - date: "date ISO", - time: "heure ISO", - duration: "dur\xE9e ISO", - ipv4: "adresse IPv4", - ipv6: "adresse IPv6", - cidrv4: "plage IPv4", - cidrv6: "plage IPv6", - base64: "cha\xEEne encod\xE9e en base64", - base64url: "cha\xEEne encod\xE9e en base64url", - json_string: "cha\xEEne JSON", - e164: "num\xE9ro E.164", - jwt: "JWT", - template_literal: "entr\xE9e" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombre", - array: "tableau" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entr\xE9e invalide : instanceof ${issue3.expected} attendu, ${received} re\xE7u`; - } - return `Entr\xE9e invalide : ${expected} attendu, ${received} re\xE7u`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entr\xE9e invalide : ${stringifyPrimitive(issue3.values[0])} attendu`; - return `Option invalide : une valeur parmi ${joinValues(issue3.values, "|")} attendue`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Trop grand : ${issue3.origin ?? "valeur"} doit ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\xE9l\xE9ment(s)"}`; - return `Trop grand : ${issue3.origin ?? "valeur"} doit \xEAtre ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Trop petit : ${issue3.origin} doit ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Trop petit : ${issue3.origin} doit \xEAtre ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cha\xEEne invalide : doit correspondre au mod\xE8le ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} invalide`; - } - case "not_multiple_of": - return `Nombre invalide : doit \xEAtre un multiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Cl\xE9${issue3.keys.length > 1 ? "s" : ""} non reconnue${issue3.keys.length > 1 ? "s" : ""} : ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Cl\xE9 invalide dans ${issue3.origin}`; - case "invalid_union": - return "Entr\xE9e invalide"; - case "invalid_element": - return `Valeur invalide dans ${issue3.origin}`; - default: - return `Entr\xE9e invalide`; - } - }; -}; -function fr_default() { - return { - localeError: error14() - }; -} - -// node_modules/zod/v4/locales/fr-CA.js -var error15 = () => { - const Sizable = { - string: { unit: "caract\xE8res", verb: "avoir" }, - file: { unit: "octets", verb: "avoir" }, - array: { unit: "\xE9l\xE9ments", verb: "avoir" }, - set: { unit: "\xE9l\xE9ments", verb: "avoir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entr\xE9e", - email: "adresse courriel", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "date-heure ISO", - date: "date ISO", - time: "heure ISO", - duration: "dur\xE9e ISO", - ipv4: "adresse IPv4", - ipv6: "adresse IPv6", - cidrv4: "plage IPv4", - cidrv6: "plage IPv6", - base64: "cha\xEEne encod\xE9e en base64", - base64url: "cha\xEEne encod\xE9e en base64url", - json_string: "cha\xEEne JSON", - e164: "num\xE9ro E.164", - jwt: "JWT", - template_literal: "entr\xE9e" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entr\xE9e invalide : attendu instanceof ${issue3.expected}, re\xE7u ${received}`; - } - return `Entr\xE9e invalide : attendu ${expected}, re\xE7u ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entr\xE9e invalide : attendu ${stringifyPrimitive(issue3.values[0])}`; - return `Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "\u2264" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Trop grand : attendu que ${issue3.origin ?? "la valeur"} ait ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - return `Trop grand : attendu que ${issue3.origin ?? "la valeur"} soit ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u2265" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Trop petit : attendu que ${issue3.origin} ait ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Trop petit : attendu que ${issue3.origin} soit ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cha\xEEne invalide : doit correspondre au motif ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} invalide`; - } - case "not_multiple_of": - return `Nombre invalide : doit \xEAtre un multiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Cl\xE9${issue3.keys.length > 1 ? "s" : ""} non reconnue${issue3.keys.length > 1 ? "s" : ""} : ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Cl\xE9 invalide dans ${issue3.origin}`; - case "invalid_union": - return "Entr\xE9e invalide"; - case "invalid_element": - return `Valeur invalide dans ${issue3.origin}`; - default: - return `Entr\xE9e invalide`; - } - }; -}; -function fr_CA_default() { - return { - localeError: error15() - }; -} - -// node_modules/zod/v4/locales/he.js -var error16 = () => { - const TypeNames = { - string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" }, - number: { label: "\u05DE\u05E1\u05E4\u05E8", gender: "m" }, - boolean: { label: "\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9", gender: "m" }, - bigint: { label: "BigInt", gender: "m" }, - date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA", gender: "m" }, - array: { label: "\u05DE\u05E2\u05E8\u05DA", gender: "m" }, - object: { label: "\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8", gender: "m" }, - null: { label: "\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)", gender: "m" }, - undefined: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)", gender: "m" }, - symbol: { label: "\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)", gender: "m" }, - function: { label: "\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4", gender: "f" }, - map: { label: "\u05DE\u05E4\u05D4 (Map)", gender: "f" }, - set: { label: "\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)", gender: "f" }, - file: { label: "\u05E7\u05D5\u05D1\u05E5", gender: "m" }, - promise: { label: "Promise", gender: "m" }, - NaN: { label: "NaN", gender: "m" }, - unknown: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2", gender: "m" }, - value: { label: "\u05E2\u05E8\u05DA", gender: "m" } - }; - const Sizable = { - string: { unit: "\u05EA\u05D5\u05D5\u05D9\u05DD", shortLabel: "\u05E7\u05E6\u05E8", longLabel: "\u05D0\u05E8\u05D5\u05DA" }, - file: { unit: "\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - array: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - set: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - number: { unit: "", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" } - // no unit - }; - const typeEntry = (t) => t ? TypeNames[t] : void 0; - const typeLabel = (t) => { - const e = typeEntry(t); - if (e) - return e.label; - return t ?? TypeNames.unknown.label; - }; - const withDefinite = (t) => `\u05D4${typeLabel(t)}`; - const verbFor = (t) => { - const e = typeEntry(t); - const gender = e?.gender ?? "m"; - return gender === "f" ? "\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA" : "\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"; - }; - const getSizing = (origin) => { - if (!origin) - return null; - return Sizable[origin] ?? null; - }; - const FormatDictionary = { - regex: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - email: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC", gender: "f" }, - url: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA", gender: "f" }, - emoji: { label: "\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9", gender: "m" }, - uuid: { label: "UUID", gender: "m" }, - nanoid: { label: "nanoid", gender: "m" }, - guid: { label: "GUID", gender: "m" }, - cuid: { label: "cuid", gender: "m" }, - cuid2: { label: "cuid2", gender: "m" }, - ulid: { label: "ULID", gender: "m" }, - xid: { label: "XID", gender: "m" }, - ksuid: { label: "KSUID", gender: "m" }, - datetime: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO", gender: "m" }, - date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA ISO", gender: "m" }, - time: { label: "\u05D6\u05DE\u05DF ISO", gender: "m" }, - duration: { label: "\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO", gender: "m" }, - ipv4: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv4", gender: "f" }, - ipv6: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv6", gender: "f" }, - cidrv4: { label: "\u05D8\u05D5\u05D5\u05D7 IPv4", gender: "m" }, - cidrv6: { label: "\u05D8\u05D5\u05D5\u05D7 IPv6", gender: "m" }, - base64: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64", gender: "f" }, - base64url: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA", gender: "f" }, - json_string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON", gender: "f" }, - e164: { label: "\u05DE\u05E1\u05E4\u05E8 E.164", gender: "m" }, - jwt: { label: "JWT", gender: "m" }, - ends_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - includes: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - lowercase: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - starts_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - uppercase: { label: "\u05E7\u05DC\u05D8", gender: "m" } - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expectedKey = issue3.expected; - const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel(expectedKey); - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue3.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; - } - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; - } - case "invalid_value": { - if (issue3.values.length === 1) { - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${stringifyPrimitive(issue3.values[0])}`; - } - const stringified = issue3.values.map((v) => stringifyPrimitive(v)); - if (issue3.values.length === 2) { - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`; - } - const lastValue = stringified[stringified.length - 1]; - const restValues = stringified.slice(0, -1).join(", "); - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`; - } - case "too_big": { - const sizing = getSizing(issue3.origin); - const subject = withDefinite(issue3.origin ?? "value"); - if (issue3.origin === "string") { - return `${sizing?.longLabel ?? "\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue3.maximum.toString()} ${sizing?.unit ?? ""} ${issue3.inclusive ? "\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA" : "\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim(); - } - if (issue3.origin === "number") { - const comparison = issue3.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue3.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue3.maximum}`; - return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; - } - if (issue3.origin === "array" || issue3.origin === "set") { - const verb = issue3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; - const comparison = issue3.inclusive ? `${issue3.maximum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA` : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue3.maximum} ${sizing?.unit ?? ""}`; - return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); - } - const adj = issue3.inclusive ? "<=" : "<"; - const be = verbFor(issue3.origin ?? "value"); - if (sizing?.unit) { - return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - } - return `${sizing?.longLabel ?? "\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const sizing = getSizing(issue3.origin); - const subject = withDefinite(issue3.origin ?? "value"); - if (issue3.origin === "string") { - return `${sizing?.shortLabel ?? "\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue3.minimum.toString()} ${sizing?.unit ?? ""} ${issue3.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim(); - } - if (issue3.origin === "number") { - const comparison = issue3.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue3.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue3.minimum}`; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; - } - if (issue3.origin === "array" || issue3.origin === "set") { - const verb = issue3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; - if (issue3.minimum === 1 && issue3.inclusive) { - const singularPhrase = issue3.origin === "set" ? "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3" : "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3"; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`; - } - const comparison = issue3.inclusive ? `${issue3.minimum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8` : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue3.minimum} ${sizing?.unit ?? ""}`; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); - } - const adj = issue3.inclusive ? ">=" : ">"; - const be = verbFor(issue3.origin ?? "value"); - if (sizing?.unit) { - return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `${sizing?.shortLabel ?? "\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`; - const nounEntry = FormatDictionary[_issue.format]; - const noun = nounEntry?.label ?? _issue.format; - const gender = nounEntry?.gender ?? "m"; - const adjective = gender === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF"; - return `${noun} \u05DC\u05D0 ${adjective}`; - } - case "not_multiple_of": - return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue3.divisor}`; - case "unrecognized_keys": - return `\u05DE\u05E4\u05EA\u05D7${issue3.keys.length > 1 ? "\u05D5\u05EA" : ""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue3.keys.length > 1 ? "\u05D9\u05DD" : "\u05D4"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": { - return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`; - } - case "invalid_union": - return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"; - case "invalid_element": { - const place = withDefinite(issue3.origin ?? "array"); - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`; - } - default: - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`; - } - }; -}; -function he_default() { - return { - localeError: error16() - }; -} - -// node_modules/zod/v4/locales/hu.js -var error17 = () => { - const Sizable = { - string: { unit: "karakter", verb: "legyen" }, - file: { unit: "byte", verb: "legyen" }, - array: { unit: "elem", verb: "legyen" }, - set: { unit: "elem", verb: "legyen" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "bemenet", - email: "email c\xEDm", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO id\u0151b\xE9lyeg", - date: "ISO d\xE1tum", - time: "ISO id\u0151", - duration: "ISO id\u0151intervallum", - ipv4: "IPv4 c\xEDm", - ipv6: "IPv6 c\xEDm", - cidrv4: "IPv4 tartom\xE1ny", - cidrv6: "IPv6 tartom\xE1ny", - base64: "base64-k\xF3dolt string", - base64url: "base64url-k\xF3dolt string", - json_string: "JSON string", - e164: "E.164 sz\xE1m", - jwt: "JWT", - template_literal: "bemenet" - }; - const TypeDictionary = { - nan: "NaN", - number: "sz\xE1m", - array: "t\xF6mb" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${issue3.expected}, a kapott \xE9rt\xE9k ${received}`; - } - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${expected}, a kapott \xE9rt\xE9k ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${stringifyPrimitive(issue3.values[0])}`; - return `\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `T\xFAl nagy: ${issue3.origin ?? "\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elem"}`; - return `T\xFAl nagy: a bemeneti \xE9rt\xE9k ${issue3.origin ?? "\xE9rt\xE9k"} t\xFAl nagy: ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue3.origin} m\xE9rete t\xFAl kicsi ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue3.origin} t\xFAl kicsi ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\xC9rv\xE9nytelen string: "${_issue.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`; - if (_issue.format === "ends_with") - return `\xC9rv\xE9nytelen string: "${_issue.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`; - if (_issue.format === "includes") - return `\xC9rv\xE9nytelen string: "${_issue.includes}" \xE9rt\xE9ket kell tartalmaznia`; - if (_issue.format === "regex") - return `\xC9rv\xE9nytelen string: ${_issue.pattern} mint\xE1nak kell megfelelnie`; - return `\xC9rv\xE9nytelen ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\xC9rv\xE9nytelen sz\xE1m: ${issue3.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`; - case "unrecognized_keys": - return `Ismeretlen kulcs${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\xC9rv\xE9nytelen kulcs ${issue3.origin}`; - case "invalid_union": - return "\xC9rv\xE9nytelen bemenet"; - case "invalid_element": - return `\xC9rv\xE9nytelen \xE9rt\xE9k: ${issue3.origin}`; - default: - return `\xC9rv\xE9nytelen bemenet`; - } - }; -}; -function hu_default() { - return { - localeError: error17() - }; -} - -// node_modules/zod/v4/locales/hy.js -function getArmenianPlural(count, one, many) { - return Math.abs(count) === 1 ? one : many; -} -function withDefiniteArticle(word) { - if (!word) - return ""; - const vowels = ["\u0561", "\u0565", "\u0568", "\u056B", "\u0578", "\u0578\u0582", "\u0585"]; - const lastChar = word[word.length - 1]; - return word + (vowels.includes(lastChar) ? "\u0576" : "\u0568"); -} -var error18 = () => { - const Sizable = { - string: { - unit: { - one: "\u0576\u0577\u0561\u0576", - many: "\u0576\u0577\u0561\u0576\u0576\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - file: { - unit: { - one: "\u0562\u0561\u0575\u0569", - many: "\u0562\u0561\u0575\u0569\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - array: { - unit: { - one: "\u057F\u0561\u0580\u0580", - many: "\u057F\u0561\u0580\u0580\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - set: { - unit: { - one: "\u057F\u0561\u0580\u0580", - many: "\u057F\u0561\u0580\u0580\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0574\u0578\u0582\u057F\u0584", - email: "\u0567\u056C. \u0570\u0561\u057D\u0581\u0565", - url: "URL", - emoji: "\u0567\u0574\u0578\u057B\u056B", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574", - date: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E", - time: "ISO \u056A\u0561\u0574", - duration: "ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576", - ipv4: "IPv4 \u0570\u0561\u057D\u0581\u0565", - ipv6: "IPv6 \u0570\u0561\u057D\u0581\u0565", - cidrv4: "IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", - cidrv6: "IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", - base64: "base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", - base64url: "base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", - json_string: "JSON \u057F\u0578\u0572", - e164: "E.164 \u0570\u0561\u0574\u0561\u0580", - jwt: "JWT", - template_literal: "\u0574\u0578\u0582\u057F\u0584" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0569\u056B\u057E", - array: "\u0566\u0561\u0576\u0563\u057E\u0561\u056E" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue3.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; - } - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${stringifyPrimitive(issue3.values[1])}`; - return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many); - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue3.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue3.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many); - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue3.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue3.origin)} \u056C\u056B\u0576\u056B ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${_issue.prefix}"-\u0578\u057E`; - if (_issue.format === "ends_with") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${_issue.suffix}"-\u0578\u057E`; - if (_issue.format === "includes") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`; - return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue3.divisor}-\u056B`; - case "unrecognized_keys": - return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue3.keys.length > 1 ? "\u0576\u0565\u0580" : ""}. ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue3.origin)}-\u0578\u0582\u0574`; - case "invalid_union": - return "\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"; - case "invalid_element": - return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue3.origin)}-\u0578\u0582\u0574`; - default: - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`; - } - }; -}; -function hy_default() { - return { - localeError: error18() - }; -} - -// node_modules/zod/v4/locales/id.js -var error19 = () => { - const Sizable = { - string: { unit: "karakter", verb: "memiliki" }, - file: { unit: "byte", verb: "memiliki" }, - array: { unit: "item", verb: "memiliki" }, - set: { unit: "item", verb: "memiliki" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "alamat email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "tanggal dan waktu format ISO", - date: "tanggal format ISO", - time: "jam format ISO", - duration: "durasi format ISO", - ipv4: "alamat IPv4", - ipv6: "alamat IPv6", - cidrv4: "rentang alamat IPv4", - cidrv6: "rentang alamat IPv6", - base64: "string dengan enkode base64", - base64url: "string dengan enkode base64url", - json_string: "string JSON", - e164: "angka E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input tidak valid: diharapkan instanceof ${issue3.expected}, diterima ${received}`; - } - return `Input tidak valid: diharapkan ${expected}, diterima ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input tidak valid: diharapkan ${stringifyPrimitive(issue3.values[0])}`; - return `Pilihan tidak valid: diharapkan salah satu dari ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Terlalu besar: diharapkan ${issue3.origin ?? "value"} memiliki ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elemen"}`; - return `Terlalu besar: diharapkan ${issue3.origin ?? "value"} menjadi ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Terlalu kecil: diharapkan ${issue3.origin} memiliki ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Terlalu kecil: diharapkan ${issue3.origin} menjadi ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `String tidak valid: harus dimulai dengan "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `String tidak valid: harus berakhir dengan "${_issue.suffix}"`; - if (_issue.format === "includes") - return `String tidak valid: harus menyertakan "${_issue.includes}"`; - if (_issue.format === "regex") - return `String tidak valid: harus sesuai pola ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} tidak valid`; - } - case "not_multiple_of": - return `Angka tidak valid: harus kelipatan dari ${issue3.divisor}`; - case "unrecognized_keys": - return `Kunci tidak dikenali ${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Kunci tidak valid di ${issue3.origin}`; - case "invalid_union": - return "Input tidak valid"; - case "invalid_element": - return `Nilai tidak valid di ${issue3.origin}`; - default: - return `Input tidak valid`; - } - }; -}; -function id_default() { - return { - localeError: error19() - }; -} - -// node_modules/zod/v4/locales/is.js -var error20 = () => { - const Sizable = { - string: { unit: "stafi", verb: "a\xF0 hafa" }, - file: { unit: "b\xE6ti", verb: "a\xF0 hafa" }, - array: { unit: "hluti", verb: "a\xF0 hafa" }, - set: { unit: "hluti", verb: "a\xF0 hafa" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "gildi", - email: "netfang", - url: "vefsl\xF3\xF0", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dagsetning og t\xEDmi", - date: "ISO dagsetning", - time: "ISO t\xEDmi", - duration: "ISO t\xEDmalengd", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded strengur", - base64url: "base64url-encoded strengur", - json_string: "JSON strengur", - e164: "E.164 t\xF6lugildi", - jwt: "JWT", - template_literal: "gildi" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\xFAmer", - array: "fylki" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera instanceof ${issue3.expected}`; - } - return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera ${expected}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Rangt gildi: gert r\xE1\xF0 fyrir ${stringifyPrimitive(issue3.values[0])}`; - return `\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin ?? "gildi"} hafi ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "hluti"}`; - return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin ?? "gildi"} s\xE9 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin} hafi ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin} s\xE9 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${_issue.includes}"`; - if (_issue.format === "regex") - return `\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${_issue.pattern}`; - return `Rangt ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${issue3.divisor}`; - case "unrecognized_keys": - return `\xD3\xFEekkt ${issue3.keys.length > 1 ? "ir lyklar" : "ur lykill"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Rangur lykill \xED ${issue3.origin}`; - case "invalid_union": - return "Rangt gildi"; - case "invalid_element": - return `Rangt gildi \xED ${issue3.origin}`; - default: - return `Rangt gildi`; - } - }; -}; -function is_default() { - return { - localeError: error20() - }; -} - -// node_modules/zod/v4/locales/it.js -var error21 = () => { - const Sizable = { - string: { unit: "caratteri", verb: "avere" }, - file: { unit: "byte", verb: "avere" }, - array: { unit: "elementi", verb: "avere" }, - set: { unit: "elementi", verb: "avere" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "indirizzo email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data e ora ISO", - date: "data ISO", - time: "ora ISO", - duration: "durata ISO", - ipv4: "indirizzo IPv4", - ipv6: "indirizzo IPv6", - cidrv4: "intervallo IPv4", - cidrv6: "intervallo IPv6", - base64: "stringa codificata in base64", - base64url: "URL codificata in base64", - json_string: "stringa JSON", - e164: "numero E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "numero", - array: "vettore" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input non valido: atteso instanceof ${issue3.expected}, ricevuto ${received}`; - } - return `Input non valido: atteso ${expected}, ricevuto ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input non valido: atteso ${stringifyPrimitive(issue3.values[0])}`; - return `Opzione non valida: atteso uno tra ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Troppo grande: ${issue3.origin ?? "valore"} deve avere ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementi"}`; - return `Troppo grande: ${issue3.origin ?? "valore"} deve essere ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Troppo piccolo: ${issue3.origin} deve avere ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Troppo piccolo: ${issue3.origin} deve essere ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Stringa non valida: deve iniziare con "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Stringa non valida: deve terminare con "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Stringa non valida: deve includere "${_issue.includes}"`; - if (_issue.format === "regex") - return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Numero non valido: deve essere un multiplo di ${issue3.divisor}`; - case "unrecognized_keys": - return `Chiav${issue3.keys.length > 1 ? "i" : "e"} non riconosciut${issue3.keys.length > 1 ? "e" : "a"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Chiave non valida in ${issue3.origin}`; - case "invalid_union": - return "Input non valido"; - case "invalid_element": - return `Valore non valido in ${issue3.origin}`; - default: - return `Input non valido`; - } - }; -}; -function it_default() { - return { - localeError: error21() - }; -} - -// node_modules/zod/v4/locales/ja.js -var error22 = () => { - const Sizable = { - string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" }, - file: { unit: "\u30D0\u30A4\u30C8", verb: "\u3067\u3042\u308B" }, - array: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" }, - set: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u5165\u529B\u5024", - email: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9", - url: "URL", - emoji: "\u7D75\u6587\u5B57", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO\u65E5\u6642", - date: "ISO\u65E5\u4ED8", - time: "ISO\u6642\u523B", - duration: "ISO\u671F\u9593", - ipv4: "IPv4\u30A2\u30C9\u30EC\u30B9", - ipv6: "IPv6\u30A2\u30C9\u30EC\u30B9", - cidrv4: "IPv4\u7BC4\u56F2", - cidrv6: "IPv6\u7BC4\u56F2", - base64: "base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", - base64url: "base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", - json_string: "JSON\u6587\u5B57\u5217", - e164: "E.164\u756A\u53F7", - jwt: "JWT", - template_literal: "\u5165\u529B\u5024" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u6570\u5024", - array: "\u914D\u5217" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue3.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; - } - return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u7121\u52B9\u306A\u5165\u529B: ${stringifyPrimitive(issue3.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`; - return `\u7121\u52B9\u306A\u9078\u629E: ${joinValues(issue3.values, "\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - case "too_big": { - const adj = issue3.inclusive ? "\u4EE5\u4E0B\u3067\u3042\u308B" : "\u3088\u308A\u5C0F\u3055\u3044"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue3.origin ?? "\u5024"}\u306F${issue3.maximum.toString()}${sizing.unit ?? "\u8981\u7D20"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue3.origin ?? "\u5024"}\u306F${issue3.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u4EE5\u4E0A\u3067\u3042\u308B" : "\u3088\u308A\u5927\u304D\u3044"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue3.origin}\u306F${issue3.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue3.origin}\u306F${issue3.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "ends_with") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "includes") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "regex") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u7121\u52B9\u306A\u6570\u5024: ${issue3.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - case "unrecognized_keys": - return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue3.keys.length > 1 ? "\u7FA4" : ""}: ${joinValues(issue3.keys, "\u3001")}`; - case "invalid_key": - return `${issue3.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`; - case "invalid_union": - return "\u7121\u52B9\u306A\u5165\u529B"; - case "invalid_element": - return `${issue3.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`; - default: - return `\u7121\u52B9\u306A\u5165\u529B`; - } - }; -}; -function ja_default() { - return { - localeError: error22() - }; -} - -// node_modules/zod/v4/locales/ka.js -var error23 = () => { - const Sizable = { - string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - file: { unit: "\u10D1\u10D0\u10D8\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - array: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - set: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0", - email: "\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - url: "URL", - emoji: "\u10D4\u10DB\u10DD\u10EF\u10D8", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD", - date: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8", - time: "\u10D3\u10E0\u10DD", - duration: "\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0", - ipv4: "IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - ipv6: "IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - cidrv4: "IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", - cidrv6: "IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", - base64: "base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - base64url: "base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - json_string: "JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - e164: "E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8", - jwt: "JWT", - template_literal: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8", - string: "\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - boolean: "\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8", - function: "\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0", - array: "\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue3.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; - } - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${stringifyPrimitive(issue3.values[0])}`; - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${joinValues(issue3.values, "|")}-\u10D3\u10D0\u10DC`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.prefix}"-\u10D8\u10D7`; - } - if (_issue.format === "ends_with") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.suffix}"-\u10D8\u10D7`; - if (_issue.format === "includes") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${_issue.includes}"-\u10E1`; - if (_issue.format === "regex") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`; - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue3.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`; - case "unrecognized_keys": - return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue3.keys.length > 1 ? "\u10D4\u10D1\u10D8" : "\u10D8"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue3.origin}-\u10E8\u10D8`; - case "invalid_union": - return "\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"; - case "invalid_element": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue3.origin}-\u10E8\u10D8`; - default: - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`; - } - }; -}; -function ka_default() { - return { - localeError: error23() - }; -} - -// node_modules/zod/v4/locales/km.js -var error24 = () => { - const Sizable = { - string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - file: { unit: "\u1794\u17C3", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - array: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - set: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B", - email: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B", - url: "URL", - emoji: "\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO", - date: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO", - time: "\u1798\u17C9\u17C4\u1784 ISO", - duration: "\u179A\u1799\u17C8\u1796\u17C1\u179B ISO", - ipv4: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", - ipv6: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", - cidrv4: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", - cidrv6: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", - base64: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64", - base64url: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url", - json_string: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON", - e164: "\u179B\u17C1\u1781 E.164", - jwt: "JWT", - template_literal: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u179B\u17C1\u1781", - array: "\u17A2\u17B6\u179A\u17C1 (Array)", - null: "\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue3.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; - } - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${stringifyPrimitive(issue3.values[0])}`; - return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u1792\u17B6\u178F\u17BB"}`; - return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin} ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin} ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`; - return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue3.divisor}`; - case "unrecognized_keys": - return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue3.origin}`; - case "invalid_union": - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; - case "invalid_element": - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue3.origin}`; - default: - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; - } - }; -}; -function km_default() { - return { - localeError: error24() - }; -} - -// node_modules/zod/v4/locales/kh.js -function kh_default() { - return km_default(); -} - -// node_modules/zod/v4/locales/ko.js -var error25 = () => { - const Sizable = { - string: { unit: "\uBB38\uC790", verb: "to have" }, - file: { unit: "\uBC14\uC774\uD2B8", verb: "to have" }, - array: { unit: "\uAC1C", verb: "to have" }, - set: { unit: "\uAC1C", verb: "to have" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\uC785\uB825", - email: "\uC774\uBA54\uC77C \uC8FC\uC18C", - url: "URL", - emoji: "\uC774\uBAA8\uC9C0", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \uB0A0\uC9DC\uC2DC\uAC04", - date: "ISO \uB0A0\uC9DC", - time: "ISO \uC2DC\uAC04", - duration: "ISO \uAE30\uAC04", - ipv4: "IPv4 \uC8FC\uC18C", - ipv6: "IPv6 \uC8FC\uC18C", - cidrv4: "IPv4 \uBC94\uC704", - cidrv6: "IPv6 \uBC94\uC704", - base64: "base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", - base64url: "base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", - json_string: "JSON \uBB38\uC790\uC5F4", - e164: "E.164 \uBC88\uD638", - jwt: "JWT", - template_literal: "\uC785\uB825" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue3.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; - } - return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${stringifyPrimitive(issue3.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`; - return `\uC798\uBABB\uB41C \uC635\uC158: ${joinValues(issue3.values, "\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`; - case "too_big": { - const adj = issue3.inclusive ? "\uC774\uD558" : "\uBBF8\uB9CC"; - const suffix = adj === "\uBBF8\uB9CC" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; - const sizing = getSizing(issue3.origin); - const unit = sizing?.unit ?? "\uC694\uC18C"; - if (sizing) - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue3.maximum.toString()}${unit} ${adj}${suffix}`; - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue3.maximum.toString()} ${adj}${suffix}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\uC774\uC0C1" : "\uCD08\uACFC"; - const suffix = adj === "\uC774\uC0C1" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; - const sizing = getSizing(issue3.origin); - const unit = sizing?.unit ?? "\uC694\uC18C"; - if (sizing) { - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue3.minimum.toString()}${unit} ${adj}${suffix}`; - } - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue3.minimum.toString()} ${adj}${suffix}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`; - } - if (_issue.format === "ends_with") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`; - if (_issue.format === "includes") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`; - if (_issue.format === "regex") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`; - return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue3.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`; - case "unrecognized_keys": - return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\uC798\uBABB\uB41C \uD0A4: ${issue3.origin}`; - case "invalid_union": - return `\uC798\uBABB\uB41C \uC785\uB825`; - case "invalid_element": - return `\uC798\uBABB\uB41C \uAC12: ${issue3.origin}`; - default: - return `\uC798\uBABB\uB41C \uC785\uB825`; - } - }; -}; -function ko_default() { - return { - localeError: error25() - }; -} - -// node_modules/zod/v4/locales/lt.js -var capitalizeFirstCharacter = (text) => { - return text.charAt(0).toUpperCase() + text.slice(1); -}; -function getUnitTypeFromNumber(number7) { - const abs = Math.abs(number7); - const last = abs % 10; - const last2 = abs % 100; - if (last2 >= 11 && last2 <= 19 || last === 0) - return "many"; - if (last === 1) - return "one"; - return "few"; -} -var error26 = () => { - const Sizable = { - string: { - unit: { - one: "simbolis", - few: "simboliai", - many: "simboli\u0173" - }, - verb: { - smaller: { - inclusive: "turi b\u016Bti ne ilgesn\u0117 kaip", - notInclusive: "turi b\u016Bti trumpesn\u0117 kaip" - }, - bigger: { - inclusive: "turi b\u016Bti ne trumpesn\u0117 kaip", - notInclusive: "turi b\u016Bti ilgesn\u0117 kaip" - } - } - }, - file: { - unit: { - one: "baitas", - few: "baitai", - many: "bait\u0173" - }, - verb: { - smaller: { - inclusive: "turi b\u016Bti ne didesnis kaip", - notInclusive: "turi b\u016Bti ma\u017Eesnis kaip" - }, - bigger: { - inclusive: "turi b\u016Bti ne ma\u017Eesnis kaip", - notInclusive: "turi b\u016Bti didesnis kaip" - } - } - }, - array: { - unit: { - one: "element\u0105", - few: "elementus", - many: "element\u0173" - }, - verb: { - smaller: { - inclusive: "turi tur\u0117ti ne daugiau kaip", - notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" - }, - bigger: { - inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", - notInclusive: "turi tur\u0117ti daugiau kaip" - } - } - }, - set: { - unit: { - one: "element\u0105", - few: "elementus", - many: "element\u0173" - }, - verb: { - smaller: { - inclusive: "turi tur\u0117ti ne daugiau kaip", - notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" - }, - bigger: { - inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", - notInclusive: "turi tur\u0117ti daugiau kaip" - } - } - } - }; - function getSizing(origin, unitType, inclusive, targetShouldBe) { - const result = Sizable[origin] ?? null; - if (result === null) - return result; - return { - unit: result.unit[unitType], - verb: result.verb[targetShouldBe][inclusive ? "inclusive" : "notInclusive"] - }; - } - const FormatDictionary = { - regex: "\u012Fvestis", - email: "el. pa\u0161to adresas", - url: "URL", - emoji: "jaustukas", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO data ir laikas", - date: "ISO data", - time: "ISO laikas", - duration: "ISO trukm\u0117", - ipv4: "IPv4 adresas", - ipv6: "IPv6 adresas", - cidrv4: "IPv4 tinklo prefiksas (CIDR)", - cidrv6: "IPv6 tinklo prefiksas (CIDR)", - base64: "base64 u\u017Ekoduota eilut\u0117", - base64url: "base64url u\u017Ekoduota eilut\u0117", - json_string: "JSON eilut\u0117", - e164: "E.164 numeris", - jwt: "JWT", - template_literal: "\u012Fvestis" - }; - const TypeDictionary = { - nan: "NaN", - number: "skai\u010Dius", - bigint: "sveikasis skai\u010Dius", - string: "eilut\u0117", - boolean: "login\u0117 reik\u0161m\u0117", - undefined: "neapibr\u0117\u017Eta reik\u0161m\u0117", - function: "funkcija", - symbol: "simbolis", - array: "masyvas", - object: "objektas", - null: "nulin\u0117 reik\u0161m\u0117" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue3.expected}`; - } - return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Privalo b\u016Bti ${stringifyPrimitive(issue3.values[0])}`; - return `Privalo b\u016Bti vienas i\u0161 ${joinValues(issue3.values, "|")} pasirinkim\u0173`; - case "too_big": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - const sizing = getSizing(issue3.origin, getUnitTypeFromNumber(Number(issue3.maximum)), issue3.inclusive ?? false, "smaller"); - if (sizing?.verb) - return `${capitalizeFirstCharacter(origin ?? issue3.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue3.maximum.toString()} ${sizing.unit ?? "element\u0173"}`; - const adj = issue3.inclusive ? "ne didesnis kaip" : "ma\u017Eesnis kaip"; - return `${capitalizeFirstCharacter(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue3.maximum.toString()} ${sizing?.unit}`; - } - case "too_small": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - const sizing = getSizing(issue3.origin, getUnitTypeFromNumber(Number(issue3.minimum)), issue3.inclusive ?? false, "bigger"); - if (sizing?.verb) - return `${capitalizeFirstCharacter(origin ?? issue3.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue3.minimum.toString()} ${sizing.unit ?? "element\u0173"}`; - const adj = issue3.inclusive ? "ne ma\u017Eesnis kaip" : "didesnis kaip"; - return `${capitalizeFirstCharacter(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue3.minimum.toString()} ${sizing?.unit}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Eilut\u0117 privalo prasid\u0117ti "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Eilut\u0117 privalo pasibaigti "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Eilut\u0117 privalo \u012Ftraukti "${_issue.includes}"`; - if (_issue.format === "regex") - return `Eilut\u0117 privalo atitikti ${_issue.pattern}`; - return `Neteisingas ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Skai\u010Dius privalo b\u016Bti ${issue3.divisor} kartotinis.`; - case "unrecognized_keys": - return `Neatpa\u017Eint${issue3.keys.length > 1 ? "i" : "as"} rakt${issue3.keys.length > 1 ? "ai" : "as"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return "Rastas klaidingas raktas"; - case "invalid_union": - return "Klaidinga \u012Fvestis"; - case "invalid_element": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - return `${capitalizeFirstCharacter(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`; - } - default: - return "Klaidinga \u012Fvestis"; - } - }; -}; -function lt_default() { - return { - localeError: error26() - }; -} - -// node_modules/zod/v4/locales/mk.js -var error27 = () => { - const Sizable = { - string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - file: { unit: "\u0431\u0430\u0458\u0442\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - array: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - set: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u043D\u0435\u0441", - email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430", - url: "URL", - emoji: "\u0435\u043C\u043E\u045F\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435", - date: "ISO \u0434\u0430\u0442\u0443\u043C", - time: "ISO \u0432\u0440\u0435\u043C\u0435", - duration: "ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441\u0430", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441\u0430", - cidrv4: "IPv4 \u043E\u043F\u0441\u0435\u0433", - cidrv6: "IPv6 \u043E\u043F\u0441\u0435\u0433", - base64: "base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", - base64url: "base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", - json_string: "JSON \u043D\u0438\u0437\u0430", - e164: "E.164 \u0431\u0440\u043E\u0458", - jwt: "JWT", - template_literal: "\u0432\u043D\u0435\u0441" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0431\u0440\u043E\u0458", - array: "\u043D\u0438\u0437\u0430" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue3.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; - } - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Invalid input: expected ${stringifyPrimitive(issue3.values[0])}`; - return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`; - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438" : "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue3.origin}`; - case "invalid_union": - return "\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"; - case "invalid_element": - return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue3.origin}`; - default: - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`; - } - }; -}; -function mk_default() { - return { - localeError: error27() - }; -} - -// node_modules/zod/v4/locales/ms.js -var error28 = () => { - const Sizable = { - string: { unit: "aksara", verb: "mempunyai" }, - file: { unit: "bait", verb: "mempunyai" }, - array: { unit: "elemen", verb: "mempunyai" }, - set: { unit: "elemen", verb: "mempunyai" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "alamat e-mel", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "tarikh masa ISO", - date: "tarikh ISO", - time: "masa ISO", - duration: "tempoh ISO", - ipv4: "alamat IPv4", - ipv6: "alamat IPv6", - cidrv4: "julat IPv4", - cidrv6: "julat IPv6", - base64: "string dikodkan base64", - base64url: "string dikodkan base64url", - json_string: "string JSON", - e164: "nombor E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombor" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input tidak sah: dijangka instanceof ${issue3.expected}, diterima ${received}`; - } - return `Input tidak sah: dijangka ${expected}, diterima ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input tidak sah: dijangka ${stringifyPrimitive(issue3.values[0])}`; - return `Pilihan tidak sah: dijangka salah satu daripada ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Terlalu besar: dijangka ${issue3.origin ?? "nilai"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elemen"}`; - return `Terlalu besar: dijangka ${issue3.origin ?? "nilai"} adalah ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Terlalu kecil: dijangka ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Terlalu kecil: dijangka ${issue3.origin} adalah ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `String tidak sah: mesti bermula dengan "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `String tidak sah: mesti berakhir dengan "${_issue.suffix}"`; - if (_issue.format === "includes") - return `String tidak sah: mesti mengandungi "${_issue.includes}"`; - if (_issue.format === "regex") - return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} tidak sah`; - } - case "not_multiple_of": - return `Nombor tidak sah: perlu gandaan ${issue3.divisor}`; - case "unrecognized_keys": - return `Kunci tidak dikenali: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Kunci tidak sah dalam ${issue3.origin}`; - case "invalid_union": - return "Input tidak sah"; - case "invalid_element": - return `Nilai tidak sah dalam ${issue3.origin}`; - default: - return `Input tidak sah`; - } - }; -}; -function ms_default() { - return { - localeError: error28() - }; -} - -// node_modules/zod/v4/locales/nl.js -var error29 = () => { - const Sizable = { - string: { unit: "tekens", verb: "heeft" }, - file: { unit: "bytes", verb: "heeft" }, - array: { unit: "elementen", verb: "heeft" }, - set: { unit: "elementen", verb: "heeft" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "invoer", - email: "emailadres", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datum en tijd", - date: "ISO datum", - time: "ISO tijd", - duration: "ISO duur", - ipv4: "IPv4-adres", - ipv6: "IPv6-adres", - cidrv4: "IPv4-bereik", - cidrv6: "IPv6-bereik", - base64: "base64-gecodeerde tekst", - base64url: "base64 URL-gecodeerde tekst", - json_string: "JSON string", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "invoer" - }; - const TypeDictionary = { - nan: "NaN", - number: "getal" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ongeldige invoer: verwacht instanceof ${issue3.expected}, ontving ${received}`; - } - return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ongeldige invoer: verwacht ${stringifyPrimitive(issue3.values[0])}`; - return `Ongeldige optie: verwacht \xE9\xE9n van ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const longName = issue3.origin === "date" ? "laat" : issue3.origin === "string" ? "lang" : "groot"; - if (sizing) - return `Te ${longName}: verwacht dat ${issue3.origin ?? "waarde"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementen"} ${sizing.verb}`; - return `Te ${longName}: verwacht dat ${issue3.origin ?? "waarde"} ${adj}${issue3.maximum.toString()} is`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const shortName = issue3.origin === "date" ? "vroeg" : issue3.origin === "string" ? "kort" : "klein"; - if (sizing) { - return `Te ${shortName}: verwacht dat ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} ${sizing.verb}`; - } - return `Te ${shortName}: verwacht dat ${issue3.origin} ${adj}${issue3.minimum.toString()} is`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Ongeldige tekst: moet met "${_issue.prefix}" beginnen`; - } - if (_issue.format === "ends_with") - return `Ongeldige tekst: moet op "${_issue.suffix}" eindigen`; - if (_issue.format === "includes") - return `Ongeldige tekst: moet "${_issue.includes}" bevatten`; - if (_issue.format === "regex") - return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`; - return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ongeldig getal: moet een veelvoud van ${issue3.divisor} zijn`; - case "unrecognized_keys": - return `Onbekende key${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Ongeldige key in ${issue3.origin}`; - case "invalid_union": - return "Ongeldige invoer"; - case "invalid_element": - return `Ongeldige waarde in ${issue3.origin}`; - default: - return `Ongeldige invoer`; - } - }; -}; -function nl_default() { - return { - localeError: error29() - }; -} - -// node_modules/zod/v4/locales/no.js -var error30 = () => { - const Sizable = { - string: { unit: "tegn", verb: "\xE5 ha" }, - file: { unit: "bytes", verb: "\xE5 ha" }, - array: { unit: "elementer", verb: "\xE5 inneholde" }, - set: { unit: "elementer", verb: "\xE5 inneholde" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "e-postadresse", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dato- og klokkeslett", - date: "ISO-dato", - time: "ISO-klokkeslett", - duration: "ISO-varighet", - ipv4: "IPv4-omr\xE5de", - ipv6: "IPv6-omr\xE5de", - cidrv4: "IPv4-spekter", - cidrv6: "IPv6-spekter", - base64: "base64-enkodet streng", - base64url: "base64url-enkodet streng", - json_string: "JSON-streng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "tall", - array: "liste" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ugyldig input: forventet instanceof ${issue3.expected}, fikk ${received}`; - } - return `Ugyldig input: forventet ${expected}, fikk ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ugyldig verdi: forventet ${stringifyPrimitive(issue3.values[0])}`; - return `Ugyldig valg: forventet en av ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `For stor(t): forventet ${issue3.origin ?? "value"} til \xE5 ha ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementer"}`; - return `For stor(t): forventet ${issue3.origin ?? "value"} til \xE5 ha ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `For lite(n): forventet ${issue3.origin} til \xE5 ha ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `For lite(n): forventet ${issue3.origin} til \xE5 ha ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Ugyldig streng: m\xE5 ende med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ugyldig streng: m\xE5 inneholde "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`; - return `Ugyldig ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ugyldig tall: m\xE5 v\xE6re et multiplum av ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ukjente n\xF8kler" : "Ukjent n\xF8kkel"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Ugyldig n\xF8kkel i ${issue3.origin}`; - case "invalid_union": - return "Ugyldig input"; - case "invalid_element": - return `Ugyldig verdi i ${issue3.origin}`; - default: - return `Ugyldig input`; - } - }; -}; -function no_default() { - return { - localeError: error30() - }; -} - -// node_modules/zod/v4/locales/ota.js -var error31 = () => { - const Sizable = { - string: { unit: "harf", verb: "olmal\u0131d\u0131r" }, - file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, - array: { unit: "unsur", verb: "olmal\u0131d\u0131r" }, - set: { unit: "unsur", verb: "olmal\u0131d\u0131r" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "giren", - email: "epostag\xE2h", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO heng\xE2m\u0131", - date: "ISO tarihi", - time: "ISO zaman\u0131", - duration: "ISO m\xFCddeti", - ipv4: "IPv4 ni\u015F\xE2n\u0131", - ipv6: "IPv6 ni\u015F\xE2n\u0131", - cidrv4: "IPv4 menzili", - cidrv6: "IPv6 menzili", - base64: "base64-\u015Fifreli metin", - base64url: "base64url-\u015Fifreli metin", - json_string: "JSON metin", - e164: "E.164 say\u0131s\u0131", - jwt: "JWT", - template_literal: "giren" - }; - const TypeDictionary = { - nan: "NaN", - number: "numara", - array: "saf", - null: "gayb" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `F\xE2sit giren: umulan instanceof ${issue3.expected}, al\u0131nan ${received}`; - } - return `F\xE2sit giren: umulan ${expected}, al\u0131nan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `F\xE2sit giren: umulan ${stringifyPrimitive(issue3.values[0])}`; - return `F\xE2sit tercih: m\xFBteberler ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Fazla b\xFCy\xFCk: ${issue3.origin ?? "value"}, ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elements"} sahip olmal\u0131yd\u0131.`; - return `Fazla b\xFCy\xFCk: ${issue3.origin ?? "value"}, ${adj}${issue3.maximum.toString()} olmal\u0131yd\u0131.`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Fazla k\xFC\xE7\xFCk: ${issue3.origin}, ${adj}${issue3.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`; - } - return `Fazla k\xFC\xE7\xFCk: ${issue3.origin}, ${adj}${issue3.minimum.toString()} olmal\u0131yd\u0131.`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `F\xE2sit metin: "${_issue.prefix}" ile ba\u015Flamal\u0131.`; - if (_issue.format === "ends_with") - return `F\xE2sit metin: "${_issue.suffix}" ile bitmeli.`; - if (_issue.format === "includes") - return `F\xE2sit metin: "${_issue.includes}" ihtiv\xE2 etmeli.`; - if (_issue.format === "regex") - return `F\xE2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`; - return `F\xE2sit ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `F\xE2sit say\u0131: ${issue3.divisor} kat\u0131 olmal\u0131yd\u0131.`; - case "unrecognized_keys": - return `Tan\u0131nmayan anahtar ${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} i\xE7in tan\u0131nmayan anahtar var.`; - case "invalid_union": - return "Giren tan\u0131namad\u0131."; - case "invalid_element": - return `${issue3.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`; - default: - return `K\u0131ymet tan\u0131namad\u0131.`; - } - }; -}; -function ota_default() { - return { - localeError: error31() - }; -} - -// node_modules/zod/v4/locales/ps.js -var error32 = () => { - const Sizable = { - string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, - file: { unit: "\u0628\u0627\u06CC\u067C\u0633", verb: "\u0648\u0644\u0631\u064A" }, - array: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, - set: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0648\u0631\u0648\u062F\u064A", - email: "\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9", - url: "\u06CC\u0648 \u0622\u0631 \u0627\u0644", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u064A", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A", - date: "\u0646\u06D0\u067C\u0647", - time: "\u0648\u062E\u062A", - duration: "\u0645\u0648\u062F\u0647", - ipv4: "\u062F IPv4 \u067E\u062A\u0647", - ipv6: "\u062F IPv6 \u067E\u062A\u0647", - cidrv4: "\u062F IPv4 \u0633\u0627\u062D\u0647", - cidrv6: "\u062F IPv6 \u0633\u0627\u062D\u0647", - base64: "base64-encoded \u0645\u062A\u0646", - base64url: "base64url-encoded \u0645\u062A\u0646", - json_string: "JSON \u0645\u062A\u0646", - e164: "\u062F E.164 \u0634\u0645\u06D0\u0631\u0647", - jwt: "JWT", - template_literal: "\u0648\u0631\u0648\u062F\u064A" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0639\u062F\u062F", - array: "\u0627\u0631\u06D0" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue3.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; - } - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; - } - case "invalid_value": - if (issue3.values.length === 1) { - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${stringifyPrimitive(issue3.values[0])} \u0648\u0627\u06CC`; - } - return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${joinValues(issue3.values, "|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue3.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`; - } - return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue3.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} \u0648\u064A`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`; - } - return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} \u0648\u064A`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`; - } - if (_issue.format === "ends_with") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`; - } - if (_issue.format === "includes") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${_issue.includes}" \u0648\u0644\u0631\u064A`; - } - if (_issue.format === "regex") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`; - } - return `${FormatDictionary[_issue.format] ?? issue3.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`; - } - case "not_multiple_of": - return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue3.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`; - case "unrecognized_keys": - return `\u0646\u0627\u0633\u0645 ${issue3.keys.length > 1 ? "\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647" : "\u06A9\u0644\u06CC\u0689"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue3.origin} \u06A9\u06D0`; - case "invalid_union": - return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; - case "invalid_element": - return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue3.origin} \u06A9\u06D0`; - default: - return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; - } - }; -}; -function ps_default() { - return { - localeError: error32() - }; -} - -// node_modules/zod/v4/locales/pl.js -var error33 = () => { - const Sizable = { - string: { unit: "znak\xF3w", verb: "mie\u0107" }, - file: { unit: "bajt\xF3w", verb: "mie\u0107" }, - array: { unit: "element\xF3w", verb: "mie\u0107" }, - set: { unit: "element\xF3w", verb: "mie\u0107" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "wyra\u017Cenie", - email: "adres email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data i godzina w formacie ISO", - date: "data w formacie ISO", - time: "godzina w formacie ISO", - duration: "czas trwania ISO", - ipv4: "adres IPv4", - ipv6: "adres IPv6", - cidrv4: "zakres IPv4", - cidrv6: "zakres IPv6", - base64: "ci\u0105g znak\xF3w zakodowany w formacie base64", - base64url: "ci\u0105g znak\xF3w zakodowany w formacie base64url", - json_string: "ci\u0105g znak\xF3w w formacie JSON", - e164: "liczba E.164", - jwt: "JWT", - template_literal: "wej\u015Bcie" - }; - const TypeDictionary = { - nan: "NaN", - number: "liczba", - array: "tablica" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue3.expected}, otrzymano ${received}`; - } - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${stringifyPrimitive(issue3.values[0])}`; - return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element\xF3w"}`; - } - return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue3.minimum.toString()} ${sizing.unit ?? "element\xF3w"}`; - } - return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${_issue.includes}"`; - if (_issue.format === "regex") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`; - return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue3.divisor}`; - case "unrecognized_keys": - return `Nierozpoznane klucze${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Nieprawid\u0142owy klucz w ${issue3.origin}`; - case "invalid_union": - return "Nieprawid\u0142owe dane wej\u015Bciowe"; - case "invalid_element": - return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue3.origin}`; - default: - return `Nieprawid\u0142owe dane wej\u015Bciowe`; - } - }; -}; -function pl_default() { - return { - localeError: error33() - }; -} - -// node_modules/zod/v4/locales/pt.js -var error34 = () => { - const Sizable = { - string: { unit: "caracteres", verb: "ter" }, - file: { unit: "bytes", verb: "ter" }, - array: { unit: "itens", verb: "ter" }, - set: { unit: "itens", verb: "ter" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "padr\xE3o", - email: "endere\xE7o de e-mail", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data e hora ISO", - date: "data ISO", - time: "hora ISO", - duration: "dura\xE7\xE3o ISO", - ipv4: "endere\xE7o IPv4", - ipv6: "endere\xE7o IPv6", - cidrv4: "faixa de IPv4", - cidrv6: "faixa de IPv6", - base64: "texto codificado em base64", - base64url: "URL codificada em base64", - json_string: "texto JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\xFAmero", - null: "nulo" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Tipo inv\xE1lido: esperado instanceof ${issue3.expected}, recebido ${received}`; - } - return `Tipo inv\xE1lido: esperado ${expected}, recebido ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entrada inv\xE1lida: esperado ${stringifyPrimitive(issue3.values[0])}`; - return `Op\xE7\xE3o inv\xE1lida: esperada uma das ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Muito grande: esperado que ${issue3.origin ?? "valor"} tivesse ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementos"}`; - return `Muito grande: esperado que ${issue3.origin ?? "valor"} fosse ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Muito pequeno: esperado que ${issue3.origin} tivesse ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Muito pequeno: esperado que ${issue3.origin} fosse ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Texto inv\xE1lido: deve come\xE7ar com "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Texto inv\xE1lido: deve terminar com "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Texto inv\xE1lido: deve incluir "${_issue.includes}"`; - if (_issue.format === "regex") - return `Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} inv\xE1lido`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Chave${issue3.keys.length > 1 ? "s" : ""} desconhecida${issue3.keys.length > 1 ? "s" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Chave inv\xE1lida em ${issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE1lida"; - case "invalid_element": - return `Valor inv\xE1lido em ${issue3.origin}`; - default: - return `Campo inv\xE1lido`; - } - }; -}; -function pt_default() { - return { - localeError: error34() - }; -} - -// node_modules/zod/v4/locales/ru.js -function getRussianPlural(count, one, few, many) { - const absCount = Math.abs(count); - const lastDigit = absCount % 10; - const lastTwoDigits = absCount % 100; - if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { - return many; - } - if (lastDigit === 1) { - return one; - } - if (lastDigit >= 2 && lastDigit <= 4) { - return few; - } - return many; -} -var error35 = () => { - const Sizable = { - string: { - unit: { - one: "\u0441\u0438\u043C\u0432\u043E\u043B", - few: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", - many: "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - file: { - unit: { - one: "\u0431\u0430\u0439\u0442", - few: "\u0431\u0430\u0439\u0442\u0430", - many: "\u0431\u0430\u0439\u0442" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - array: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - set: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0432\u043E\u0434", - email: "email \u0430\u0434\u0440\u0435\u0441", - url: "URL", - emoji: "\u044D\u043C\u043E\u0434\u0437\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0432\u0440\u0435\u043C\u044F", - duration: "ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", - cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - base64: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64", - base64url: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url", - json_string: "JSON \u0441\u0442\u0440\u043E\u043A\u0430", - e164: "\u043D\u043E\u043C\u0435\u0440 E.164", - jwt: "JWT", - template_literal: "\u0432\u0432\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue3.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; - } - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${stringifyPrimitive(issue3.values[0])}`; - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue3.keys.length > 1 ? "\u044B\u0435" : "\u044B\u0439"} \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u0438" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"; - case "invalid_element": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue3.origin}`; - default: - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`; - } - }; -}; -function ru_default() { - return { - localeError: error35() - }; -} - -// node_modules/zod/v4/locales/sl.js -var error36 = () => { - const Sizable = { - string: { unit: "znakov", verb: "imeti" }, - file: { unit: "bajtov", verb: "imeti" }, - array: { unit: "elementov", verb: "imeti" }, - set: { unit: "elementov", verb: "imeti" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "vnos", - email: "e-po\u0161tni naslov", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datum in \u010Das", - date: "ISO datum", - time: "ISO \u010Das", - duration: "ISO trajanje", - ipv4: "IPv4 naslov", - ipv6: "IPv6 naslov", - cidrv4: "obseg IPv4", - cidrv6: "obseg IPv6", - base64: "base64 kodiran niz", - base64url: "base64url kodiran niz", - json_string: "JSON niz", - e164: "E.164 \u0161tevilka", - jwt: "JWT", - template_literal: "vnos" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0161tevilo", - array: "tabela" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue3.expected}, prejeto ${received}`; - } - return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Neveljaven vnos: pri\u010Dakovano ${stringifyPrimitive(issue3.values[0])}`; - return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Preveliko: pri\u010Dakovano, da bo ${issue3.origin ?? "vrednost"} imelo ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementov"}`; - return `Preveliko: pri\u010Dakovano, da bo ${issue3.origin ?? "vrednost"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Premajhno: pri\u010Dakovano, da bo ${issue3.origin} imelo ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Premajhno: pri\u010Dakovano, da bo ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Neveljaven niz: mora se za\u010Deti z "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Neveljaven niz: mora se kon\u010Dati z "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Neveljaven niz: mora vsebovati "${_issue.includes}"`; - if (_issue.format === "regex") - return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`; - return `Neveljaven ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue3.divisor}`; - case "unrecognized_keys": - return `Neprepoznan${issue3.keys.length > 1 ? "i klju\u010Di" : " klju\u010D"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Neveljaven klju\u010D v ${issue3.origin}`; - case "invalid_union": - return "Neveljaven vnos"; - case "invalid_element": - return `Neveljavna vrednost v ${issue3.origin}`; - default: - return "Neveljaven vnos"; - } - }; -}; -function sl_default() { - return { - localeError: error36() - }; -} - -// node_modules/zod/v4/locales/sv.js -var error37 = () => { - const Sizable = { - string: { unit: "tecken", verb: "att ha" }, - file: { unit: "bytes", verb: "att ha" }, - array: { unit: "objekt", verb: "att inneh\xE5lla" }, - set: { unit: "objekt", verb: "att inneh\xE5lla" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "regulj\xE4rt uttryck", - email: "e-postadress", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-datum och tid", - date: "ISO-datum", - time: "ISO-tid", - duration: "ISO-varaktighet", - ipv4: "IPv4-intervall", - ipv6: "IPv6-intervall", - cidrv4: "IPv4-spektrum", - cidrv6: "IPv6-spektrum", - base64: "base64-kodad str\xE4ng", - base64url: "base64url-kodad str\xE4ng", - json_string: "JSON-str\xE4ng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "mall-literal" - }; - const TypeDictionary = { - nan: "NaN", - number: "antal", - array: "lista" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${issue3.expected}, fick ${received}`; - } - return `Ogiltig inmatning: f\xF6rv\xE4ntat ${expected}, fick ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ogiltig inmatning: f\xF6rv\xE4ntat ${stringifyPrimitive(issue3.values[0])}`; - return `Ogiltigt val: f\xF6rv\xE4ntade en av ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `F\xF6r stor(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element"}`; - } - return `F\xF6r stor(t): f\xF6rv\xE4ntat ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Ogiltig str\xE4ng: m\xE5ste sluta med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${_issue.pattern}"`; - return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ogiltigt tal: m\xE5ste vara en multipel av ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ok\xE4nda nycklar" : "Ok\xE4nd nyckel"}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Ogiltig nyckel i ${issue3.origin ?? "v\xE4rdet"}`; - case "invalid_union": - return "Ogiltig input"; - case "invalid_element": - return `Ogiltigt v\xE4rde i ${issue3.origin ?? "v\xE4rdet"}`; - default: - return `Ogiltig input`; - } - }; -}; -function sv_default() { - return { - localeError: error37() - }; -} - -// node_modules/zod/v4/locales/ta.js -var error38 = () => { - const Sizable = { - string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - file: { unit: "\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - array: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - set: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1", - email: "\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", - date: "ISO \u0BA4\u0BC7\u0BA4\u0BBF", - time: "ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", - duration: "ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1", - ipv4: "IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - ipv6: "IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - cidrv4: "IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", - cidrv6: "IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", - base64: "base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD", - base64url: "base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD", - json_string: "JSON \u0B9A\u0BB0\u0BAE\u0BCD", - e164: "E.164 \u0B8E\u0BA3\u0BCD", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0B8E\u0BA3\u0BCD", - array: "\u0B85\u0BA3\u0BBF", - null: "\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue3.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; - } - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${stringifyPrimitive(issue3.values[0])}`; - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${joinValues(issue3.values, "|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue3.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin} ${adj}${issue3.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "ends_with") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "includes") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "regex") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue3.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - case "unrecognized_keys": - return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue3.keys.length > 1 ? "\u0B95\u0BB3\u0BCD" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`; - case "invalid_union": - return "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"; - case "invalid_element": - return `${issue3.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`; - default: - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`; - } - }; -}; -function ta_default() { - return { - localeError: error38() - }; -} - -// node_modules/zod/v4/locales/th.js -var error39 = () => { - const Sizable = { - string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - file: { unit: "\u0E44\u0E1A\u0E15\u0E4C", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - array: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - set: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19", - email: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25", - url: "URL", - emoji: "\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - date: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO", - time: "\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - duration: "\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - ipv4: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4", - ipv6: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6", - cidrv4: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4", - cidrv6: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6", - base64: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64", - base64url: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL", - json_string: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON", - e164: "\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)", - jwt: "\u0E42\u0E17\u0E40\u0E04\u0E19 JWT", - template_literal: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02", - array: "\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)", - null: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue3.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; - } - return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${stringifyPrimitive(issue3.values[0])}`; - return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19" : "\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`; - return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22" : "\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${_issue.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`; - if (_issue.format === "regex") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`; - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue3.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`; - case "unrecognized_keys": - return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue3.origin}`; - case "invalid_union": - return "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49"; - case "invalid_element": - return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue3.origin}`; - default: - return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`; - } - }; -}; -function th_default() { - return { - localeError: error39() - }; -} - -// node_modules/zod/v4/locales/tr.js -var error40 = () => { - const Sizable = { - string: { unit: "karakter", verb: "olmal\u0131" }, - file: { unit: "bayt", verb: "olmal\u0131" }, - array: { unit: "\xF6\u011Fe", verb: "olmal\u0131" }, - set: { unit: "\xF6\u011Fe", verb: "olmal\u0131" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "girdi", - email: "e-posta adresi", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO tarih ve saat", - date: "ISO tarih", - time: "ISO saat", - duration: "ISO s\xFCre", - ipv4: "IPv4 adresi", - ipv6: "IPv6 adresi", - cidrv4: "IPv4 aral\u0131\u011F\u0131", - cidrv6: "IPv6 aral\u0131\u011F\u0131", - base64: "base64 ile \u015Fifrelenmi\u015F metin", - base64url: "base64url ile \u015Fifrelenmi\u015F metin", - json_string: "JSON dizesi", - e164: "E.164 say\u0131s\u0131", - jwt: "JWT", - template_literal: "\u015Eablon dizesi" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ge\xE7ersiz de\u011Fer: beklenen instanceof ${issue3.expected}, al\u0131nan ${received}`; - } - return `Ge\xE7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ge\xE7ersiz de\u011Fer: beklenen ${stringifyPrimitive(issue3.values[0])}`; - return `Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ok b\xFCy\xFCk: beklenen ${issue3.origin ?? "de\u011Fer"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\xF6\u011Fe"}`; - return `\xC7ok b\xFCy\xFCk: beklenen ${issue3.origin ?? "de\u011Fer"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ge\xE7ersiz metin: "${_issue.prefix}" ile ba\u015Flamal\u0131`; - if (_issue.format === "ends_with") - return `Ge\xE7ersiz metin: "${_issue.suffix}" ile bitmeli`; - if (_issue.format === "includes") - return `Ge\xE7ersiz metin: "${_issue.includes}" i\xE7ermeli`; - if (_issue.format === "regex") - return `Ge\xE7ersiz metin: ${_issue.pattern} desenine uymal\u0131`; - return `Ge\xE7ersiz ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ge\xE7ersiz say\u0131: ${issue3.divisor} ile tam b\xF6l\xFCnebilmeli`; - case "unrecognized_keys": - return `Tan\u0131nmayan anahtar${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} i\xE7inde ge\xE7ersiz anahtar`; - case "invalid_union": - return "Ge\xE7ersiz de\u011Fer"; - case "invalid_element": - return `${issue3.origin} i\xE7inde ge\xE7ersiz de\u011Fer`; - default: - return `Ge\xE7ersiz de\u011Fer`; - } - }; -}; -function tr_default() { - return { - localeError: error40() - }; -} - -// node_modules/zod/v4/locales/uk.js -var error41 = () => { - const Sizable = { - string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - file: { unit: "\u0431\u0430\u0439\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456", - email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438", - url: "URL", - emoji: "\u0435\u043C\u043E\u0434\u0437\u0456", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO", - date: "\u0434\u0430\u0442\u0430 ISO", - time: "\u0447\u0430\u0441 ISO", - duration: "\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO", - ipv4: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv4", - ipv6: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv6", - cidrv4: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4", - cidrv6: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6", - base64: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64", - base64url: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url", - json_string: "\u0440\u044F\u0434\u043E\u043A JSON", - e164: "\u043D\u043E\u043C\u0435\u0440 E.164", - jwt: "JWT", - template_literal: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue3.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; - } - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${stringifyPrimitive(issue3.values[0])}`; - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`; - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin} \u0431\u0443\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u0456" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"; - case "invalid_element": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue3.origin}`; - default: - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`; - } - }; -}; -function uk_default() { - return { - localeError: error41() - }; -} - -// node_modules/zod/v4/locales/ua.js -function ua_default() { - return uk_default(); -} - -// node_modules/zod/v4/locales/ur.js -var error42 = () => { - const Sizable = { - string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" }, - file: { unit: "\u0628\u0627\u0626\u0679\u0633", verb: "\u06C1\u0648\u0646\u0627" }, - array: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" }, - set: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0627\u0646 \u067E\u0679", - email: "\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633", - url: "\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", - uuid: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - uuidv4: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4", - uuidv6: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6", - nanoid: "\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC", - guid: "\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - cuid: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - cuid2: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2", - ulid: "\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC", - xid: "\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC", - ksuid: "\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - datetime: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645", - date: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E", - time: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A", - duration: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A", - ipv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633", - ipv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633", - cidrv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C", - cidrv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C", - base64: "\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", - base64url: "\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", - json_string: "\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF", - e164: "\u0627\u06CC 164 \u0646\u0645\u0628\u0631", - jwt: "\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC", - template_literal: "\u0627\u0646 \u067E\u0679" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0646\u0645\u0628\u0631", - array: "\u0622\u0631\u06D2", - null: "\u0646\u0644" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue3.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; - } - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${stringifyPrimitive(issue3.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${joinValues(issue3.values, "|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue3.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; - return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue3.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${adj}${issue3.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue3.origin} \u06A9\u06D2 ${adj}${issue3.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; - } - return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue3.origin} \u06A9\u0627 ${adj}${issue3.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - } - if (_issue.format === "ends_with") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - if (_issue.format === "includes") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - if (_issue.format === "regex") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue3.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - case "unrecognized_keys": - return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue3.keys.length > 1 ? "\u0632" : ""}: ${joinValues(issue3.keys, "\u060C ")}`; - case "invalid_key": - return `${issue3.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`; - case "invalid_union": - return "\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"; - case "invalid_element": - return `${issue3.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`; - default: - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`; - } - }; -}; -function ur_default() { - return { - localeError: error42() - }; -} - -// node_modules/zod/v4/locales/uz.js -var error43 = () => { - const Sizable = { - string: { unit: "belgi", verb: "bo\u2018lishi kerak" }, - file: { unit: "bayt", verb: "bo\u2018lishi kerak" }, - array: { unit: "element", verb: "bo\u2018lishi kerak" }, - set: { unit: "element", verb: "bo\u2018lishi kerak" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "kirish", - email: "elektron pochta manzili", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO sana va vaqti", - date: "ISO sana", - time: "ISO vaqt", - duration: "ISO davomiylik", - ipv4: "IPv4 manzil", - ipv6: "IPv6 manzil", - mac: "MAC manzil", - cidrv4: "IPv4 diapazon", - cidrv6: "IPv6 diapazon", - base64: "base64 kodlangan satr", - base64url: "base64url kodlangan satr", - json_string: "JSON satr", - e164: "E.164 raqam", - jwt: "JWT", - template_literal: "kirish" - }; - const TypeDictionary = { - nan: "NaN", - number: "raqam", - array: "massiv" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue3.expected}, qabul qilingan ${received}`; - } - return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Noto\u2018g\u2018ri kirish: kutilgan ${stringifyPrimitive(issue3.values[0])}`; - return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Juda katta: kutilgan ${issue3.origin ?? "qiymat"} ${adj}${issue3.maximum.toString()} ${sizing.unit} ${sizing.verb}`; - return `Juda katta: kutilgan ${issue3.origin ?? "qiymat"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Juda kichik: kutilgan ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} ${sizing.verb}`; - } - return `Juda kichik: kutilgan ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Noto\u2018g\u2018ri satr: "${_issue.prefix}" bilan boshlanishi kerak`; - if (_issue.format === "ends_with") - return `Noto\u2018g\u2018ri satr: "${_issue.suffix}" bilan tugashi kerak`; - if (_issue.format === "includes") - return `Noto\u2018g\u2018ri satr: "${_issue.includes}" ni o\u2018z ichiga olishi kerak`; - if (_issue.format === "regex") - return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`; - return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Noto\u2018g\u2018ri raqam: ${issue3.divisor} ning karralisi bo\u2018lishi kerak`; - case "unrecognized_keys": - return `Noma\u2019lum kalit${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} dagi kalit noto\u2018g\u2018ri`; - case "invalid_union": - return "Noto\u2018g\u2018ri kirish"; - case "invalid_element": - return `${issue3.origin} da noto\u2018g\u2018ri qiymat`; - default: - return `Noto\u2018g\u2018ri kirish`; - } - }; -}; -function uz_default() { - return { - localeError: error43() - }; -} - -// node_modules/zod/v4/locales/vi.js -var error44 = () => { - const Sizable = { - string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" }, - file: { unit: "byte", verb: "c\xF3" }, - array: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" }, - set: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0111\u1EA7u v\xE0o", - email: "\u0111\u1ECBa ch\u1EC9 email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ng\xE0y gi\u1EDD ISO", - date: "ng\xE0y ISO", - time: "gi\u1EDD ISO", - duration: "kho\u1EA3ng th\u1EDDi gian ISO", - ipv4: "\u0111\u1ECBa ch\u1EC9 IPv4", - ipv6: "\u0111\u1ECBa ch\u1EC9 IPv6", - cidrv4: "d\u1EA3i IPv4", - cidrv6: "d\u1EA3i IPv6", - base64: "chu\u1ED7i m\xE3 h\xF3a base64", - base64url: "chu\u1ED7i m\xE3 h\xF3a base64url", - json_string: "chu\u1ED7i JSON", - e164: "s\u1ED1 E.164", - jwt: "JWT", - template_literal: "\u0111\u1EA7u v\xE0o" - }; - const TypeDictionary = { - nan: "NaN", - number: "s\u1ED1", - array: "m\u1EA3ng" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue3.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; - } - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${stringifyPrimitive(issue3.values[0])}`; - return `T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue3.origin ?? "gi\xE1 tr\u1ECB"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "ph\u1EA7n t\u1EED"}`; - return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue3.origin ?? "gi\xE1 tr\u1ECB"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${_issue.includes}"`; - if (_issue.format === "regex") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} kh\xF4ng h\u1EE3p l\u1EC7`; - } - case "not_multiple_of": - return `S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue3.divisor}`; - case "unrecognized_keys": - return `Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue3.origin}`; - case "invalid_union": - return "\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"; - case "invalid_element": - return `Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue3.origin}`; - default: - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7`; - } - }; -}; -function vi_default() { - return { - localeError: error44() - }; -} - -// node_modules/zod/v4/locales/zh-CN.js -var error45 = () => { - const Sizable = { - string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" }, - file: { unit: "\u5B57\u8282", verb: "\u5305\u542B" }, - array: { unit: "\u9879", verb: "\u5305\u542B" }, - set: { unit: "\u9879", verb: "\u5305\u542B" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u8F93\u5165", - email: "\u7535\u5B50\u90AE\u4EF6", - url: "URL", - emoji: "\u8868\u60C5\u7B26\u53F7", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO\u65E5\u671F\u65F6\u95F4", - date: "ISO\u65E5\u671F", - time: "ISO\u65F6\u95F4", - duration: "ISO\u65F6\u957F", - ipv4: "IPv4\u5730\u5740", - ipv6: "IPv6\u5730\u5740", - cidrv4: "IPv4\u7F51\u6BB5", - cidrv6: "IPv6\u7F51\u6BB5", - base64: "base64\u7F16\u7801\u5B57\u7B26\u4E32", - base64url: "base64url\u7F16\u7801\u5B57\u7B26\u4E32", - json_string: "JSON\u5B57\u7B26\u4E32", - e164: "E.164\u53F7\u7801", - jwt: "JWT", - template_literal: "\u8F93\u5165" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u6570\u5B57", - array: "\u6570\u7EC4", - null: "\u7A7A\u503C(null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue3.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; - } - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${stringifyPrimitive(issue3.values[0])}`; - return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue3.origin ?? "\u503C"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u4E2A\u5143\u7D20"}`; - return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue3.origin ?? "\u503C"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.prefix}" \u5F00\u5934`; - if (_issue.format === "ends_with") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.suffix}" \u7ED3\u5C3E`; - if (_issue.format === "includes") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`; - return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue3.divisor} \u7684\u500D\u6570`; - case "unrecognized_keys": - return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`; - case "invalid_union": - return "\u65E0\u6548\u8F93\u5165"; - case "invalid_element": - return `${issue3.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`; - default: - return `\u65E0\u6548\u8F93\u5165`; - } - }; -}; -function zh_CN_default() { - return { - localeError: error45() - }; -} - -// node_modules/zod/v4/locales/zh-TW.js -var error46 = () => { - const Sizable = { - string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" }, - file: { unit: "\u4F4D\u5143\u7D44", verb: "\u64C1\u6709" }, - array: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" }, - set: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u8F38\u5165", - email: "\u90F5\u4EF6\u5730\u5740", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u65E5\u671F\u6642\u9593", - date: "ISO \u65E5\u671F", - time: "ISO \u6642\u9593", - duration: "ISO \u671F\u9593", - ipv4: "IPv4 \u4F4D\u5740", - ipv6: "IPv6 \u4F4D\u5740", - cidrv4: "IPv4 \u7BC4\u570D", - cidrv6: "IPv6 \u7BC4\u570D", - base64: "base64 \u7DE8\u78BC\u5B57\u4E32", - base64url: "base64url \u7DE8\u78BC\u5B57\u4E32", - json_string: "JSON \u5B57\u4E32", - e164: "E.164 \u6578\u503C", - jwt: "JWT", - template_literal: "\u8F38\u5165" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue3.expected}\uFF0C\u4F46\u6536\u5230 ${received}`; - } - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${stringifyPrimitive(issue3.values[0])}`; - return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue3.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u500B\u5143\u7D20"}`; - return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue3.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue3.origin} \u61C9\u70BA ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue3.origin} \u61C9\u70BA ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.prefix}" \u958B\u982D`; - } - if (_issue.format === "ends_with") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.suffix}" \u7D50\u5C3E`; - if (_issue.format === "includes") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`; - return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue3.divisor} \u7684\u500D\u6578`; - case "unrecognized_keys": - return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue3.keys.length > 1 ? "\u5011" : ""}\uFF1A${joinValues(issue3.keys, "\u3001")}`; - case "invalid_key": - return `${issue3.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`; - case "invalid_union": - return "\u7121\u6548\u7684\u8F38\u5165\u503C"; - case "invalid_element": - return `${issue3.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`; - default: - return `\u7121\u6548\u7684\u8F38\u5165\u503C`; - } - }; -}; -function zh_TW_default() { - return { - localeError: error46() - }; -} - -// node_modules/zod/v4/locales/yo.js -var error47 = () => { - const Sizable = { - string: { unit: "\xE0mi", verb: "n\xED" }, - file: { unit: "bytes", verb: "n\xED" }, - array: { unit: "nkan", verb: "n\xED" }, - set: { unit: "nkan", verb: "n\xED" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9", - email: "\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\xE0k\xF3k\xF2 ISO", - date: "\u1ECDj\u1ECD\u0301 ISO", - time: "\xE0k\xF3k\xF2 ISO", - duration: "\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO", - ipv4: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv4", - ipv6: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv6", - cidrv4: "\xE0gb\xE8gb\xE8 IPv4", - cidrv6: "\xE0gb\xE8gb\xE8 IPv6", - base64: "\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64", - base64url: "\u1ECD\u0300r\u1ECD\u0300 base64url", - json_string: "\u1ECD\u0300r\u1ECD\u0300 JSON", - e164: "n\u1ECD\u0301mb\xE0 E.164", - jwt: "JWT", - template_literal: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\u1ECD\u0301mb\xE0", - array: "akop\u1ECD" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${issue3.expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; - } - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${stringifyPrimitive(issue3.values[0])}`; - return `\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${joinValues(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue3.origin ?? "iye"} ${sizing.verb} ${adj}${issue3.maximum} ${sizing.unit}`; - return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue3.maximum}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum} ${sizing.unit}`; - return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue3.minimum}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`; - return `A\u1E63\xEC\u1E63e: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${issue3.divisor}`; - case "unrecognized_keys": - return `B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${joinValues(issue3.keys, ", ")}`; - case "invalid_key": - return `B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue3.origin}`; - case "invalid_union": - return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; - case "invalid_element": - return `Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue3.origin}`; - default: - return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; - } - }; -}; -function yo_default() { - return { - localeError: error47() - }; -} - -// node_modules/zod/v4/core/registries.js -var _a; -var $output = /* @__PURE__ */ Symbol("ZodOutput"); -var $input = /* @__PURE__ */ Symbol("ZodInput"); -var $ZodRegistry = class { - constructor() { - this._map = /* @__PURE__ */ new WeakMap(); - this._idmap = /* @__PURE__ */ new Map(); - } - add(schema, ..._meta) { - const meta5 = _meta[0]; - this._map.set(schema, meta5); - if (meta5 && typeof meta5 === "object" && "id" in meta5) { - this._idmap.set(meta5.id, schema); - } - return this; - } - clear() { - this._map = /* @__PURE__ */ new WeakMap(); - this._idmap = /* @__PURE__ */ new Map(); - return this; - } - remove(schema) { - const meta5 = this._map.get(schema); - if (meta5 && typeof meta5 === "object" && "id" in meta5) { - this._idmap.delete(meta5.id); - } - this._map.delete(schema); - return this; - } - get(schema) { - const p = schema._zod.parent; - if (p) { - const pm = { ...this.get(p) ?? {} }; - delete pm.id; - const f = { ...pm, ...this._map.get(schema) }; - return Object.keys(f).length ? f : void 0; - } - return this._map.get(schema); - } - has(schema) { - return this._map.has(schema); - } -}; -function registry() { - return new $ZodRegistry(); -} -(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry()); -var globalRegistry = globalThis.__zod_globalRegistry; - -// node_modules/zod/v4/core/api.js -// @__NO_SIDE_EFFECTS__ -function _string(Class3, params) { - return new Class3({ - type: "string", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedString(Class3, params) { - return new Class3({ - type: "string", - coerce: true, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _email(Class3, params) { - return new Class3({ - type: "string", - format: "email", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _guid(Class3, params) { - return new Class3({ - type: "string", - format: "guid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuid(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv4(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v4", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv6(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v6", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv7(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v7", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _url(Class3, params) { - return new Class3({ - type: "string", - format: "url", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _emoji2(Class3, params) { - return new Class3({ - type: "string", - format: "emoji", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nanoid(Class3, params) { - return new Class3({ - type: "string", - format: "nanoid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cuid(Class3, params) { - return new Class3({ - type: "string", - format: "cuid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cuid2(Class3, params) { - return new Class3({ - type: "string", - format: "cuid2", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ulid(Class3, params) { - return new Class3({ - type: "string", - format: "ulid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _xid(Class3, params) { - return new Class3({ - type: "string", - format: "xid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ksuid(Class3, params) { - return new Class3({ - type: "string", - format: "ksuid", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ipv4(Class3, params) { - return new Class3({ - type: "string", - format: "ipv4", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ipv6(Class3, params) { - return new Class3({ - type: "string", - format: "ipv6", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _mac(Class3, params) { - return new Class3({ - type: "string", - format: "mac", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cidrv4(Class3, params) { - return new Class3({ - type: "string", - format: "cidrv4", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cidrv6(Class3, params) { - return new Class3({ - type: "string", - format: "cidrv6", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _base64(Class3, params) { - return new Class3({ - type: "string", - format: "base64", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _base64url(Class3, params) { - return new Class3({ - type: "string", - format: "base64url", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _e164(Class3, params) { - return new Class3({ - type: "string", - format: "e164", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _jwt(Class3, params) { - return new Class3({ - type: "string", - format: "jwt", - check: "string_format", - abort: false, - ...normalizeParams(params) - }); -} -var TimePrecision = { - Any: null, - Minute: -1, - Second: 0, - Millisecond: 3, - Microsecond: 6 -}; -// @__NO_SIDE_EFFECTS__ -function _isoDateTime(Class3, params) { - return new Class3({ - type: "string", - format: "datetime", - check: "string_format", - offset: false, - local: false, - precision: null, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoDate(Class3, params) { - return new Class3({ - type: "string", - format: "date", - check: "string_format", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoTime(Class3, params) { - return new Class3({ - type: "string", - format: "time", - check: "string_format", - precision: null, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoDuration(Class3, params) { - return new Class3({ - type: "string", - format: "duration", - check: "string_format", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _number(Class3, params) { - return new Class3({ - type: "number", - checks: [], - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedNumber(Class3, params) { - return new Class3({ - type: "number", - coerce: true, - checks: [], - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "safeint", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _float32(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "float32", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _float64(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "float64", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int32(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "int32", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uint32(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "uint32", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _boolean(Class3, params) { - return new Class3({ - type: "boolean", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedBoolean(Class3, params) { - return new Class3({ - type: "boolean", - coerce: true, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _bigint(Class3, params) { - return new Class3({ - type: "bigint", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedBigint(Class3, params) { - return new Class3({ - type: "bigint", - coerce: true, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int64(Class3, params) { - return new Class3({ - type: "bigint", - check: "bigint_format", - abort: false, - format: "int64", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uint64(Class3, params) { - return new Class3({ - type: "bigint", - check: "bigint_format", - abort: false, - format: "uint64", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _symbol(Class3, params) { - return new Class3({ - type: "symbol", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _undefined2(Class3, params) { - return new Class3({ - type: "undefined", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _null2(Class3, params) { - return new Class3({ - type: "null", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _any(Class3) { - return new Class3({ - type: "any" - }); -} -// @__NO_SIDE_EFFECTS__ -function _unknown(Class3) { - return new Class3({ - type: "unknown" - }); -} -// @__NO_SIDE_EFFECTS__ -function _never(Class3, params) { - return new Class3({ - type: "never", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _void(Class3, params) { - return new Class3({ - type: "void", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _date(Class3, params) { - return new Class3({ - type: "date", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedDate(Class3, params) { - return new Class3({ - type: "date", - coerce: true, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nan(Class3, params) { - return new Class3({ - type: "nan", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _lt(value, params) { - return new $ZodCheckLessThan({ - check: "less_than", - ...normalizeParams(params), - value, - inclusive: false - }); -} -// @__NO_SIDE_EFFECTS__ -function _lte(value, params) { - return new $ZodCheckLessThan({ - check: "less_than", - ...normalizeParams(params), - value, - inclusive: true - }); -} -// @__NO_SIDE_EFFECTS__ -function _gt(value, params) { - return new $ZodCheckGreaterThan({ - check: "greater_than", - ...normalizeParams(params), - value, - inclusive: false - }); -} -// @__NO_SIDE_EFFECTS__ -function _gte(value, params) { - return new $ZodCheckGreaterThan({ - check: "greater_than", - ...normalizeParams(params), - value, - inclusive: true - }); -} -// @__NO_SIDE_EFFECTS__ -function _positive(params) { - return /* @__PURE__ */ _gt(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _negative(params) { - return /* @__PURE__ */ _lt(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _nonpositive(params) { - return /* @__PURE__ */ _lte(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _nonnegative(params) { - return /* @__PURE__ */ _gte(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _multipleOf(value, params) { - return new $ZodCheckMultipleOf({ - check: "multiple_of", - ...normalizeParams(params), - value - }); -} -// @__NO_SIDE_EFFECTS__ -function _maxSize(maximum, params) { - return new $ZodCheckMaxSize({ - check: "max_size", - ...normalizeParams(params), - maximum - }); -} -// @__NO_SIDE_EFFECTS__ -function _minSize(minimum, params) { - return new $ZodCheckMinSize({ - check: "min_size", - ...normalizeParams(params), - minimum - }); -} -// @__NO_SIDE_EFFECTS__ -function _size(size, params) { - return new $ZodCheckSizeEquals({ - check: "size_equals", - ...normalizeParams(params), - size - }); -} -// @__NO_SIDE_EFFECTS__ -function _maxLength(maximum, params) { - const ch = new $ZodCheckMaxLength({ - check: "max_length", - ...normalizeParams(params), - maximum - }); - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _minLength(minimum, params) { - return new $ZodCheckMinLength({ - check: "min_length", - ...normalizeParams(params), - minimum - }); -} -// @__NO_SIDE_EFFECTS__ -function _length(length, params) { - return new $ZodCheckLengthEquals({ - check: "length_equals", - ...normalizeParams(params), - length - }); -} -// @__NO_SIDE_EFFECTS__ -function _regex(pattern, params) { - return new $ZodCheckRegex({ - check: "string_format", - format: "regex", - ...normalizeParams(params), - pattern - }); -} -// @__NO_SIDE_EFFECTS__ -function _lowercase(params) { - return new $ZodCheckLowerCase({ - check: "string_format", - format: "lowercase", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uppercase(params) { - return new $ZodCheckUpperCase({ - check: "string_format", - format: "uppercase", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _includes(includes, params) { - return new $ZodCheckIncludes({ - check: "string_format", - format: "includes", - ...normalizeParams(params), - includes - }); -} -// @__NO_SIDE_EFFECTS__ -function _startsWith(prefix, params) { - return new $ZodCheckStartsWith({ - check: "string_format", - format: "starts_with", - ...normalizeParams(params), - prefix - }); -} -// @__NO_SIDE_EFFECTS__ -function _endsWith(suffix, params) { - return new $ZodCheckEndsWith({ - check: "string_format", - format: "ends_with", - ...normalizeParams(params), - suffix - }); -} -// @__NO_SIDE_EFFECTS__ -function _property(property, schema, params) { - return new $ZodCheckProperty({ - check: "property", - property, - schema, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _mime(types, params) { - return new $ZodCheckMimeType({ - check: "mime_type", - mime: types, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _overwrite(tx) { - return new $ZodCheckOverwrite({ - check: "overwrite", - tx - }); -} -// @__NO_SIDE_EFFECTS__ -function _normalize(form) { - return /* @__PURE__ */ _overwrite((input) => input.normalize(form)); -} -// @__NO_SIDE_EFFECTS__ -function _trim() { - return /* @__PURE__ */ _overwrite((input) => input.trim()); -} -// @__NO_SIDE_EFFECTS__ -function _toLowerCase() { - return /* @__PURE__ */ _overwrite((input) => input.toLowerCase()); -} -// @__NO_SIDE_EFFECTS__ -function _toUpperCase() { - return /* @__PURE__ */ _overwrite((input) => input.toUpperCase()); -} -// @__NO_SIDE_EFFECTS__ -function _slugify() { - return /* @__PURE__ */ _overwrite((input) => slugify(input)); -} -// @__NO_SIDE_EFFECTS__ -function _array(Class3, element, params) { - return new Class3({ - type: "array", - element, - // get element() { - // return element; - // }, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _union(Class3, options, params) { - return new Class3({ - type: "union", - options, - ...normalizeParams(params) - }); -} -function _xor(Class3, options, params) { - return new Class3({ - type: "union", - options, - inclusive: false, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _discriminatedUnion(Class3, discriminator, options, params) { - return new Class3({ - type: "union", - options, - discriminator, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _intersection(Class3, left, right) { - return new Class3({ - type: "intersection", - left, - right - }); -} -// @__NO_SIDE_EFFECTS__ -function _tuple(Class3, items, _paramsOrRest, _params) { - const hasRest = _paramsOrRest instanceof $ZodType; - const params = hasRest ? _params : _paramsOrRest; - const rest = hasRest ? _paramsOrRest : null; - return new Class3({ - type: "tuple", - items, - rest, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _record(Class3, keyType, valueType, params) { - return new Class3({ - type: "record", - keyType, - valueType, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _map(Class3, keyType, valueType, params) { - return new Class3({ - type: "map", - keyType, - valueType, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _set(Class3, valueType, params) { - return new Class3({ - type: "set", - valueType, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _enum(Class3, values, params) { - const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; - return new Class3({ - type: "enum", - entries, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nativeEnum(Class3, entries, params) { - return new Class3({ - type: "enum", - entries, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _literal(Class3, value, params) { - return new Class3({ - type: "literal", - values: Array.isArray(value) ? value : [value], - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _file(Class3, params) { - return new Class3({ - type: "file", - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _transform(Class3, fn) { - return new Class3({ - type: "transform", - transform: fn - }); -} -// @__NO_SIDE_EFFECTS__ -function _optional(Class3, innerType) { - return new Class3({ - type: "optional", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _nullable(Class3, innerType) { - return new Class3({ - type: "nullable", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _default(Class3, innerType, defaultValue) { - return new Class3({ - type: "default", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : shallowClone(defaultValue); - } - }); -} -// @__NO_SIDE_EFFECTS__ -function _nonoptional(Class3, innerType, params) { - return new Class3({ - type: "nonoptional", - innerType, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _success(Class3, innerType) { - return new Class3({ - type: "success", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _catch(Class3, innerType, catchValue) { - return new Class3({ - type: "catch", - innerType, - catchValue: typeof catchValue === "function" ? catchValue : () => catchValue - }); -} -// @__NO_SIDE_EFFECTS__ -function _pipe(Class3, in_, out) { - return new Class3({ - type: "pipe", - in: in_, - out - }); -} -// @__NO_SIDE_EFFECTS__ -function _readonly(Class3, innerType) { - return new Class3({ - type: "readonly", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _templateLiteral(Class3, parts, params) { - return new Class3({ - type: "template_literal", - parts, - ...normalizeParams(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _lazy(Class3, getter) { - return new Class3({ - type: "lazy", - getter - }); -} -// @__NO_SIDE_EFFECTS__ -function _promise(Class3, innerType) { - return new Class3({ - type: "promise", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _custom(Class3, fn, _params) { - const norm = normalizeParams(_params); - norm.abort ?? (norm.abort = true); - const schema = new Class3({ - type: "custom", - check: "custom", - fn, - ...norm - }); - return schema; -} -// @__NO_SIDE_EFFECTS__ -function _refine(Class3, fn, _params) { - const schema = new Class3({ - type: "custom", - check: "custom", - fn, - ...normalizeParams(_params) - }); - return schema; -} -// @__NO_SIDE_EFFECTS__ -function _superRefine(fn) { - const ch = /* @__PURE__ */ _check((payload) => { - payload.addIssue = (issue3) => { - if (typeof issue3 === "string") { - payload.issues.push(issue(issue3, payload.value, ch._zod.def)); - } else { - const _issue = issue3; - if (_issue.fatal) - _issue.continue = false; - _issue.code ?? (_issue.code = "custom"); - _issue.input ?? (_issue.input = payload.value); - _issue.inst ?? (_issue.inst = ch); - _issue.continue ?? (_issue.continue = !ch._zod.def.abort); - payload.issues.push(issue(_issue)); - } - }; - return fn(payload.value, payload); - }); - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _check(fn, params) { - const ch = new $ZodCheck({ - check: "custom", - ...normalizeParams(params) - }); - ch._zod.check = fn; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function describe(description) { - const ch = new $ZodCheck({ check: "describe" }); - ch._zod.onattach = [ - (inst) => { - const existing = globalRegistry.get(inst) ?? {}; - globalRegistry.add(inst, { ...existing, description }); - } - ]; - ch._zod.check = () => { - }; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function meta(metadata) { - const ch = new $ZodCheck({ check: "meta" }); - ch._zod.onattach = [ - (inst) => { - const existing = globalRegistry.get(inst) ?? {}; - globalRegistry.add(inst, { ...existing, ...metadata }); - } - ]; - ch._zod.check = () => { - }; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _stringbool(Classes, _params) { - const params = normalizeParams(_params); - let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"]; - let falsyArray = params.falsy ?? ["false", "0", "no", "off", "n", "disabled"]; - if (params.case !== "sensitive") { - truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); - falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); - } - const truthySet = new Set(truthyArray); - const falsySet = new Set(falsyArray); - const _Codec = Classes.Codec ?? $ZodCodec; - const _Boolean = Classes.Boolean ?? $ZodBoolean; - const _String = Classes.String ?? $ZodString; - const stringSchema = new _String({ type: "string", error: params.error }); - const booleanSchema = new _Boolean({ type: "boolean", error: params.error }); - const codec3 = new _Codec({ - type: "pipe", - in: stringSchema, - out: booleanSchema, - transform: ((input, payload) => { - let data = input; - if (params.case !== "sensitive") - data = data.toLowerCase(); - if (truthySet.has(data)) { - return true; - } else if (falsySet.has(data)) { - return false; - } else { - payload.issues.push({ - code: "invalid_value", - expected: "stringbool", - values: [...truthySet, ...falsySet], - input: payload.value, - inst: codec3, - continue: false - }); - return {}; - } - }), - reverseTransform: ((input, _payload) => { - if (input === true) { - return truthyArray[0] || "true"; - } else { - return falsyArray[0] || "false"; - } - }), - error: params.error - }); - return codec3; -} -// @__NO_SIDE_EFFECTS__ -function _stringFormat(Class3, format, fnOrRegex, _params = {}) { - const params = normalizeParams(_params); - const def = { - ...normalizeParams(_params), - check: "string_format", - type: "string", - format, - fn: typeof fnOrRegex === "function" ? fnOrRegex : (val) => fnOrRegex.test(val), - ...params - }; - if (fnOrRegex instanceof RegExp) { - def.pattern = fnOrRegex; - } - const inst = new Class3(def); - return inst; -} - -// node_modules/zod/v4/core/to-json-schema.js -function initializeContext(params) { - let target = params?.target ?? "draft-2020-12"; - if (target === "draft-4") - target = "draft-04"; - if (target === "draft-7") - target = "draft-07"; - return { - processors: params.processors ?? {}, - metadataRegistry: params?.metadata ?? globalRegistry, - target, - unrepresentable: params?.unrepresentable ?? "throw", - override: params?.override ?? (() => { - }), - io: params?.io ?? "output", - counter: 0, - seen: /* @__PURE__ */ new Map(), - cycles: params?.cycles ?? "ref", - reused: params?.reused ?? "inline", - external: params?.external ?? void 0 - }; -} -function process2(schema, ctx, _params = { path: [], schemaPath: [] }) { - var _a3; - const def = schema._zod.def; - const seen = ctx.seen.get(schema); - if (seen) { - seen.count++; - const isCycle = _params.schemaPath.includes(schema); - if (isCycle) { - seen.cycle = _params.path; - } - return seen.schema; - } - const result = { schema: {}, count: 1, cycle: void 0, path: _params.path }; - ctx.seen.set(schema, result); - const overrideSchema = schema._zod.toJSONSchema?.(); - if (overrideSchema) { - result.schema = overrideSchema; - } else { - const params = { - ..._params, - schemaPath: [..._params.schemaPath, schema], - path: _params.path - }; - if (schema._zod.processJSONSchema) { - schema._zod.processJSONSchema(ctx, result.schema, params); - } else { - const _json = result.schema; - const processor = ctx.processors[def.type]; - if (!processor) { - throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`); - } - processor(schema, ctx, _json, params); - } - const parent = schema._zod.parent; - if (parent) { - if (!result.ref) - result.ref = parent; - process2(parent, ctx, params); - ctx.seen.get(parent).isParent = true; - } - } - const meta5 = ctx.metadataRegistry.get(schema); - if (meta5) - Object.assign(result.schema, meta5); - if (ctx.io === "input" && isTransforming(schema)) { - delete result.schema.examples; - delete result.schema.default; - } - if (ctx.io === "input" && result.schema._prefault) - (_a3 = result.schema).default ?? (_a3.default = result.schema._prefault); - delete result.schema._prefault; - const _result = ctx.seen.get(schema); - return _result.schema; -} -function extractDefs(ctx, schema) { - const root = ctx.seen.get(schema); - if (!root) - throw new Error("Unprocessed schema. This is a bug in Zod."); - const idToSchema = /* @__PURE__ */ new Map(); - for (const entry of ctx.seen.entries()) { - const id = ctx.metadataRegistry.get(entry[0])?.id; - if (id) { - const existing = idToSchema.get(id); - if (existing && existing !== entry[0]) { - throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`); - } - idToSchema.set(id, entry[0]); - } - } - const makeURI = (entry) => { - const defsSegment = ctx.target === "draft-2020-12" ? "$defs" : "definitions"; - if (ctx.external) { - const externalId = ctx.external.registry.get(entry[0])?.id; - const uriGenerator = ctx.external.uri ?? ((id2) => id2); - if (externalId) { - return { ref: uriGenerator(externalId) }; - } - const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`; - entry[1].defId = id; - return { defId: id, ref: `${uriGenerator("__shared")}#/${defsSegment}/${id}` }; - } - if (entry[1] === root) { - return { ref: "#" }; - } - const uriPrefix = `#`; - const defUriPrefix = `${uriPrefix}/${defsSegment}/`; - const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`; - return { defId, ref: defUriPrefix + defId }; - }; - const extractToDef = (entry) => { - if (entry[1].schema.$ref) { - return; - } - const seen = entry[1]; - const { ref, defId } = makeURI(entry); - seen.def = { ...seen.schema }; - if (defId) - seen.defId = defId; - const schema2 = seen.schema; - for (const key in schema2) { - delete schema2[key]; - } - schema2.$ref = ref; - }; - if (ctx.cycles === "throw") { - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (seen.cycle) { - throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/ - -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); - } - } - } - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (schema === entry[0]) { - extractToDef(entry); - continue; - } - if (ctx.external) { - const ext = ctx.external.registry.get(entry[0])?.id; - if (schema !== entry[0] && ext) { - extractToDef(entry); - continue; - } - } - const id = ctx.metadataRegistry.get(entry[0])?.id; - if (id) { - extractToDef(entry); - continue; - } - if (seen.cycle) { - extractToDef(entry); - continue; - } - if (seen.count > 1) { - if (ctx.reused === "ref") { - extractToDef(entry); - continue; - } - } - } -} -function finalize(ctx, schema) { - const root = ctx.seen.get(schema); - if (!root) - throw new Error("Unprocessed schema. This is a bug in Zod."); - const flattenRef = (zodSchema) => { - const seen = ctx.seen.get(zodSchema); - if (seen.ref === null) - return; - const schema2 = seen.def ?? seen.schema; - const _cached = { ...schema2 }; - const ref = seen.ref; - seen.ref = null; - if (ref) { - flattenRef(ref); - const refSeen = ctx.seen.get(ref); - const refSchema = refSeen.schema; - if (refSchema.$ref && (ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0")) { - schema2.allOf = schema2.allOf ?? []; - schema2.allOf.push(refSchema); - } else { - Object.assign(schema2, refSchema); - } - Object.assign(schema2, _cached); - const isParentRef = zodSchema._zod.parent === ref; - if (isParentRef) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (!(key in _cached)) { - delete schema2[key]; - } - } - } - if (refSchema.$ref && refSeen.def) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (key in refSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(refSeen.def[key])) { - delete schema2[key]; - } - } - } - } - const parent = zodSchema._zod.parent; - if (parent && parent !== ref) { - flattenRef(parent); - const parentSeen = ctx.seen.get(parent); - if (parentSeen?.schema.$ref) { - schema2.$ref = parentSeen.schema.$ref; - if (parentSeen.def) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (key in parentSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(parentSeen.def[key])) { - delete schema2[key]; - } - } - } - } - } - ctx.override({ - zodSchema, - jsonSchema: schema2, - path: seen.path ?? [] - }); - }; - for (const entry of [...ctx.seen.entries()].reverse()) { - flattenRef(entry[0]); - } - const result = {}; - if (ctx.target === "draft-2020-12") { - result.$schema = "https://json-schema.org/draft/2020-12/schema"; - } else if (ctx.target === "draft-07") { - result.$schema = "http://json-schema.org/draft-07/schema#"; - } else if (ctx.target === "draft-04") { - result.$schema = "http://json-schema.org/draft-04/schema#"; - } else if (ctx.target === "openapi-3.0") { - } else { - } - if (ctx.external?.uri) { - const id = ctx.external.registry.get(schema)?.id; - if (!id) - throw new Error("Schema is missing an `id` property"); - result.$id = ctx.external.uri(id); - } - Object.assign(result, root.def ?? root.schema); - const defs = ctx.external?.defs ?? {}; - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (seen.def && seen.defId) { - defs[seen.defId] = seen.def; - } - } - if (ctx.external) { - } else { - if (Object.keys(defs).length > 0) { - if (ctx.target === "draft-2020-12") { - result.$defs = defs; - } else { - result.definitions = defs; - } - } - } - try { - const finalized = JSON.parse(JSON.stringify(result)); - Object.defineProperty(finalized, "~standard", { - value: { - ...schema["~standard"], - jsonSchema: { - input: createStandardJSONSchemaMethod(schema, "input", ctx.processors), - output: createStandardJSONSchemaMethod(schema, "output", ctx.processors) - } - }, - enumerable: false, - writable: false - }); - return finalized; - } catch (_err) { - throw new Error("Error converting schema to JSON."); - } -} -function isTransforming(_schema, _ctx) { - const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() }; - if (ctx.seen.has(_schema)) - return false; - ctx.seen.add(_schema); - const def = _schema._zod.def; - if (def.type === "transform") - return true; - if (def.type === "array") - return isTransforming(def.element, ctx); - if (def.type === "set") - return isTransforming(def.valueType, ctx); - if (def.type === "lazy") - return isTransforming(def.getter(), ctx); - if (def.type === "promise" || def.type === "optional" || def.type === "nonoptional" || def.type === "nullable" || def.type === "readonly" || def.type === "default" || def.type === "prefault") { - return isTransforming(def.innerType, ctx); - } - if (def.type === "intersection") { - return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); - } - if (def.type === "record" || def.type === "map") { - return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); - } - if (def.type === "pipe") { - return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); - } - if (def.type === "object") { - for (const key in def.shape) { - if (isTransforming(def.shape[key], ctx)) - return true; - } - return false; - } - if (def.type === "union") { - for (const option of def.options) { - if (isTransforming(option, ctx)) - return true; - } - return false; - } - if (def.type === "tuple") { - for (const item of def.items) { - if (isTransforming(item, ctx)) - return true; - } - if (def.rest && isTransforming(def.rest, ctx)) - return true; - return false; - } - return false; -} -var createToJSONSchemaMethod = (schema, processors = {}) => (params) => { - const ctx = initializeContext({ ...params, processors }); - process2(schema, ctx); - extractDefs(ctx, schema); - return finalize(ctx, schema); -}; -var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => { - const { libraryOptions, target } = params ?? {}; - const ctx = initializeContext({ ...libraryOptions ?? {}, target, io, processors }); - process2(schema, ctx); - extractDefs(ctx, schema); - return finalize(ctx, schema); -}; - -// node_modules/zod/v4/core/json-schema-processors.js -var formatMap = { - guid: "uuid", - url: "uri", - datetime: "date-time", - json_string: "json-string", - regex: "" - // do not set -}; -var stringProcessor = (schema, ctx, _json, _params) => { - const json3 = _json; - json3.type = "string"; - const { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag; - if (typeof minimum === "number") - json3.minLength = minimum; - if (typeof maximum === "number") - json3.maxLength = maximum; - if (format) { - json3.format = formatMap[format] ?? format; - if (json3.format === "") - delete json3.format; - if (format === "time") { - delete json3.format; - } - } - if (contentEncoding) - json3.contentEncoding = contentEncoding; - if (patterns && patterns.size > 0) { - const regexes = [...patterns]; - if (regexes.length === 1) - json3.pattern = regexes[0].source; - else if (regexes.length > 1) { - json3.allOf = [ - ...regexes.map((regex) => ({ - ...ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0" ? { type: "string" } : {}, - pattern: regex.source - })) - ]; - } - } -}; -var numberProcessor = (schema, ctx, _json, _params) => { - const json3 = _json; - const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag; - if (typeof format === "string" && format.includes("int")) - json3.type = "integer"; - else - json3.type = "number"; - if (typeof exclusiveMinimum === "number") { - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.minimum = exclusiveMinimum; - json3.exclusiveMinimum = true; - } else { - json3.exclusiveMinimum = exclusiveMinimum; - } - } - if (typeof minimum === "number") { - json3.minimum = minimum; - if (typeof exclusiveMinimum === "number" && ctx.target !== "draft-04") { - if (exclusiveMinimum >= minimum) - delete json3.minimum; - else - delete json3.exclusiveMinimum; - } - } - if (typeof exclusiveMaximum === "number") { - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.maximum = exclusiveMaximum; - json3.exclusiveMaximum = true; - } else { - json3.exclusiveMaximum = exclusiveMaximum; - } - } - if (typeof maximum === "number") { - json3.maximum = maximum; - if (typeof exclusiveMaximum === "number" && ctx.target !== "draft-04") { - if (exclusiveMaximum <= maximum) - delete json3.maximum; - else - delete json3.exclusiveMaximum; - } - } - if (typeof multipleOf === "number") - json3.multipleOf = multipleOf; -}; -var booleanProcessor = (_schema, _ctx, json3, _params) => { - json3.type = "boolean"; -}; -var bigintProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("BigInt cannot be represented in JSON Schema"); - } -}; -var symbolProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Symbols cannot be represented in JSON Schema"); - } -}; -var nullProcessor = (_schema, ctx, json3, _params) => { - if (ctx.target === "openapi-3.0") { - json3.type = "string"; - json3.nullable = true; - json3.enum = [null]; - } else { - json3.type = "null"; - } -}; -var undefinedProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Undefined cannot be represented in JSON Schema"); - } -}; -var voidProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Void cannot be represented in JSON Schema"); - } -}; -var neverProcessor = (_schema, _ctx, json3, _params) => { - json3.not = {}; -}; -var anyProcessor = (_schema, _ctx, _json, _params) => { -}; -var unknownProcessor = (_schema, _ctx, _json, _params) => { -}; -var dateProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Date cannot be represented in JSON Schema"); - } -}; -var enumProcessor = (schema, _ctx, json3, _params) => { - const def = schema._zod.def; - const values = getEnumValues(def.entries); - if (values.every((v) => typeof v === "number")) - json3.type = "number"; - if (values.every((v) => typeof v === "string")) - json3.type = "string"; - json3.enum = values; -}; -var literalProcessor = (schema, ctx, json3, _params) => { - const def = schema._zod.def; - const vals = []; - for (const val of def.values) { - if (val === void 0) { - if (ctx.unrepresentable === "throw") { - throw new Error("Literal `undefined` cannot be represented in JSON Schema"); - } else { - } - } else if (typeof val === "bigint") { - if (ctx.unrepresentable === "throw") { - throw new Error("BigInt literals cannot be represented in JSON Schema"); - } else { - vals.push(Number(val)); - } - } else { - vals.push(val); - } - } - if (vals.length === 0) { - } else if (vals.length === 1) { - const val = vals[0]; - json3.type = val === null ? "null" : typeof val; - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.enum = [val]; - } else { - json3.const = val; - } - } else { - if (vals.every((v) => typeof v === "number")) - json3.type = "number"; - if (vals.every((v) => typeof v === "string")) - json3.type = "string"; - if (vals.every((v) => typeof v === "boolean")) - json3.type = "boolean"; - if (vals.every((v) => v === null)) - json3.type = "null"; - json3.enum = vals; - } -}; -var nanProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("NaN cannot be represented in JSON Schema"); - } -}; -var templateLiteralProcessor = (schema, _ctx, json3, _params) => { - const _json = json3; - const pattern = schema._zod.pattern; - if (!pattern) - throw new Error("Pattern not found in template literal"); - _json.type = "string"; - _json.pattern = pattern.source; -}; -var fileProcessor = (schema, _ctx, json3, _params) => { - const _json = json3; - const file3 = { - type: "string", - format: "binary", - contentEncoding: "binary" - }; - const { minimum, maximum, mime } = schema._zod.bag; - if (minimum !== void 0) - file3.minLength = minimum; - if (maximum !== void 0) - file3.maxLength = maximum; - if (mime) { - if (mime.length === 1) { - file3.contentMediaType = mime[0]; - Object.assign(_json, file3); - } else { - Object.assign(_json, file3); - _json.anyOf = mime.map((m) => ({ contentMediaType: m })); - } - } else { - Object.assign(_json, file3); - } -}; -var successProcessor = (_schema, _ctx, json3, _params) => { - json3.type = "boolean"; -}; -var customProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Custom types cannot be represented in JSON Schema"); - } -}; -var functionProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Function types cannot be represented in JSON Schema"); - } -}; -var transformProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Transforms cannot be represented in JSON Schema"); - } -}; -var mapProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Map cannot be represented in JSON Schema"); - } -}; -var setProcessor = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Set cannot be represented in JSON Schema"); - } -}; -var arrayProcessor = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - const { minimum, maximum } = schema._zod.bag; - if (typeof minimum === "number") - json3.minItems = minimum; - if (typeof maximum === "number") - json3.maxItems = maximum; - json3.type = "array"; - json3.items = process2(def.element, ctx, { ...params, path: [...params.path, "items"] }); -}; -var objectProcessor = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "object"; - json3.properties = {}; - const shape = def.shape; - for (const key in shape) { - json3.properties[key] = process2(shape[key], ctx, { - ...params, - path: [...params.path, "properties", key] - }); - } - const allKeys = new Set(Object.keys(shape)); - const requiredKeys = new Set([...allKeys].filter((key) => { - const v = def.shape[key]._zod; - if (ctx.io === "input") { - return v.optin === void 0; - } else { - return v.optout === void 0; - } - })); - if (requiredKeys.size > 0) { - json3.required = Array.from(requiredKeys); - } - if (def.catchall?._zod.def.type === "never") { - json3.additionalProperties = false; - } else if (!def.catchall) { - if (ctx.io === "output") - json3.additionalProperties = false; - } else if (def.catchall) { - json3.additionalProperties = process2(def.catchall, ctx, { - ...params, - path: [...params.path, "additionalProperties"] - }); - } -}; -var unionProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const isExclusive = def.inclusive === false; - const options = def.options.map((x, i) => process2(x, ctx, { - ...params, - path: [...params.path, isExclusive ? "oneOf" : "anyOf", i] - })); - if (isExclusive) { - json3.oneOf = options; - } else { - json3.anyOf = options; - } -}; -var intersectionProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const a = process2(def.left, ctx, { - ...params, - path: [...params.path, "allOf", 0] - }); - const b = process2(def.right, ctx, { - ...params, - path: [...params.path, "allOf", 1] - }); - const isSimpleIntersection = (val) => "allOf" in val && Object.keys(val).length === 1; - const allOf = [ - ...isSimpleIntersection(a) ? a.allOf : [a], - ...isSimpleIntersection(b) ? b.allOf : [b] - ]; - json3.allOf = allOf; -}; -var tupleProcessor = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "array"; - const prefixPath = ctx.target === "draft-2020-12" ? "prefixItems" : "items"; - const restPath = ctx.target === "draft-2020-12" ? "items" : ctx.target === "openapi-3.0" ? "items" : "additionalItems"; - const prefixItems = def.items.map((x, i) => process2(x, ctx, { - ...params, - path: [...params.path, prefixPath, i] - })); - const rest = def.rest ? process2(def.rest, ctx, { - ...params, - path: [...params.path, restPath, ...ctx.target === "openapi-3.0" ? [def.items.length] : []] - }) : null; - if (ctx.target === "draft-2020-12") { - json3.prefixItems = prefixItems; - if (rest) { - json3.items = rest; - } - } else if (ctx.target === "openapi-3.0") { - json3.items = { - anyOf: prefixItems - }; - if (rest) { - json3.items.anyOf.push(rest); - } - json3.minItems = prefixItems.length; - if (!rest) { - json3.maxItems = prefixItems.length; - } - } else { - json3.items = prefixItems; - if (rest) { - json3.additionalItems = rest; - } - } - const { minimum, maximum } = schema._zod.bag; - if (typeof minimum === "number") - json3.minItems = minimum; - if (typeof maximum === "number") - json3.maxItems = maximum; -}; -var recordProcessor = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "object"; - const keyType = def.keyType; - const keyBag = keyType._zod.bag; - const patterns = keyBag?.patterns; - if (def.mode === "loose" && patterns && patterns.size > 0) { - const valueSchema = process2(def.valueType, ctx, { - ...params, - path: [...params.path, "patternProperties", "*"] - }); - json3.patternProperties = {}; - for (const pattern of patterns) { - json3.patternProperties[pattern.source] = valueSchema; - } - } else { - if (ctx.target === "draft-07" || ctx.target === "draft-2020-12") { - json3.propertyNames = process2(def.keyType, ctx, { - ...params, - path: [...params.path, "propertyNames"] - }); - } - json3.additionalProperties = process2(def.valueType, ctx, { - ...params, - path: [...params.path, "additionalProperties"] - }); - } - const keyValues = keyType._zod.values; - if (keyValues) { - const validKeyValues = [...keyValues].filter((v) => typeof v === "string" || typeof v === "number"); - if (validKeyValues.length > 0) { - json3.required = validKeyValues; - } - } -}; -var nullableProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const inner = process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - if (ctx.target === "openapi-3.0") { - seen.ref = def.innerType; - json3.nullable = true; - } else { - json3.anyOf = [inner, { type: "null" }]; - } -}; -var nonoptionalProcessor = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var defaultProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - json3.default = JSON.parse(JSON.stringify(def.defaultValue)); -}; -var prefaultProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - if (ctx.io === "input") - json3._prefault = JSON.parse(JSON.stringify(def.defaultValue)); -}; -var catchProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - let catchValue; - try { - catchValue = def.catchValue(void 0); - } catch { - throw new Error("Dynamic catch values are not supported in JSON Schema"); - } - json3.default = catchValue; -}; -var pipeProcessor = (schema, ctx, _json, params) => { - const def = schema._zod.def; - const innerType = ctx.io === "input" ? def.in._zod.def.type === "transform" ? def.out : def.in : def.out; - process2(innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = innerType; -}; -var readonlyProcessor = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - json3.readOnly = true; -}; -var promiseProcessor = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var optionalProcessor = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process2(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var lazyProcessor = (schema, ctx, _json, params) => { - const innerType = schema._zod.innerType; - process2(innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = innerType; -}; -var allProcessors = { - string: stringProcessor, - number: numberProcessor, - boolean: booleanProcessor, - bigint: bigintProcessor, - symbol: symbolProcessor, - null: nullProcessor, - undefined: undefinedProcessor, - void: voidProcessor, - never: neverProcessor, - any: anyProcessor, - unknown: unknownProcessor, - date: dateProcessor, - enum: enumProcessor, - literal: literalProcessor, - nan: nanProcessor, - template_literal: templateLiteralProcessor, - file: fileProcessor, - success: successProcessor, - custom: customProcessor, - function: functionProcessor, - transform: transformProcessor, - map: mapProcessor, - set: setProcessor, - array: arrayProcessor, - object: objectProcessor, - union: unionProcessor, - intersection: intersectionProcessor, - tuple: tupleProcessor, - record: recordProcessor, - nullable: nullableProcessor, - nonoptional: nonoptionalProcessor, - default: defaultProcessor, - prefault: prefaultProcessor, - catch: catchProcessor, - pipe: pipeProcessor, - readonly: readonlyProcessor, - promise: promiseProcessor, - optional: optionalProcessor, - lazy: lazyProcessor -}; -function toJSONSchema(input, params) { - if ("_idmap" in input) { - const registry3 = input; - const ctx2 = initializeContext({ ...params, processors: allProcessors }); - const defs = {}; - for (const entry of registry3._idmap.entries()) { - const [_, schema] = entry; - process2(schema, ctx2); - } - const schemas = {}; - const external = { - registry: registry3, - uri: params?.uri, - defs - }; - ctx2.external = external; - for (const entry of registry3._idmap.entries()) { - const [key, schema] = entry; - extractDefs(ctx2, schema); - schemas[key] = finalize(ctx2, schema); - } - if (Object.keys(defs).length > 0) { - const defsSegment = ctx2.target === "draft-2020-12" ? "$defs" : "definitions"; - schemas.__shared = { - [defsSegment]: defs - }; - } - return { schemas }; - } - const ctx = initializeContext({ ...params, processors: allProcessors }); - process2(input, ctx); - extractDefs(ctx, input); - return finalize(ctx, input); -} - -// node_modules/zod/v4/core/json-schema-generator.js -var JSONSchemaGenerator = class { - /** @deprecated Access via ctx instead */ - get metadataRegistry() { - return this.ctx.metadataRegistry; - } - /** @deprecated Access via ctx instead */ - get target() { - return this.ctx.target; - } - /** @deprecated Access via ctx instead */ - get unrepresentable() { - return this.ctx.unrepresentable; - } - /** @deprecated Access via ctx instead */ - get override() { - return this.ctx.override; - } - /** @deprecated Access via ctx instead */ - get io() { - return this.ctx.io; - } - /** @deprecated Access via ctx instead */ - get counter() { - return this.ctx.counter; - } - set counter(value) { - this.ctx.counter = value; - } - /** @deprecated Access via ctx instead */ - get seen() { - return this.ctx.seen; - } - constructor(params) { - let normalizedTarget = params?.target ?? "draft-2020-12"; - if (normalizedTarget === "draft-4") - normalizedTarget = "draft-04"; - if (normalizedTarget === "draft-7") - normalizedTarget = "draft-07"; - this.ctx = initializeContext({ - processors: allProcessors, - target: normalizedTarget, - ...params?.metadata && { metadata: params.metadata }, - ...params?.unrepresentable && { unrepresentable: params.unrepresentable }, - ...params?.override && { override: params.override }, - ...params?.io && { io: params.io } - }); - } - /** - * Process a schema to prepare it for JSON Schema generation. - * This must be called before emit(). - */ - process(schema, _params = { path: [], schemaPath: [] }) { - return process2(schema, this.ctx, _params); - } - /** - * Emit the final JSON Schema after processing. - * Must call process() first. - */ - emit(schema, _params) { - if (_params) { - if (_params.cycles) - this.ctx.cycles = _params.cycles; - if (_params.reused) - this.ctx.reused = _params.reused; - if (_params.external) - this.ctx.external = _params.external; - } - extractDefs(this.ctx, schema); - const result = finalize(this.ctx, schema); - const { "~standard": _, ...plainResult } = result; - return plainResult; - } -}; - -// node_modules/zod/v4/core/json-schema.js -var json_schema_exports = {}; - -// node_modules/zod/v4/classic/schemas.js -var schemas_exports2 = {}; -__export(schemas_exports2, { - ZodAny: () => ZodAny, - ZodArray: () => ZodArray, - ZodBase64: () => ZodBase64, - ZodBase64URL: () => ZodBase64URL, - ZodBigInt: () => ZodBigInt, - ZodBigIntFormat: () => ZodBigIntFormat, - ZodBoolean: () => ZodBoolean, - ZodCIDRv4: () => ZodCIDRv4, - ZodCIDRv6: () => ZodCIDRv6, - ZodCUID: () => ZodCUID, - ZodCUID2: () => ZodCUID2, - ZodCatch: () => ZodCatch, - ZodCodec: () => ZodCodec, - ZodCustom: () => ZodCustom, - ZodCustomStringFormat: () => ZodCustomStringFormat, - ZodDate: () => ZodDate, - ZodDefault: () => ZodDefault, - ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, - ZodE164: () => ZodE164, - ZodEmail: () => ZodEmail, - ZodEmoji: () => ZodEmoji, - ZodEnum: () => ZodEnum, - ZodExactOptional: () => ZodExactOptional, - ZodFile: () => ZodFile, - ZodFunction: () => ZodFunction, - ZodGUID: () => ZodGUID, - ZodIPv4: () => ZodIPv4, - ZodIPv6: () => ZodIPv6, - ZodIntersection: () => ZodIntersection, - ZodJWT: () => ZodJWT, - ZodKSUID: () => ZodKSUID, - ZodLazy: () => ZodLazy, - ZodLiteral: () => ZodLiteral, - ZodMAC: () => ZodMAC, - ZodMap: () => ZodMap, - ZodNaN: () => ZodNaN, - ZodNanoID: () => ZodNanoID, - ZodNever: () => ZodNever, - ZodNonOptional: () => ZodNonOptional, - ZodNull: () => ZodNull, - ZodNullable: () => ZodNullable, - ZodNumber: () => ZodNumber, - ZodNumberFormat: () => ZodNumberFormat, - ZodObject: () => ZodObject, - ZodOptional: () => ZodOptional, - ZodPipe: () => ZodPipe, - ZodPrefault: () => ZodPrefault, - ZodPromise: () => ZodPromise, - ZodReadonly: () => ZodReadonly, - ZodRecord: () => ZodRecord, - ZodSet: () => ZodSet, - ZodString: () => ZodString, - ZodStringFormat: () => ZodStringFormat, - ZodSuccess: () => ZodSuccess, - ZodSymbol: () => ZodSymbol, - ZodTemplateLiteral: () => ZodTemplateLiteral, - ZodTransform: () => ZodTransform, - ZodTuple: () => ZodTuple, - ZodType: () => ZodType, - ZodULID: () => ZodULID, - ZodURL: () => ZodURL, - ZodUUID: () => ZodUUID, - ZodUndefined: () => ZodUndefined, - ZodUnion: () => ZodUnion, - ZodUnknown: () => ZodUnknown, - ZodVoid: () => ZodVoid, - ZodXID: () => ZodXID, - ZodXor: () => ZodXor, - _ZodString: () => _ZodString, - _default: () => _default2, - _function: () => _function, - any: () => any, - array: () => array, - base64: () => base642, - base64url: () => base64url2, - bigint: () => bigint2, - boolean: () => boolean2, - catch: () => _catch2, - check: () => check, - cidrv4: () => cidrv42, - cidrv6: () => cidrv62, - codec: () => codec, - cuid: () => cuid3, - cuid2: () => cuid22, - custom: () => custom, - date: () => date3, - describe: () => describe2, - discriminatedUnion: () => discriminatedUnion, - e164: () => e1642, - email: () => email2, - emoji: () => emoji2, - enum: () => _enum2, - exactOptional: () => exactOptional, - file: () => file, - float32: () => float32, - float64: () => float64, - function: () => _function, - guid: () => guid2, - hash: () => hash, - hex: () => hex2, - hostname: () => hostname2, - httpUrl: () => httpUrl, - instanceof: () => _instanceof, - int: () => int, - int32: () => int32, - int64: () => int64, - intersection: () => intersection, - ipv4: () => ipv42, - ipv6: () => ipv62, - json: () => json, - jwt: () => jwt, - keyof: () => keyof, - ksuid: () => ksuid2, - lazy: () => lazy, - literal: () => literal, - looseObject: () => looseObject, - looseRecord: () => looseRecord, - mac: () => mac2, - map: () => map, - meta: () => meta2, - nan: () => nan, - nanoid: () => nanoid2, - nativeEnum: () => nativeEnum, - never: () => never, - nonoptional: () => nonoptional, - null: () => _null3, - nullable: () => nullable, - nullish: () => nullish2, - number: () => number2, - object: () => object, - optional: () => optional, - partialRecord: () => partialRecord, - pipe: () => pipe, - prefault: () => prefault, - preprocess: () => preprocess, - promise: () => promise, - readonly: () => readonly, - record: () => record, - refine: () => refine, - set: () => set, - strictObject: () => strictObject, - string: () => string2, - stringFormat: () => stringFormat, - stringbool: () => stringbool, - success: () => success, - superRefine: () => superRefine, - symbol: () => symbol, - templateLiteral: () => templateLiteral, - transform: () => transform, - tuple: () => tuple, - uint32: () => uint32, - uint64: () => uint64, - ulid: () => ulid2, - undefined: () => _undefined3, - union: () => union, - unknown: () => unknown, - url: () => url, - uuid: () => uuid2, - uuidv4: () => uuidv4, - uuidv6: () => uuidv6, - uuidv7: () => uuidv7, - void: () => _void2, - xid: () => xid2, - xor: () => xor -}); - -// node_modules/zod/v4/classic/checks.js -var checks_exports2 = {}; -__export(checks_exports2, { - endsWith: () => _endsWith, - gt: () => _gt, - gte: () => _gte, - includes: () => _includes, - length: () => _length, - lowercase: () => _lowercase, - lt: () => _lt, - lte: () => _lte, - maxLength: () => _maxLength, - maxSize: () => _maxSize, - mime: () => _mime, - minLength: () => _minLength, - minSize: () => _minSize, - multipleOf: () => _multipleOf, - negative: () => _negative, - nonnegative: () => _nonnegative, - nonpositive: () => _nonpositive, - normalize: () => _normalize, - overwrite: () => _overwrite, - positive: () => _positive, - property: () => _property, - regex: () => _regex, - size: () => _size, - slugify: () => _slugify, - startsWith: () => _startsWith, - toLowerCase: () => _toLowerCase, - toUpperCase: () => _toUpperCase, - trim: () => _trim, - uppercase: () => _uppercase -}); - -// node_modules/zod/v4/classic/iso.js -var iso_exports = {}; -__export(iso_exports, { - ZodISODate: () => ZodISODate, - ZodISODateTime: () => ZodISODateTime, - ZodISODuration: () => ZodISODuration, - ZodISOTime: () => ZodISOTime, - date: () => date2, - datetime: () => datetime2, - duration: () => duration2, - time: () => time2 -}); -var ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { - $ZodISODateTime.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function datetime2(params) { - return _isoDateTime(ZodISODateTime, params); -} -var ZodISODate = /* @__PURE__ */ $constructor("ZodISODate", (inst, def) => { - $ZodISODate.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function date2(params) { - return _isoDate(ZodISODate, params); -} -var ZodISOTime = /* @__PURE__ */ $constructor("ZodISOTime", (inst, def) => { - $ZodISOTime.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function time2(params) { - return _isoTime(ZodISOTime, params); -} -var ZodISODuration = /* @__PURE__ */ $constructor("ZodISODuration", (inst, def) => { - $ZodISODuration.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function duration2(params) { - return _isoDuration(ZodISODuration, params); -} - -// node_modules/zod/v4/classic/errors.js -var initializer2 = (inst, issues) => { - $ZodError.init(inst, issues); - inst.name = "ZodError"; - Object.defineProperties(inst, { - format: { - value: (mapper) => formatError(inst, mapper) - // enumerable: false, - }, - flatten: { - value: (mapper) => flattenError(inst, mapper) - // enumerable: false, - }, - addIssue: { - value: (issue3) => { - inst.issues.push(issue3); - inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2); - } - // enumerable: false, - }, - addIssues: { - value: (issues2) => { - inst.issues.push(...issues2); - inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2); - } - // enumerable: false, - }, - isEmpty: { - get() { - return inst.issues.length === 0; - } - // enumerable: false, - } - }); -}; -var ZodError = $constructor("ZodError", initializer2); -var ZodRealError = $constructor("ZodError", initializer2, { - Parent: Error -}); - -// node_modules/zod/v4/classic/parse.js -var parse2 = /* @__PURE__ */ _parse(ZodRealError); -var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError); -var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError); -var safeParseAsync2 = /* @__PURE__ */ _safeParseAsync(ZodRealError); -var encode2 = /* @__PURE__ */ _encode(ZodRealError); -var decode2 = /* @__PURE__ */ _decode(ZodRealError); -var encodeAsync2 = /* @__PURE__ */ _encodeAsync(ZodRealError); -var decodeAsync2 = /* @__PURE__ */ _decodeAsync(ZodRealError); -var safeEncode2 = /* @__PURE__ */ _safeEncode(ZodRealError); -var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError); -var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); -var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); - -// node_modules/zod/v4/classic/schemas.js -var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { - $ZodType.init(inst, def); - Object.assign(inst["~standard"], { - jsonSchema: { - input: createStandardJSONSchemaMethod(inst, "input"), - output: createStandardJSONSchemaMethod(inst, "output") - } - }); - inst.toJSONSchema = createToJSONSchemaMethod(inst, {}); - inst.def = def; - inst.type = def.type; - Object.defineProperty(inst, "_def", { value: def }); - inst.check = (...checks) => { - return inst.clone(util_exports.mergeDefs(def, { - checks: [ - ...def.checks ?? [], - ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) - ] - }), { - parent: true - }); - }; - inst.with = inst.check; - inst.clone = (def2, params) => clone(inst, def2, params); - inst.brand = () => inst; - inst.register = ((reg, meta5) => { - reg.add(inst, meta5); - return inst; - }); - inst.parse = (data, params) => parse2(inst, data, params, { callee: inst.parse }); - inst.safeParse = (data, params) => safeParse2(inst, data, params); - inst.parseAsync = async (data, params) => parseAsync2(inst, data, params, { callee: inst.parseAsync }); - inst.safeParseAsync = async (data, params) => safeParseAsync2(inst, data, params); - inst.spa = inst.safeParseAsync; - inst.encode = (data, params) => encode2(inst, data, params); - inst.decode = (data, params) => decode2(inst, data, params); - inst.encodeAsync = async (data, params) => encodeAsync2(inst, data, params); - inst.decodeAsync = async (data, params) => decodeAsync2(inst, data, params); - inst.safeEncode = (data, params) => safeEncode2(inst, data, params); - inst.safeDecode = (data, params) => safeDecode2(inst, data, params); - inst.safeEncodeAsync = async (data, params) => safeEncodeAsync2(inst, data, params); - inst.safeDecodeAsync = async (data, params) => safeDecodeAsync2(inst, data, params); - inst.refine = (check3, params) => inst.check(refine(check3, params)); - inst.superRefine = (refinement) => inst.check(superRefine(refinement)); - inst.overwrite = (fn) => inst.check(_overwrite(fn)); - inst.optional = () => optional(inst); - inst.exactOptional = () => exactOptional(inst); - inst.nullable = () => nullable(inst); - inst.nullish = () => optional(nullable(inst)); - inst.nonoptional = (params) => nonoptional(inst, params); - inst.array = () => array(inst); - inst.or = (arg) => union([inst, arg]); - inst.and = (arg) => intersection(inst, arg); - inst.transform = (tx) => pipe(inst, transform(tx)); - inst.default = (def2) => _default2(inst, def2); - inst.prefault = (def2) => prefault(inst, def2); - inst.catch = (params) => _catch2(inst, params); - inst.pipe = (target) => pipe(inst, target); - inst.readonly = () => readonly(inst); - inst.describe = (description) => { - const cl = inst.clone(); - globalRegistry.add(cl, { description }); - return cl; - }; - Object.defineProperty(inst, "description", { - get() { - return globalRegistry.get(inst)?.description; - }, - configurable: true - }); - inst.meta = (...args) => { - if (args.length === 0) { - return globalRegistry.get(inst); - } - const cl = inst.clone(); - globalRegistry.add(cl, args[0]); - return cl; - }; - inst.isOptional = () => inst.safeParse(void 0).success; - inst.isNullable = () => inst.safeParse(null).success; - inst.apply = (fn) => fn(inst); - return inst; -}); -var _ZodString = /* @__PURE__ */ $constructor("_ZodString", (inst, def) => { - $ZodString.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => stringProcessor(inst, ctx, json3, params); - const bag = inst._zod.bag; - inst.format = bag.format ?? null; - inst.minLength = bag.minimum ?? null; - inst.maxLength = bag.maximum ?? null; - inst.regex = (...args) => inst.check(_regex(...args)); - inst.includes = (...args) => inst.check(_includes(...args)); - inst.startsWith = (...args) => inst.check(_startsWith(...args)); - inst.endsWith = (...args) => inst.check(_endsWith(...args)); - inst.min = (...args) => inst.check(_minLength(...args)); - inst.max = (...args) => inst.check(_maxLength(...args)); - inst.length = (...args) => inst.check(_length(...args)); - inst.nonempty = (...args) => inst.check(_minLength(1, ...args)); - inst.lowercase = (params) => inst.check(_lowercase(params)); - inst.uppercase = (params) => inst.check(_uppercase(params)); - inst.trim = () => inst.check(_trim()); - inst.normalize = (...args) => inst.check(_normalize(...args)); - inst.toLowerCase = () => inst.check(_toLowerCase()); - inst.toUpperCase = () => inst.check(_toUpperCase()); - inst.slugify = () => inst.check(_slugify()); -}); -var ZodString = /* @__PURE__ */ $constructor("ZodString", (inst, def) => { - $ZodString.init(inst, def); - _ZodString.init(inst, def); - inst.email = (params) => inst.check(_email(ZodEmail, params)); - inst.url = (params) => inst.check(_url(ZodURL, params)); - inst.jwt = (params) => inst.check(_jwt(ZodJWT, params)); - inst.emoji = (params) => inst.check(_emoji2(ZodEmoji, params)); - inst.guid = (params) => inst.check(_guid(ZodGUID, params)); - inst.uuid = (params) => inst.check(_uuid(ZodUUID, params)); - inst.uuidv4 = (params) => inst.check(_uuidv4(ZodUUID, params)); - inst.uuidv6 = (params) => inst.check(_uuidv6(ZodUUID, params)); - inst.uuidv7 = (params) => inst.check(_uuidv7(ZodUUID, params)); - inst.nanoid = (params) => inst.check(_nanoid(ZodNanoID, params)); - inst.guid = (params) => inst.check(_guid(ZodGUID, params)); - inst.cuid = (params) => inst.check(_cuid(ZodCUID, params)); - inst.cuid2 = (params) => inst.check(_cuid2(ZodCUID2, params)); - inst.ulid = (params) => inst.check(_ulid(ZodULID, params)); - inst.base64 = (params) => inst.check(_base64(ZodBase64, params)); - inst.base64url = (params) => inst.check(_base64url(ZodBase64URL, params)); - inst.xid = (params) => inst.check(_xid(ZodXID, params)); - inst.ksuid = (params) => inst.check(_ksuid(ZodKSUID, params)); - inst.ipv4 = (params) => inst.check(_ipv4(ZodIPv4, params)); - inst.ipv6 = (params) => inst.check(_ipv6(ZodIPv6, params)); - inst.cidrv4 = (params) => inst.check(_cidrv4(ZodCIDRv4, params)); - inst.cidrv6 = (params) => inst.check(_cidrv6(ZodCIDRv6, params)); - inst.e164 = (params) => inst.check(_e164(ZodE164, params)); - inst.datetime = (params) => inst.check(datetime2(params)); - inst.date = (params) => inst.check(date2(params)); - inst.time = (params) => inst.check(time2(params)); - inst.duration = (params) => inst.check(duration2(params)); -}); -function string2(params) { - return _string(ZodString, params); -} -var ZodStringFormat = /* @__PURE__ */ $constructor("ZodStringFormat", (inst, def) => { - $ZodStringFormat.init(inst, def); - _ZodString.init(inst, def); -}); -var ZodEmail = /* @__PURE__ */ $constructor("ZodEmail", (inst, def) => { - $ZodEmail.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function email2(params) { - return _email(ZodEmail, params); -} -var ZodGUID = /* @__PURE__ */ $constructor("ZodGUID", (inst, def) => { - $ZodGUID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function guid2(params) { - return _guid(ZodGUID, params); -} -var ZodUUID = /* @__PURE__ */ $constructor("ZodUUID", (inst, def) => { - $ZodUUID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function uuid2(params) { - return _uuid(ZodUUID, params); -} -function uuidv4(params) { - return _uuidv4(ZodUUID, params); -} -function uuidv6(params) { - return _uuidv6(ZodUUID, params); -} -function uuidv7(params) { - return _uuidv7(ZodUUID, params); -} -var ZodURL = /* @__PURE__ */ $constructor("ZodURL", (inst, def) => { - $ZodURL.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function url(params) { - return _url(ZodURL, params); -} -function httpUrl(params) { - return _url(ZodURL, { - protocol: /^https?$/, - hostname: regexes_exports.domain, - ...util_exports.normalizeParams(params) - }); -} -var ZodEmoji = /* @__PURE__ */ $constructor("ZodEmoji", (inst, def) => { - $ZodEmoji.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function emoji2(params) { - return _emoji2(ZodEmoji, params); -} -var ZodNanoID = /* @__PURE__ */ $constructor("ZodNanoID", (inst, def) => { - $ZodNanoID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function nanoid2(params) { - return _nanoid(ZodNanoID, params); -} -var ZodCUID = /* @__PURE__ */ $constructor("ZodCUID", (inst, def) => { - $ZodCUID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function cuid3(params) { - return _cuid(ZodCUID, params); -} -var ZodCUID2 = /* @__PURE__ */ $constructor("ZodCUID2", (inst, def) => { - $ZodCUID2.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function cuid22(params) { - return _cuid2(ZodCUID2, params); -} -var ZodULID = /* @__PURE__ */ $constructor("ZodULID", (inst, def) => { - $ZodULID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function ulid2(params) { - return _ulid(ZodULID, params); -} -var ZodXID = /* @__PURE__ */ $constructor("ZodXID", (inst, def) => { - $ZodXID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function xid2(params) { - return _xid(ZodXID, params); -} -var ZodKSUID = /* @__PURE__ */ $constructor("ZodKSUID", (inst, def) => { - $ZodKSUID.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function ksuid2(params) { - return _ksuid(ZodKSUID, params); -} -var ZodIPv4 = /* @__PURE__ */ $constructor("ZodIPv4", (inst, def) => { - $ZodIPv4.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function ipv42(params) { - return _ipv4(ZodIPv4, params); -} -var ZodMAC = /* @__PURE__ */ $constructor("ZodMAC", (inst, def) => { - $ZodMAC.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function mac2(params) { - return _mac(ZodMAC, params); -} -var ZodIPv6 = /* @__PURE__ */ $constructor("ZodIPv6", (inst, def) => { - $ZodIPv6.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function ipv62(params) { - return _ipv6(ZodIPv6, params); -} -var ZodCIDRv4 = /* @__PURE__ */ $constructor("ZodCIDRv4", (inst, def) => { - $ZodCIDRv4.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function cidrv42(params) { - return _cidrv4(ZodCIDRv4, params); -} -var ZodCIDRv6 = /* @__PURE__ */ $constructor("ZodCIDRv6", (inst, def) => { - $ZodCIDRv6.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function cidrv62(params) { - return _cidrv6(ZodCIDRv6, params); -} -var ZodBase64 = /* @__PURE__ */ $constructor("ZodBase64", (inst, def) => { - $ZodBase64.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function base642(params) { - return _base64(ZodBase64, params); -} -var ZodBase64URL = /* @__PURE__ */ $constructor("ZodBase64URL", (inst, def) => { - $ZodBase64URL.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function base64url2(params) { - return _base64url(ZodBase64URL, params); -} -var ZodE164 = /* @__PURE__ */ $constructor("ZodE164", (inst, def) => { - $ZodE164.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function e1642(params) { - return _e164(ZodE164, params); -} -var ZodJWT = /* @__PURE__ */ $constructor("ZodJWT", (inst, def) => { - $ZodJWT.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function jwt(params) { - return _jwt(ZodJWT, params); -} -var ZodCustomStringFormat = /* @__PURE__ */ $constructor("ZodCustomStringFormat", (inst, def) => { - $ZodCustomStringFormat.init(inst, def); - ZodStringFormat.init(inst, def); -}); -function stringFormat(format, fnOrRegex, _params = {}) { - return _stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params); -} -function hostname2(_params) { - return _stringFormat(ZodCustomStringFormat, "hostname", regexes_exports.hostname, _params); -} -function hex2(_params) { - return _stringFormat(ZodCustomStringFormat, "hex", regexes_exports.hex, _params); -} -function hash(alg, params) { - const enc = params?.enc ?? "hex"; - const format = `${alg}_${enc}`; - const regex = regexes_exports[format]; - if (!regex) - throw new Error(`Unrecognized hash format: ${format}`); - return _stringFormat(ZodCustomStringFormat, format, regex, params); -} -var ZodNumber = /* @__PURE__ */ $constructor("ZodNumber", (inst, def) => { - $ZodNumber.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => numberProcessor(inst, ctx, json3, params); - inst.gt = (value, params) => inst.check(_gt(value, params)); - inst.gte = (value, params) => inst.check(_gte(value, params)); - inst.min = (value, params) => inst.check(_gte(value, params)); - inst.lt = (value, params) => inst.check(_lt(value, params)); - inst.lte = (value, params) => inst.check(_lte(value, params)); - inst.max = (value, params) => inst.check(_lte(value, params)); - inst.int = (params) => inst.check(int(params)); - inst.safe = (params) => inst.check(int(params)); - inst.positive = (params) => inst.check(_gt(0, params)); - inst.nonnegative = (params) => inst.check(_gte(0, params)); - inst.negative = (params) => inst.check(_lt(0, params)); - inst.nonpositive = (params) => inst.check(_lte(0, params)); - inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); - inst.step = (value, params) => inst.check(_multipleOf(value, params)); - inst.finite = () => inst; - const bag = inst._zod.bag; - inst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null; - inst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null; - inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5); - inst.isFinite = true; - inst.format = bag.format ?? null; -}); -function number2(params) { - return _number(ZodNumber, params); -} -var ZodNumberFormat = /* @__PURE__ */ $constructor("ZodNumberFormat", (inst, def) => { - $ZodNumberFormat.init(inst, def); - ZodNumber.init(inst, def); -}); -function int(params) { - return _int(ZodNumberFormat, params); -} -function float32(params) { - return _float32(ZodNumberFormat, params); -} -function float64(params) { - return _float64(ZodNumberFormat, params); -} -function int32(params) { - return _int32(ZodNumberFormat, params); -} -function uint32(params) { - return _uint32(ZodNumberFormat, params); -} -var ZodBoolean = /* @__PURE__ */ $constructor("ZodBoolean", (inst, def) => { - $ZodBoolean.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => booleanProcessor(inst, ctx, json3, params); -}); -function boolean2(params) { - return _boolean(ZodBoolean, params); -} -var ZodBigInt = /* @__PURE__ */ $constructor("ZodBigInt", (inst, def) => { - $ZodBigInt.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => bigintProcessor(inst, ctx, json3, params); - inst.gte = (value, params) => inst.check(_gte(value, params)); - inst.min = (value, params) => inst.check(_gte(value, params)); - inst.gt = (value, params) => inst.check(_gt(value, params)); - inst.gte = (value, params) => inst.check(_gte(value, params)); - inst.min = (value, params) => inst.check(_gte(value, params)); - inst.lt = (value, params) => inst.check(_lt(value, params)); - inst.lte = (value, params) => inst.check(_lte(value, params)); - inst.max = (value, params) => inst.check(_lte(value, params)); - inst.positive = (params) => inst.check(_gt(BigInt(0), params)); - inst.negative = (params) => inst.check(_lt(BigInt(0), params)); - inst.nonpositive = (params) => inst.check(_lte(BigInt(0), params)); - inst.nonnegative = (params) => inst.check(_gte(BigInt(0), params)); - inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); - const bag = inst._zod.bag; - inst.minValue = bag.minimum ?? null; - inst.maxValue = bag.maximum ?? null; - inst.format = bag.format ?? null; -}); -function bigint2(params) { - return _bigint(ZodBigInt, params); -} -var ZodBigIntFormat = /* @__PURE__ */ $constructor("ZodBigIntFormat", (inst, def) => { - $ZodBigIntFormat.init(inst, def); - ZodBigInt.init(inst, def); -}); -function int64(params) { - return _int64(ZodBigIntFormat, params); -} -function uint64(params) { - return _uint64(ZodBigIntFormat, params); -} -var ZodSymbol = /* @__PURE__ */ $constructor("ZodSymbol", (inst, def) => { - $ZodSymbol.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => symbolProcessor(inst, ctx, json3, params); -}); -function symbol(params) { - return _symbol(ZodSymbol, params); -} -var ZodUndefined = /* @__PURE__ */ $constructor("ZodUndefined", (inst, def) => { - $ZodUndefined.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => undefinedProcessor(inst, ctx, json3, params); -}); -function _undefined3(params) { - return _undefined2(ZodUndefined, params); -} -var ZodNull = /* @__PURE__ */ $constructor("ZodNull", (inst, def) => { - $ZodNull.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nullProcessor(inst, ctx, json3, params); -}); -function _null3(params) { - return _null2(ZodNull, params); -} -var ZodAny = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => { - $ZodAny.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => anyProcessor(inst, ctx, json3, params); -}); -function any() { - return _any(ZodAny); -} -var ZodUnknown = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => { - $ZodUnknown.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unknownProcessor(inst, ctx, json3, params); -}); -function unknown() { - return _unknown(ZodUnknown); -} -var ZodNever = /* @__PURE__ */ $constructor("ZodNever", (inst, def) => { - $ZodNever.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => neverProcessor(inst, ctx, json3, params); -}); -function never(params) { - return _never(ZodNever, params); -} -var ZodVoid = /* @__PURE__ */ $constructor("ZodVoid", (inst, def) => { - $ZodVoid.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => voidProcessor(inst, ctx, json3, params); -}); -function _void2(params) { - return _void(ZodVoid, params); -} -var ZodDate = /* @__PURE__ */ $constructor("ZodDate", (inst, def) => { - $ZodDate.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => dateProcessor(inst, ctx, json3, params); - inst.min = (value, params) => inst.check(_gte(value, params)); - inst.max = (value, params) => inst.check(_lte(value, params)); - const c = inst._zod.bag; - inst.minDate = c.minimum ? new Date(c.minimum) : null; - inst.maxDate = c.maximum ? new Date(c.maximum) : null; -}); -function date3(params) { - return _date(ZodDate, params); -} -var ZodArray = /* @__PURE__ */ $constructor("ZodArray", (inst, def) => { - $ZodArray.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => arrayProcessor(inst, ctx, json3, params); - inst.element = def.element; - inst.min = (minLength, params) => inst.check(_minLength(minLength, params)); - inst.nonempty = (params) => inst.check(_minLength(1, params)); - inst.max = (maxLength, params) => inst.check(_maxLength(maxLength, params)); - inst.length = (len, params) => inst.check(_length(len, params)); - inst.unwrap = () => inst.element; -}); -function array(element, params) { - return _array(ZodArray, element, params); -} -function keyof(schema) { - const shape = schema._zod.def.shape; - return _enum2(Object.keys(shape)); -} -var ZodObject = /* @__PURE__ */ $constructor("ZodObject", (inst, def) => { - $ZodObjectJIT.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => objectProcessor(inst, ctx, json3, params); - util_exports.defineLazy(inst, "shape", () => { - return def.shape; - }); - inst.keyof = () => _enum2(Object.keys(inst._zod.def.shape)); - inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall }); - inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); - inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); - inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() }); - inst.strip = () => inst.clone({ ...inst._zod.def, catchall: void 0 }); - inst.extend = (incoming) => { - return util_exports.extend(inst, incoming); - }; - inst.safeExtend = (incoming) => { - return util_exports.safeExtend(inst, incoming); - }; - inst.merge = (other) => util_exports.merge(inst, other); - inst.pick = (mask) => util_exports.pick(inst, mask); - inst.omit = (mask) => util_exports.omit(inst, mask); - inst.partial = (...args) => util_exports.partial(ZodOptional, inst, args[0]); - inst.required = (...args) => util_exports.required(ZodNonOptional, inst, args[0]); -}); -function object(shape, params) { - const def = { - type: "object", - shape: shape ?? {}, - ...util_exports.normalizeParams(params) - }; - return new ZodObject(def); -} -function strictObject(shape, params) { - return new ZodObject({ - type: "object", - shape, - catchall: never(), - ...util_exports.normalizeParams(params) - }); -} -function looseObject(shape, params) { - return new ZodObject({ - type: "object", - shape, - catchall: unknown(), - ...util_exports.normalizeParams(params) - }); -} -var ZodUnion = /* @__PURE__ */ $constructor("ZodUnion", (inst, def) => { - $ZodUnion.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unionProcessor(inst, ctx, json3, params); - inst.options = def.options; -}); -function union(options, params) { - return new ZodUnion({ - type: "union", - options, - ...util_exports.normalizeParams(params) - }); -} -var ZodXor = /* @__PURE__ */ $constructor("ZodXor", (inst, def) => { - ZodUnion.init(inst, def); - $ZodXor.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unionProcessor(inst, ctx, json3, params); - inst.options = def.options; -}); -function xor(options, params) { - return new ZodXor({ - type: "union", - options, - inclusive: false, - ...util_exports.normalizeParams(params) - }); -} -var ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("ZodDiscriminatedUnion", (inst, def) => { - ZodUnion.init(inst, def); - $ZodDiscriminatedUnion.init(inst, def); -}); -function discriminatedUnion(discriminator, options, params) { - return new ZodDiscriminatedUnion({ - type: "union", - options, - discriminator, - ...util_exports.normalizeParams(params) - }); -} -var ZodIntersection = /* @__PURE__ */ $constructor("ZodIntersection", (inst, def) => { - $ZodIntersection.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => intersectionProcessor(inst, ctx, json3, params); -}); -function intersection(left, right) { - return new ZodIntersection({ - type: "intersection", - left, - right - }); -} -var ZodTuple = /* @__PURE__ */ $constructor("ZodTuple", (inst, def) => { - $ZodTuple.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => tupleProcessor(inst, ctx, json3, params); - inst.rest = (rest) => inst.clone({ - ...inst._zod.def, - rest - }); -}); -function tuple(items, _paramsOrRest, _params) { - const hasRest = _paramsOrRest instanceof $ZodType; - const params = hasRest ? _params : _paramsOrRest; - const rest = hasRest ? _paramsOrRest : null; - return new ZodTuple({ - type: "tuple", - items, - rest, - ...util_exports.normalizeParams(params) - }); -} -var ZodRecord = /* @__PURE__ */ $constructor("ZodRecord", (inst, def) => { - $ZodRecord.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => recordProcessor(inst, ctx, json3, params); - inst.keyType = def.keyType; - inst.valueType = def.valueType; -}); -function record(keyType, valueType, params) { - return new ZodRecord({ - type: "record", - keyType, - valueType, - ...util_exports.normalizeParams(params) - }); -} -function partialRecord(keyType, valueType, params) { - const k = clone(keyType); - k._zod.values = void 0; - return new ZodRecord({ - type: "record", - keyType: k, - valueType, - ...util_exports.normalizeParams(params) - }); -} -function looseRecord(keyType, valueType, params) { - return new ZodRecord({ - type: "record", - keyType, - valueType, - mode: "loose", - ...util_exports.normalizeParams(params) - }); -} -var ZodMap = /* @__PURE__ */ $constructor("ZodMap", (inst, def) => { - $ZodMap.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => mapProcessor(inst, ctx, json3, params); - inst.keyType = def.keyType; - inst.valueType = def.valueType; - inst.min = (...args) => inst.check(_minSize(...args)); - inst.nonempty = (params) => inst.check(_minSize(1, params)); - inst.max = (...args) => inst.check(_maxSize(...args)); - inst.size = (...args) => inst.check(_size(...args)); -}); -function map(keyType, valueType, params) { - return new ZodMap({ - type: "map", - keyType, - valueType, - ...util_exports.normalizeParams(params) - }); -} -var ZodSet = /* @__PURE__ */ $constructor("ZodSet", (inst, def) => { - $ZodSet.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => setProcessor(inst, ctx, json3, params); - inst.min = (...args) => inst.check(_minSize(...args)); - inst.nonempty = (params) => inst.check(_minSize(1, params)); - inst.max = (...args) => inst.check(_maxSize(...args)); - inst.size = (...args) => inst.check(_size(...args)); -}); -function set(valueType, params) { - return new ZodSet({ - type: "set", - valueType, - ...util_exports.normalizeParams(params) - }); -} -var ZodEnum = /* @__PURE__ */ $constructor("ZodEnum", (inst, def) => { - $ZodEnum.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => enumProcessor(inst, ctx, json3, params); - inst.enum = def.entries; - inst.options = Object.values(def.entries); - const keys = new Set(Object.keys(def.entries)); - inst.extract = (values, params) => { - const newEntries = {}; - for (const value of values) { - if (keys.has(value)) { - newEntries[value] = def.entries[value]; - } else - throw new Error(`Key ${value} not found in enum`); - } - return new ZodEnum({ - ...def, - checks: [], - ...util_exports.normalizeParams(params), - entries: newEntries - }); - }; - inst.exclude = (values, params) => { - const newEntries = { ...def.entries }; - for (const value of values) { - if (keys.has(value)) { - delete newEntries[value]; - } else - throw new Error(`Key ${value} not found in enum`); - } - return new ZodEnum({ - ...def, - checks: [], - ...util_exports.normalizeParams(params), - entries: newEntries - }); - }; -}); -function _enum2(values, params) { - const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; - return new ZodEnum({ - type: "enum", - entries, - ...util_exports.normalizeParams(params) - }); -} -function nativeEnum(entries, params) { - return new ZodEnum({ - type: "enum", - entries, - ...util_exports.normalizeParams(params) - }); -} -var ZodLiteral = /* @__PURE__ */ $constructor("ZodLiteral", (inst, def) => { - $ZodLiteral.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => literalProcessor(inst, ctx, json3, params); - inst.values = new Set(def.values); - Object.defineProperty(inst, "value", { - get() { - if (def.values.length > 1) { - throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); - } - return def.values[0]; - } - }); -}); -function literal(value, params) { - return new ZodLiteral({ - type: "literal", - values: Array.isArray(value) ? value : [value], - ...util_exports.normalizeParams(params) - }); -} -var ZodFile = /* @__PURE__ */ $constructor("ZodFile", (inst, def) => { - $ZodFile.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => fileProcessor(inst, ctx, json3, params); - inst.min = (size, params) => inst.check(_minSize(size, params)); - inst.max = (size, params) => inst.check(_maxSize(size, params)); - inst.mime = (types, params) => inst.check(_mime(Array.isArray(types) ? types : [types], params)); -}); -function file(params) { - return _file(ZodFile, params); -} -var ZodTransform = /* @__PURE__ */ $constructor("ZodTransform", (inst, def) => { - $ZodTransform.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => transformProcessor(inst, ctx, json3, params); - inst._zod.parse = (payload, _ctx) => { - if (_ctx.direction === "backward") { - throw new $ZodEncodeError(inst.constructor.name); - } - payload.addIssue = (issue3) => { - if (typeof issue3 === "string") { - payload.issues.push(util_exports.issue(issue3, payload.value, def)); - } else { - const _issue = issue3; - if (_issue.fatal) - _issue.continue = false; - _issue.code ?? (_issue.code = "custom"); - _issue.input ?? (_issue.input = payload.value); - _issue.inst ?? (_issue.inst = inst); - payload.issues.push(util_exports.issue(_issue)); - } - }; - const output = def.transform(payload.value, payload); - if (output instanceof Promise) { - return output.then((output2) => { - payload.value = output2; - return payload; - }); - } - payload.value = output; - return payload; - }; -}); -function transform(fn) { - return new ZodTransform({ - type: "transform", - transform: fn - }); -} -var ZodOptional = /* @__PURE__ */ $constructor("ZodOptional", (inst, def) => { - $ZodOptional.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => optionalProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function optional(innerType) { - return new ZodOptional({ - type: "optional", - innerType - }); -} -var ZodExactOptional = /* @__PURE__ */ $constructor("ZodExactOptional", (inst, def) => { - $ZodExactOptional.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => optionalProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function exactOptional(innerType) { - return new ZodExactOptional({ - type: "optional", - innerType - }); -} -var ZodNullable = /* @__PURE__ */ $constructor("ZodNullable", (inst, def) => { - $ZodNullable.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nullableProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function nullable(innerType) { - return new ZodNullable({ - type: "nullable", - innerType - }); -} -function nullish2(innerType) { - return optional(nullable(innerType)); -} -var ZodDefault = /* @__PURE__ */ $constructor("ZodDefault", (inst, def) => { - $ZodDefault.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => defaultProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; - inst.removeDefault = inst.unwrap; -}); -function _default2(innerType, defaultValue) { - return new ZodDefault({ - type: "default", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); - } - }); -} -var ZodPrefault = /* @__PURE__ */ $constructor("ZodPrefault", (inst, def) => { - $ZodPrefault.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => prefaultProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function prefault(innerType, defaultValue) { - return new ZodPrefault({ - type: "prefault", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); - } - }); -} -var ZodNonOptional = /* @__PURE__ */ $constructor("ZodNonOptional", (inst, def) => { - $ZodNonOptional.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nonoptionalProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function nonoptional(innerType, params) { - return new ZodNonOptional({ - type: "nonoptional", - innerType, - ...util_exports.normalizeParams(params) - }); -} -var ZodSuccess = /* @__PURE__ */ $constructor("ZodSuccess", (inst, def) => { - $ZodSuccess.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => successProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function success(innerType) { - return new ZodSuccess({ - type: "success", - innerType - }); -} -var ZodCatch = /* @__PURE__ */ $constructor("ZodCatch", (inst, def) => { - $ZodCatch.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => catchProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; - inst.removeCatch = inst.unwrap; -}); -function _catch2(innerType, catchValue) { - return new ZodCatch({ - type: "catch", - innerType, - catchValue: typeof catchValue === "function" ? catchValue : () => catchValue - }); -} -var ZodNaN = /* @__PURE__ */ $constructor("ZodNaN", (inst, def) => { - $ZodNaN.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nanProcessor(inst, ctx, json3, params); -}); -function nan(params) { - return _nan(ZodNaN, params); -} -var ZodPipe = /* @__PURE__ */ $constructor("ZodPipe", (inst, def) => { - $ZodPipe.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => pipeProcessor(inst, ctx, json3, params); - inst.in = def.in; - inst.out = def.out; -}); -function pipe(in_, out) { - return new ZodPipe({ - type: "pipe", - in: in_, - out - // ...util.normalizeParams(params), - }); -} -var ZodCodec = /* @__PURE__ */ $constructor("ZodCodec", (inst, def) => { - ZodPipe.init(inst, def); - $ZodCodec.init(inst, def); -}); -function codec(in_, out, params) { - return new ZodCodec({ - type: "pipe", - in: in_, - out, - transform: params.decode, - reverseTransform: params.encode - }); -} -var ZodReadonly = /* @__PURE__ */ $constructor("ZodReadonly", (inst, def) => { - $ZodReadonly.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => readonlyProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function readonly(innerType) { - return new ZodReadonly({ - type: "readonly", - innerType - }); -} -var ZodTemplateLiteral = /* @__PURE__ */ $constructor("ZodTemplateLiteral", (inst, def) => { - $ZodTemplateLiteral.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => templateLiteralProcessor(inst, ctx, json3, params); -}); -function templateLiteral(parts, params) { - return new ZodTemplateLiteral({ - type: "template_literal", - parts, - ...util_exports.normalizeParams(params) - }); -} -var ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => { - $ZodLazy.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => lazyProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.getter(); -}); -function lazy(getter) { - return new ZodLazy({ - type: "lazy", - getter - }); -} -var ZodPromise = /* @__PURE__ */ $constructor("ZodPromise", (inst, def) => { - $ZodPromise.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => promiseProcessor(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function promise(innerType) { - return new ZodPromise({ - type: "promise", - innerType - }); -} -var ZodFunction = /* @__PURE__ */ $constructor("ZodFunction", (inst, def) => { - $ZodFunction.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => functionProcessor(inst, ctx, json3, params); -}); -function _function(params) { - return new ZodFunction({ - type: "function", - input: Array.isArray(params?.input) ? tuple(params?.input) : params?.input ?? array(unknown()), - output: params?.output ?? unknown() - }); -} -var ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => { - $ZodCustom.init(inst, def); - ZodType.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => customProcessor(inst, ctx, json3, params); -}); -function check(fn) { - const ch = new $ZodCheck({ - check: "custom" - // ...util.normalizeParams(params), - }); - ch._zod.check = fn; - return ch; -} -function custom(fn, _params) { - return _custom(ZodCustom, fn ?? (() => true), _params); -} -function refine(fn, _params = {}) { - return _refine(ZodCustom, fn, _params); -} -function superRefine(fn) { - return _superRefine(fn); -} -var describe2 = describe; -var meta2 = meta; -function _instanceof(cls, params = {}) { - const inst = new ZodCustom({ - type: "custom", - check: "custom", - fn: (data) => data instanceof cls, - abort: true, - ...util_exports.normalizeParams(params) - }); - inst._zod.bag.Class = cls; - inst._zod.check = (payload) => { - if (!(payload.value instanceof cls)) { - payload.issues.push({ - code: "invalid_type", - expected: cls.name, - input: payload.value, - inst, - path: [...inst._zod.def.path ?? []] - }); - } - }; - return inst; -} -var stringbool = (...args) => _stringbool({ - Codec: ZodCodec, - Boolean: ZodBoolean, - String: ZodString -}, ...args); -function json(params) { - const jsonSchema = lazy(() => { - return union([string2(params), number2(), boolean2(), _null3(), array(jsonSchema), record(string2(), jsonSchema)]); - }); - return jsonSchema; -} -function preprocess(fn, schema) { - return pipe(transform(fn), schema); -} - -// node_modules/zod/v4/classic/compat.js -var ZodIssueCode = { - invalid_type: "invalid_type", - too_big: "too_big", - too_small: "too_small", - invalid_format: "invalid_format", - not_multiple_of: "not_multiple_of", - unrecognized_keys: "unrecognized_keys", - invalid_union: "invalid_union", - invalid_key: "invalid_key", - invalid_element: "invalid_element", - invalid_value: "invalid_value", - custom: "custom" -}; -function setErrorMap(map3) { - config({ - customError: map3 - }); -} -function getErrorMap() { - return config().customError; -} -var ZodFirstPartyTypeKind; -/* @__PURE__ */ (function(ZodFirstPartyTypeKind3) { -})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); - -// node_modules/zod/v4/classic/from-json-schema.js -var z = { - ...schemas_exports2, - ...checks_exports2, - iso: iso_exports -}; -var RECOGNIZED_KEYS = /* @__PURE__ */ new Set([ - // Schema identification - "$schema", - "$ref", - "$defs", - "definitions", - // Core schema keywords - "$id", - "id", - "$comment", - "$anchor", - "$vocabulary", - "$dynamicRef", - "$dynamicAnchor", - // Type - "type", - "enum", - "const", - // Composition - "anyOf", - "oneOf", - "allOf", - "not", - // Object - "properties", - "required", - "additionalProperties", - "patternProperties", - "propertyNames", - "minProperties", - "maxProperties", - // Array - "items", - "prefixItems", - "additionalItems", - "minItems", - "maxItems", - "uniqueItems", - "contains", - "minContains", - "maxContains", - // String - "minLength", - "maxLength", - "pattern", - "format", - // Number - "minimum", - "maximum", - "exclusiveMinimum", - "exclusiveMaximum", - "multipleOf", - // Already handled metadata - "description", - "default", - // Content - "contentEncoding", - "contentMediaType", - "contentSchema", - // Unsupported (error-throwing) - "unevaluatedItems", - "unevaluatedProperties", - "if", - "then", - "else", - "dependentSchemas", - "dependentRequired", - // OpenAPI - "nullable", - "readOnly" -]); -function detectVersion(schema, defaultTarget) { - const $schema = schema.$schema; - if ($schema === "https://json-schema.org/draft/2020-12/schema") { - return "draft-2020-12"; - } - if ($schema === "http://json-schema.org/draft-07/schema#") { - return "draft-7"; - } - if ($schema === "http://json-schema.org/draft-04/schema#") { - return "draft-4"; - } - return defaultTarget ?? "draft-2020-12"; -} -function resolveRef(ref, ctx) { - if (!ref.startsWith("#")) { - throw new Error("External $ref is not supported, only local refs (#/...) are allowed"); - } - const path = ref.slice(1).split("/").filter(Boolean); - if (path.length === 0) { - return ctx.rootSchema; - } - const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions"; - if (path[0] === defsKey) { - const key = path[1]; - if (!key || !ctx.defs[key]) { - throw new Error(`Reference not found: ${ref}`); - } - return ctx.defs[key]; - } - throw new Error(`Reference not found: ${ref}`); -} -function convertBaseSchema(schema, ctx) { - if (schema.not !== void 0) { - if (typeof schema.not === "object" && Object.keys(schema.not).length === 0) { - return z.never(); - } - throw new Error("not is not supported in Zod (except { not: {} } for never)"); - } - if (schema.unevaluatedItems !== void 0) { - throw new Error("unevaluatedItems is not supported"); - } - if (schema.unevaluatedProperties !== void 0) { - throw new Error("unevaluatedProperties is not supported"); - } - if (schema.if !== void 0 || schema.then !== void 0 || schema.else !== void 0) { - throw new Error("Conditional schemas (if/then/else) are not supported"); - } - if (schema.dependentSchemas !== void 0 || schema.dependentRequired !== void 0) { - throw new Error("dependentSchemas and dependentRequired are not supported"); - } - if (schema.$ref) { - const refPath = schema.$ref; - if (ctx.refs.has(refPath)) { - return ctx.refs.get(refPath); - } - if (ctx.processing.has(refPath)) { - return z.lazy(() => { - if (!ctx.refs.has(refPath)) { - throw new Error(`Circular reference not resolved: ${refPath}`); - } - return ctx.refs.get(refPath); - }); - } - ctx.processing.add(refPath); - const resolved = resolveRef(refPath, ctx); - const zodSchema2 = convertSchema(resolved, ctx); - ctx.refs.set(refPath, zodSchema2); - ctx.processing.delete(refPath); - return zodSchema2; - } - if (schema.enum !== void 0) { - const enumValues = schema.enum; - if (ctx.version === "openapi-3.0" && schema.nullable === true && enumValues.length === 1 && enumValues[0] === null) { - return z.null(); - } - if (enumValues.length === 0) { - return z.never(); - } - if (enumValues.length === 1) { - return z.literal(enumValues[0]); - } - if (enumValues.every((v) => typeof v === "string")) { - return z.enum(enumValues); - } - const literalSchemas = enumValues.map((v) => z.literal(v)); - if (literalSchemas.length < 2) { - return literalSchemas[0]; - } - return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]); - } - if (schema.const !== void 0) { - return z.literal(schema.const); - } - const type = schema.type; - if (Array.isArray(type)) { - const typeSchemas = type.map((t) => { - const typeSchema = { ...schema, type: t }; - return convertBaseSchema(typeSchema, ctx); - }); - if (typeSchemas.length === 0) { - return z.never(); - } - if (typeSchemas.length === 1) { - return typeSchemas[0]; - } - return z.union(typeSchemas); - } - if (!type) { - return z.any(); - } - let zodSchema; - switch (type) { - case "string": { - let stringSchema = z.string(); - if (schema.format) { - const format = schema.format; - if (format === "email") { - stringSchema = stringSchema.check(z.email()); - } else if (format === "uri" || format === "uri-reference") { - stringSchema = stringSchema.check(z.url()); - } else if (format === "uuid" || format === "guid") { - stringSchema = stringSchema.check(z.uuid()); - } else if (format === "date-time") { - stringSchema = stringSchema.check(z.iso.datetime()); - } else if (format === "date") { - stringSchema = stringSchema.check(z.iso.date()); - } else if (format === "time") { - stringSchema = stringSchema.check(z.iso.time()); - } else if (format === "duration") { - stringSchema = stringSchema.check(z.iso.duration()); - } else if (format === "ipv4") { - stringSchema = stringSchema.check(z.ipv4()); - } else if (format === "ipv6") { - stringSchema = stringSchema.check(z.ipv6()); - } else if (format === "mac") { - stringSchema = stringSchema.check(z.mac()); - } else if (format === "cidr") { - stringSchema = stringSchema.check(z.cidrv4()); - } else if (format === "cidr-v6") { - stringSchema = stringSchema.check(z.cidrv6()); - } else if (format === "base64") { - stringSchema = stringSchema.check(z.base64()); - } else if (format === "base64url") { - stringSchema = stringSchema.check(z.base64url()); - } else if (format === "e164") { - stringSchema = stringSchema.check(z.e164()); - } else if (format === "jwt") { - stringSchema = stringSchema.check(z.jwt()); - } else if (format === "emoji") { - stringSchema = stringSchema.check(z.emoji()); - } else if (format === "nanoid") { - stringSchema = stringSchema.check(z.nanoid()); - } else if (format === "cuid") { - stringSchema = stringSchema.check(z.cuid()); - } else if (format === "cuid2") { - stringSchema = stringSchema.check(z.cuid2()); - } else if (format === "ulid") { - stringSchema = stringSchema.check(z.ulid()); - } else if (format === "xid") { - stringSchema = stringSchema.check(z.xid()); - } else if (format === "ksuid") { - stringSchema = stringSchema.check(z.ksuid()); - } - } - if (typeof schema.minLength === "number") { - stringSchema = stringSchema.min(schema.minLength); - } - if (typeof schema.maxLength === "number") { - stringSchema = stringSchema.max(schema.maxLength); - } - if (schema.pattern) { - stringSchema = stringSchema.regex(new RegExp(schema.pattern)); - } - zodSchema = stringSchema; - break; - } - case "number": - case "integer": { - let numberSchema = type === "integer" ? z.number().int() : z.number(); - if (typeof schema.minimum === "number") { - numberSchema = numberSchema.min(schema.minimum); - } - if (typeof schema.maximum === "number") { - numberSchema = numberSchema.max(schema.maximum); - } - if (typeof schema.exclusiveMinimum === "number") { - numberSchema = numberSchema.gt(schema.exclusiveMinimum); - } else if (schema.exclusiveMinimum === true && typeof schema.minimum === "number") { - numberSchema = numberSchema.gt(schema.minimum); - } - if (typeof schema.exclusiveMaximum === "number") { - numberSchema = numberSchema.lt(schema.exclusiveMaximum); - } else if (schema.exclusiveMaximum === true && typeof schema.maximum === "number") { - numberSchema = numberSchema.lt(schema.maximum); - } - if (typeof schema.multipleOf === "number") { - numberSchema = numberSchema.multipleOf(schema.multipleOf); - } - zodSchema = numberSchema; - break; - } - case "boolean": { - zodSchema = z.boolean(); - break; - } - case "null": { - zodSchema = z.null(); - break; - } - case "object": { - const shape = {}; - const properties = schema.properties || {}; - const requiredSet = new Set(schema.required || []); - for (const [key, propSchema] of Object.entries(properties)) { - const propZodSchema = convertSchema(propSchema, ctx); - shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional(); - } - if (schema.propertyNames) { - const keySchema = convertSchema(schema.propertyNames, ctx); - const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === "object" ? convertSchema(schema.additionalProperties, ctx) : z.any(); - if (Object.keys(shape).length === 0) { - zodSchema = z.record(keySchema, valueSchema); - break; - } - const objectSchema2 = z.object(shape).passthrough(); - const recordSchema = z.looseRecord(keySchema, valueSchema); - zodSchema = z.intersection(objectSchema2, recordSchema); - break; - } - if (schema.patternProperties) { - const patternProps = schema.patternProperties; - const patternKeys = Object.keys(patternProps); - const looseRecords = []; - for (const pattern of patternKeys) { - const patternValue = convertSchema(patternProps[pattern], ctx); - const keySchema = z.string().regex(new RegExp(pattern)); - looseRecords.push(z.looseRecord(keySchema, patternValue)); - } - const schemasToIntersect = []; - if (Object.keys(shape).length > 0) { - schemasToIntersect.push(z.object(shape).passthrough()); - } - schemasToIntersect.push(...looseRecords); - if (schemasToIntersect.length === 0) { - zodSchema = z.object({}).passthrough(); - } else if (schemasToIntersect.length === 1) { - zodSchema = schemasToIntersect[0]; - } else { - let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]); - for (let i = 2; i < schemasToIntersect.length; i++) { - result = z.intersection(result, schemasToIntersect[i]); - } - zodSchema = result; - } - break; - } - const objectSchema = z.object(shape); - if (schema.additionalProperties === false) { - zodSchema = objectSchema.strict(); - } else if (typeof schema.additionalProperties === "object") { - zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx)); - } else { - zodSchema = objectSchema.passthrough(); - } - break; - } - case "array": { - const prefixItems = schema.prefixItems; - const items = schema.items; - if (prefixItems && Array.isArray(prefixItems)) { - const tupleItems = prefixItems.map((item) => convertSchema(item, ctx)); - const rest = items && typeof items === "object" && !Array.isArray(items) ? convertSchema(items, ctx) : void 0; - if (rest) { - zodSchema = z.tuple(tupleItems).rest(rest); - } else { - zodSchema = z.tuple(tupleItems); - } - if (typeof schema.minItems === "number") { - zodSchema = zodSchema.check(z.minLength(schema.minItems)); - } - if (typeof schema.maxItems === "number") { - zodSchema = zodSchema.check(z.maxLength(schema.maxItems)); - } - } else if (Array.isArray(items)) { - const tupleItems = items.map((item) => convertSchema(item, ctx)); - const rest = schema.additionalItems && typeof schema.additionalItems === "object" ? convertSchema(schema.additionalItems, ctx) : void 0; - if (rest) { - zodSchema = z.tuple(tupleItems).rest(rest); - } else { - zodSchema = z.tuple(tupleItems); - } - if (typeof schema.minItems === "number") { - zodSchema = zodSchema.check(z.minLength(schema.minItems)); - } - if (typeof schema.maxItems === "number") { - zodSchema = zodSchema.check(z.maxLength(schema.maxItems)); - } - } else if (items !== void 0) { - const element = convertSchema(items, ctx); - let arraySchema = z.array(element); - if (typeof schema.minItems === "number") { - arraySchema = arraySchema.min(schema.minItems); - } - if (typeof schema.maxItems === "number") { - arraySchema = arraySchema.max(schema.maxItems); - } - zodSchema = arraySchema; - } else { - zodSchema = z.array(z.any()); - } - break; - } - default: - throw new Error(`Unsupported type: ${type}`); - } - if (schema.description) { - zodSchema = zodSchema.describe(schema.description); - } - if (schema.default !== void 0) { - zodSchema = zodSchema.default(schema.default); - } - return zodSchema; -} -function convertSchema(schema, ctx) { - if (typeof schema === "boolean") { - return schema ? z.any() : z.never(); - } - let baseSchema = convertBaseSchema(schema, ctx); - const hasExplicitType = schema.type || schema.enum !== void 0 || schema.const !== void 0; - if (schema.anyOf && Array.isArray(schema.anyOf)) { - const options = schema.anyOf.map((s) => convertSchema(s, ctx)); - const anyOfUnion = z.union(options); - baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion; - } - if (schema.oneOf && Array.isArray(schema.oneOf)) { - const options = schema.oneOf.map((s) => convertSchema(s, ctx)); - const oneOfUnion = z.xor(options); - baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion; - } - if (schema.allOf && Array.isArray(schema.allOf)) { - if (schema.allOf.length === 0) { - baseSchema = hasExplicitType ? baseSchema : z.any(); - } else { - let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx); - const startIdx = hasExplicitType ? 0 : 1; - for (let i = startIdx; i < schema.allOf.length; i++) { - result = z.intersection(result, convertSchema(schema.allOf[i], ctx)); - } - baseSchema = result; - } - } - if (schema.nullable === true && ctx.version === "openapi-3.0") { - baseSchema = z.nullable(baseSchema); - } - if (schema.readOnly === true) { - baseSchema = z.readonly(baseSchema); - } - const extraMeta = {}; - const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"]; - for (const key of coreMetadataKeys) { - if (key in schema) { - extraMeta[key] = schema[key]; - } - } - const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"]; - for (const key of contentMetadataKeys) { - if (key in schema) { - extraMeta[key] = schema[key]; - } - } - for (const key of Object.keys(schema)) { - if (!RECOGNIZED_KEYS.has(key)) { - extraMeta[key] = schema[key]; - } - } - if (Object.keys(extraMeta).length > 0) { - ctx.registry.add(baseSchema, extraMeta); - } - return baseSchema; -} -function fromJSONSchema(schema, params) { - if (typeof schema === "boolean") { - return schema ? z.any() : z.never(); - } - const version3 = detectVersion(schema, params?.defaultTarget); - const defs = schema.$defs || schema.definitions || {}; - const ctx = { - version: version3, - defs, - refs: /* @__PURE__ */ new Map(), - processing: /* @__PURE__ */ new Set(), - rootSchema: schema, - registry: params?.registry ?? globalRegistry - }; - return convertSchema(schema, ctx); -} - -// node_modules/zod/v4/classic/coerce.js -var coerce_exports = {}; -__export(coerce_exports, { - bigint: () => bigint3, - boolean: () => boolean3, - date: () => date4, - number: () => number3, - string: () => string3 -}); -function string3(params) { - return _coercedString(ZodString, params); -} -function number3(params) { - return _coercedNumber(ZodNumber, params); -} -function boolean3(params) { - return _coercedBoolean(ZodBoolean, params); -} -function bigint3(params) { - return _coercedBigint(ZodBigInt, params); -} -function date4(params) { - return _coercedDate(ZodDate, params); -} - -// node_modules/zod/v4/classic/external.js -config(en_default()); - -// lib/config.ts -import { join as join2 } from "path"; - -// lib/core/session-scanner.ts -import { readFile, readdir, stat, mkdir, writeFile } from "fs/promises"; -import { join, basename } from "path"; -import { homedir } from "os"; - -// ../../node_modules/zod/v4/classic/external.js -var external_exports2 = {}; -__export(external_exports2, { - $brand: () => $brand2, - $input: () => $input2, - $output: () => $output2, - NEVER: () => NEVER2, - TimePrecision: () => TimePrecision2, - ZodAny: () => ZodAny2, - ZodArray: () => ZodArray2, - ZodBase64: () => ZodBase642, - ZodBase64URL: () => ZodBase64URL2, - ZodBigInt: () => ZodBigInt2, - ZodBigIntFormat: () => ZodBigIntFormat2, - ZodBoolean: () => ZodBoolean2, - ZodCIDRv4: () => ZodCIDRv42, - ZodCIDRv6: () => ZodCIDRv62, - ZodCUID: () => ZodCUID3, - ZodCUID2: () => ZodCUID22, - ZodCatch: () => ZodCatch2, - ZodCodec: () => ZodCodec2, - ZodCustom: () => ZodCustom2, - ZodCustomStringFormat: () => ZodCustomStringFormat2, - ZodDate: () => ZodDate2, - ZodDefault: () => ZodDefault2, - ZodDiscriminatedUnion: () => ZodDiscriminatedUnion2, - ZodE164: () => ZodE1642, - ZodEmail: () => ZodEmail2, - ZodEmoji: () => ZodEmoji2, - ZodEnum: () => ZodEnum2, - ZodError: () => ZodError2, - ZodExactOptional: () => ZodExactOptional2, - ZodFile: () => ZodFile2, - ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind2, - ZodFunction: () => ZodFunction2, - ZodGUID: () => ZodGUID2, - ZodIPv4: () => ZodIPv42, - ZodIPv6: () => ZodIPv62, - ZodISODate: () => ZodISODate2, - ZodISODateTime: () => ZodISODateTime2, - ZodISODuration: () => ZodISODuration2, - ZodISOTime: () => ZodISOTime2, - ZodIntersection: () => ZodIntersection2, - ZodIssueCode: () => ZodIssueCode2, - ZodJWT: () => ZodJWT2, - ZodKSUID: () => ZodKSUID2, - ZodLazy: () => ZodLazy2, - ZodLiteral: () => ZodLiteral2, - ZodMAC: () => ZodMAC2, - ZodMap: () => ZodMap2, - ZodNaN: () => ZodNaN2, - ZodNanoID: () => ZodNanoID2, - ZodNever: () => ZodNever2, - ZodNonOptional: () => ZodNonOptional2, - ZodNull: () => ZodNull2, - ZodNullable: () => ZodNullable2, - ZodNumber: () => ZodNumber2, - ZodNumberFormat: () => ZodNumberFormat2, - ZodObject: () => ZodObject2, - ZodOptional: () => ZodOptional2, - ZodPipe: () => ZodPipe2, - ZodPrefault: () => ZodPrefault2, - ZodPromise: () => ZodPromise2, - ZodReadonly: () => ZodReadonly2, - ZodRealError: () => ZodRealError2, - ZodRecord: () => ZodRecord2, - ZodSet: () => ZodSet2, - ZodString: () => ZodString2, - ZodStringFormat: () => ZodStringFormat2, - ZodSuccess: () => ZodSuccess2, - ZodSymbol: () => ZodSymbol2, - ZodTemplateLiteral: () => ZodTemplateLiteral2, - ZodTransform: () => ZodTransform2, - ZodTuple: () => ZodTuple2, - ZodType: () => ZodType2, - ZodULID: () => ZodULID2, - ZodURL: () => ZodURL2, - ZodUUID: () => ZodUUID2, - ZodUndefined: () => ZodUndefined2, - ZodUnion: () => ZodUnion2, - ZodUnknown: () => ZodUnknown2, - ZodVoid: () => ZodVoid2, - ZodXID: () => ZodXID2, - ZodXor: () => ZodXor2, - _ZodString: () => _ZodString2, - _default: () => _default4, - _function: () => _function2, - any: () => any2, - array: () => array2, - base64: () => base644, - base64url: () => base64url4, - bigint: () => bigint5, - boolean: () => boolean5, - catch: () => _catch4, - check: () => check2, - cidrv4: () => cidrv44, - cidrv6: () => cidrv64, - clone: () => clone2, - codec: () => codec2, - coerce: () => coerce_exports2, - config: () => config2, - core: () => core_exports4, - cuid: () => cuid5, - cuid2: () => cuid24, - custom: () => custom2, - date: () => date7, - decode: () => decode4, - decodeAsync: () => decodeAsync4, - describe: () => describe4, - discriminatedUnion: () => discriminatedUnion2, - e164: () => e1644, - email: () => email4, - emoji: () => emoji4, - encode: () => encode4, - encodeAsync: () => encodeAsync4, - endsWith: () => _endsWith2, - enum: () => _enum4, - exactOptional: () => exactOptional2, - file: () => file2, - flattenError: () => flattenError2, - float32: () => float322, - float64: () => float642, - formatError: () => formatError2, - fromJSONSchema: () => fromJSONSchema2, - function: () => _function2, - getErrorMap: () => getErrorMap2, - globalRegistry: () => globalRegistry2, - gt: () => _gt2, - gte: () => _gte2, - guid: () => guid4, - hash: () => hash2, - hex: () => hex4, - hostname: () => hostname4, - httpUrl: () => httpUrl2, - includes: () => _includes2, - instanceof: () => _instanceof2, - int: () => int2, - int32: () => int322, - int64: () => int642, - intersection: () => intersection2, - ipv4: () => ipv44, - ipv6: () => ipv64, - iso: () => iso_exports2, - json: () => json2, - jwt: () => jwt2, - keyof: () => keyof2, - ksuid: () => ksuid4, - lazy: () => lazy2, - length: () => _length2, - literal: () => literal2, - locales: () => locales_exports2, - looseObject: () => looseObject2, - looseRecord: () => looseRecord2, - lowercase: () => _lowercase2, - lt: () => _lt2, - lte: () => _lte2, - mac: () => mac4, - map: () => map2, - maxLength: () => _maxLength2, - maxSize: () => _maxSize2, - meta: () => meta4, - mime: () => _mime2, - minLength: () => _minLength2, - minSize: () => _minSize2, - multipleOf: () => _multipleOf2, - nan: () => nan2, - nanoid: () => nanoid4, - nativeEnum: () => nativeEnum2, - negative: () => _negative2, - never: () => never2, - nonnegative: () => _nonnegative2, - nonoptional: () => nonoptional2, - nonpositive: () => _nonpositive2, - normalize: () => _normalize2, - null: () => _null6, - nullable: () => nullable2, - nullish: () => nullish4, - number: () => number5, - object: () => object2, - optional: () => optional2, - overwrite: () => _overwrite2, - parse: () => parse4, - parseAsync: () => parseAsync4, - partialRecord: () => partialRecord2, - pipe: () => pipe2, - positive: () => _positive2, - prefault: () => prefault2, - preprocess: () => preprocess2, - prettifyError: () => prettifyError2, - promise: () => promise2, - property: () => _property2, - readonly: () => readonly2, - record: () => record2, - refine: () => refine2, - regex: () => _regex2, - regexes: () => regexes_exports2, - registry: () => registry2, - safeDecode: () => safeDecode4, - safeDecodeAsync: () => safeDecodeAsync4, - safeEncode: () => safeEncode4, - safeEncodeAsync: () => safeEncodeAsync4, - safeParse: () => safeParse4, - safeParseAsync: () => safeParseAsync4, - set: () => set2, - setErrorMap: () => setErrorMap2, - size: () => _size2, - slugify: () => _slugify2, - startsWith: () => _startsWith2, - strictObject: () => strictObject2, - string: () => string5, - stringFormat: () => stringFormat2, - stringbool: () => stringbool2, - success: () => success2, - superRefine: () => superRefine2, - symbol: () => symbol2, - templateLiteral: () => templateLiteral2, - toJSONSchema: () => toJSONSchema2, - toLowerCase: () => _toLowerCase2, - toUpperCase: () => _toUpperCase2, - transform: () => transform2, - treeifyError: () => treeifyError2, - trim: () => _trim2, - tuple: () => tuple2, - uint32: () => uint322, - uint64: () => uint642, - ulid: () => ulid4, - undefined: () => _undefined6, - union: () => union2, - unknown: () => unknown2, - uppercase: () => _uppercase2, - url: () => url2, - util: () => util_exports2, - uuid: () => uuid5, - uuidv4: () => uuidv42, - uuidv6: () => uuidv62, - uuidv7: () => uuidv72, - void: () => _void4, - xid: () => xid4, - xor: () => xor2 -}); - -// ../../node_modules/zod/v4/core/index.js -var core_exports4 = {}; -__export(core_exports4, { - $ZodAny: () => $ZodAny2, - $ZodArray: () => $ZodArray2, - $ZodAsyncError: () => $ZodAsyncError2, - $ZodBase64: () => $ZodBase642, - $ZodBase64URL: () => $ZodBase64URL2, - $ZodBigInt: () => $ZodBigInt2, - $ZodBigIntFormat: () => $ZodBigIntFormat2, - $ZodBoolean: () => $ZodBoolean2, - $ZodCIDRv4: () => $ZodCIDRv42, - $ZodCIDRv6: () => $ZodCIDRv62, - $ZodCUID: () => $ZodCUID3, - $ZodCUID2: () => $ZodCUID22, - $ZodCatch: () => $ZodCatch2, - $ZodCheck: () => $ZodCheck2, - $ZodCheckBigIntFormat: () => $ZodCheckBigIntFormat2, - $ZodCheckEndsWith: () => $ZodCheckEndsWith2, - $ZodCheckGreaterThan: () => $ZodCheckGreaterThan2, - $ZodCheckIncludes: () => $ZodCheckIncludes2, - $ZodCheckLengthEquals: () => $ZodCheckLengthEquals2, - $ZodCheckLessThan: () => $ZodCheckLessThan2, - $ZodCheckLowerCase: () => $ZodCheckLowerCase2, - $ZodCheckMaxLength: () => $ZodCheckMaxLength2, - $ZodCheckMaxSize: () => $ZodCheckMaxSize2, - $ZodCheckMimeType: () => $ZodCheckMimeType2, - $ZodCheckMinLength: () => $ZodCheckMinLength2, - $ZodCheckMinSize: () => $ZodCheckMinSize2, - $ZodCheckMultipleOf: () => $ZodCheckMultipleOf2, - $ZodCheckNumberFormat: () => $ZodCheckNumberFormat2, - $ZodCheckOverwrite: () => $ZodCheckOverwrite2, - $ZodCheckProperty: () => $ZodCheckProperty2, - $ZodCheckRegex: () => $ZodCheckRegex2, - $ZodCheckSizeEquals: () => $ZodCheckSizeEquals2, - $ZodCheckStartsWith: () => $ZodCheckStartsWith2, - $ZodCheckStringFormat: () => $ZodCheckStringFormat2, - $ZodCheckUpperCase: () => $ZodCheckUpperCase2, - $ZodCodec: () => $ZodCodec2, - $ZodCustom: () => $ZodCustom2, - $ZodCustomStringFormat: () => $ZodCustomStringFormat2, - $ZodDate: () => $ZodDate2, - $ZodDefault: () => $ZodDefault2, - $ZodDiscriminatedUnion: () => $ZodDiscriminatedUnion2, - $ZodE164: () => $ZodE1642, - $ZodEmail: () => $ZodEmail2, - $ZodEmoji: () => $ZodEmoji2, - $ZodEncodeError: () => $ZodEncodeError2, - $ZodEnum: () => $ZodEnum2, - $ZodError: () => $ZodError2, - $ZodExactOptional: () => $ZodExactOptional2, - $ZodFile: () => $ZodFile2, - $ZodFunction: () => $ZodFunction2, - $ZodGUID: () => $ZodGUID2, - $ZodIPv4: () => $ZodIPv42, - $ZodIPv6: () => $ZodIPv62, - $ZodISODate: () => $ZodISODate2, - $ZodISODateTime: () => $ZodISODateTime2, - $ZodISODuration: () => $ZodISODuration2, - $ZodISOTime: () => $ZodISOTime2, - $ZodIntersection: () => $ZodIntersection2, - $ZodJWT: () => $ZodJWT2, - $ZodKSUID: () => $ZodKSUID2, - $ZodLazy: () => $ZodLazy2, - $ZodLiteral: () => $ZodLiteral2, - $ZodMAC: () => $ZodMAC2, - $ZodMap: () => $ZodMap2, - $ZodNaN: () => $ZodNaN2, - $ZodNanoID: () => $ZodNanoID2, - $ZodNever: () => $ZodNever2, - $ZodNonOptional: () => $ZodNonOptional2, - $ZodNull: () => $ZodNull2, - $ZodNullable: () => $ZodNullable2, - $ZodNumber: () => $ZodNumber2, - $ZodNumberFormat: () => $ZodNumberFormat2, - $ZodObject: () => $ZodObject2, - $ZodObjectJIT: () => $ZodObjectJIT2, - $ZodOptional: () => $ZodOptional2, - $ZodPipe: () => $ZodPipe2, - $ZodPrefault: () => $ZodPrefault2, - $ZodPromise: () => $ZodPromise2, - $ZodReadonly: () => $ZodReadonly2, - $ZodRealError: () => $ZodRealError2, - $ZodRecord: () => $ZodRecord2, - $ZodRegistry: () => $ZodRegistry2, - $ZodSet: () => $ZodSet2, - $ZodString: () => $ZodString2, - $ZodStringFormat: () => $ZodStringFormat2, - $ZodSuccess: () => $ZodSuccess2, - $ZodSymbol: () => $ZodSymbol2, - $ZodTemplateLiteral: () => $ZodTemplateLiteral2, - $ZodTransform: () => $ZodTransform2, - $ZodTuple: () => $ZodTuple2, - $ZodType: () => $ZodType2, - $ZodULID: () => $ZodULID2, - $ZodURL: () => $ZodURL2, - $ZodUUID: () => $ZodUUID2, - $ZodUndefined: () => $ZodUndefined2, - $ZodUnion: () => $ZodUnion2, - $ZodUnknown: () => $ZodUnknown2, - $ZodVoid: () => $ZodVoid2, - $ZodXID: () => $ZodXID2, - $ZodXor: () => $ZodXor2, - $brand: () => $brand2, - $constructor: () => $constructor2, - $input: () => $input2, - $output: () => $output2, - Doc: () => Doc2, - JSONSchema: () => json_schema_exports2, - JSONSchemaGenerator: () => JSONSchemaGenerator2, - NEVER: () => NEVER2, - TimePrecision: () => TimePrecision2, - _any: () => _any2, - _array: () => _array2, - _base64: () => _base642, - _base64url: () => _base64url2, - _bigint: () => _bigint2, - _boolean: () => _boolean2, - _catch: () => _catch3, - _check: () => _check2, - _cidrv4: () => _cidrv42, - _cidrv6: () => _cidrv62, - _coercedBigint: () => _coercedBigint2, - _coercedBoolean: () => _coercedBoolean2, - _coercedDate: () => _coercedDate2, - _coercedNumber: () => _coercedNumber2, - _coercedString: () => _coercedString2, - _cuid: () => _cuid3, - _cuid2: () => _cuid22, - _custom: () => _custom2, - _date: () => _date2, - _decode: () => _decode2, - _decodeAsync: () => _decodeAsync2, - _default: () => _default3, - _discriminatedUnion: () => _discriminatedUnion2, - _e164: () => _e1642, - _email: () => _email2, - _emoji: () => _emoji4, - _encode: () => _encode2, - _encodeAsync: () => _encodeAsync2, - _endsWith: () => _endsWith2, - _enum: () => _enum3, - _file: () => _file2, - _float32: () => _float322, - _float64: () => _float642, - _gt: () => _gt2, - _gte: () => _gte2, - _guid: () => _guid2, - _includes: () => _includes2, - _int: () => _int2, - _int32: () => _int322, - _int64: () => _int642, - _intersection: () => _intersection2, - _ipv4: () => _ipv42, - _ipv6: () => _ipv62, - _isoDate: () => _isoDate2, - _isoDateTime: () => _isoDateTime2, - _isoDuration: () => _isoDuration2, - _isoTime: () => _isoTime2, - _jwt: () => _jwt2, - _ksuid: () => _ksuid2, - _lazy: () => _lazy2, - _length: () => _length2, - _literal: () => _literal2, - _lowercase: () => _lowercase2, - _lt: () => _lt2, - _lte: () => _lte2, - _mac: () => _mac2, - _map: () => _map2, - _max: () => _lte2, - _maxLength: () => _maxLength2, - _maxSize: () => _maxSize2, - _mime: () => _mime2, - _min: () => _gte2, - _minLength: () => _minLength2, - _minSize: () => _minSize2, - _multipleOf: () => _multipleOf2, - _nan: () => _nan2, - _nanoid: () => _nanoid2, - _nativeEnum: () => _nativeEnum2, - _negative: () => _negative2, - _never: () => _never2, - _nonnegative: () => _nonnegative2, - _nonoptional: () => _nonoptional2, - _nonpositive: () => _nonpositive2, - _normalize: () => _normalize2, - _null: () => _null5, - _nullable: () => _nullable2, - _number: () => _number2, - _optional: () => _optional2, - _overwrite: () => _overwrite2, - _parse: () => _parse2, - _parseAsync: () => _parseAsync2, - _pipe: () => _pipe2, - _positive: () => _positive2, - _promise: () => _promise2, - _property: () => _property2, - _readonly: () => _readonly2, - _record: () => _record2, - _refine: () => _refine2, - _regex: () => _regex2, - _safeDecode: () => _safeDecode2, - _safeDecodeAsync: () => _safeDecodeAsync2, - _safeEncode: () => _safeEncode2, - _safeEncodeAsync: () => _safeEncodeAsync2, - _safeParse: () => _safeParse2, - _safeParseAsync: () => _safeParseAsync2, - _set: () => _set2, - _size: () => _size2, - _slugify: () => _slugify2, - _startsWith: () => _startsWith2, - _string: () => _string2, - _stringFormat: () => _stringFormat2, - _stringbool: () => _stringbool2, - _success: () => _success2, - _superRefine: () => _superRefine2, - _symbol: () => _symbol2, - _templateLiteral: () => _templateLiteral2, - _toLowerCase: () => _toLowerCase2, - _toUpperCase: () => _toUpperCase2, - _transform: () => _transform2, - _trim: () => _trim2, - _tuple: () => _tuple2, - _uint32: () => _uint322, - _uint64: () => _uint642, - _ulid: () => _ulid2, - _undefined: () => _undefined5, - _union: () => _union2, - _unknown: () => _unknown2, - _uppercase: () => _uppercase2, - _url: () => _url2, - _uuid: () => _uuid2, - _uuidv4: () => _uuidv42, - _uuidv6: () => _uuidv62, - _uuidv7: () => _uuidv72, - _void: () => _void3, - _xid: () => _xid2, - _xor: () => _xor2, - clone: () => clone2, - config: () => config2, - createStandardJSONSchemaMethod: () => createStandardJSONSchemaMethod2, - createToJSONSchemaMethod: () => createToJSONSchemaMethod2, - decode: () => decode3, - decodeAsync: () => decodeAsync3, - describe: () => describe3, - encode: () => encode3, - encodeAsync: () => encodeAsync3, - extractDefs: () => extractDefs2, - finalize: () => finalize2, - flattenError: () => flattenError2, - formatError: () => formatError2, - globalConfig: () => globalConfig2, - globalRegistry: () => globalRegistry2, - initializeContext: () => initializeContext2, - isValidBase64: () => isValidBase642, - isValidBase64URL: () => isValidBase64URL2, - isValidJWT: () => isValidJWT2, - locales: () => locales_exports2, - meta: () => meta3, - parse: () => parse3, - parseAsync: () => parseAsync3, - prettifyError: () => prettifyError2, - process: () => process3, - regexes: () => regexes_exports2, - registry: () => registry2, - safeDecode: () => safeDecode3, - safeDecodeAsync: () => safeDecodeAsync3, - safeEncode: () => safeEncode3, - safeEncodeAsync: () => safeEncodeAsync3, - safeParse: () => safeParse3, - safeParseAsync: () => safeParseAsync3, - toDotPath: () => toDotPath2, - toJSONSchema: () => toJSONSchema2, - treeifyError: () => treeifyError2, - util: () => util_exports2, - version: () => version2 -}); - -// ../../node_modules/zod/v4/core/core.js -var NEVER2 = Object.freeze({ - status: "aborted" -}); -// @__NO_SIDE_EFFECTS__ -function $constructor2(name, initializer5, params) { - function init(inst, def) { - if (!inst._zod) { - Object.defineProperty(inst, "_zod", { - value: { - def, - constr: _, - traits: /* @__PURE__ */ new Set() - }, - enumerable: false - }); - } - if (inst._zod.traits.has(name)) { - return; - } - inst._zod.traits.add(name); - initializer5(inst, def); - const proto = _.prototype; - const keys = Object.keys(proto); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - if (!(k in inst)) { - inst[k] = proto[k].bind(inst); - } - } - } - const Parent = params?.Parent ?? Object; - class Definition extends Parent { - } - Object.defineProperty(Definition, "name", { value: name }); - function _(def) { - var _a3; - const inst = params?.Parent ? new Definition() : this; - init(inst, def); - (_a3 = inst._zod).deferred ?? (_a3.deferred = []); - for (const fn of inst._zod.deferred) { - fn(); - } - return inst; - } - Object.defineProperty(_, "init", { value: init }); - Object.defineProperty(_, Symbol.hasInstance, { - value: (inst) => { - if (params?.Parent && inst instanceof params.Parent) - return true; - return inst?._zod?.traits?.has(name); - } - }); - Object.defineProperty(_, "name", { value: name }); - return _; -} -var $brand2 = /* @__PURE__ */ Symbol("zod_brand"); -var $ZodAsyncError2 = class extends Error { - constructor() { - super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`); - } -}; -var $ZodEncodeError2 = class extends Error { - constructor(name) { - super(`Encountered unidirectional transform during encode: ${name}`); - this.name = "ZodEncodeError"; - } -}; -var globalConfig2 = {}; -function config2(newConfig) { - if (newConfig) - Object.assign(globalConfig2, newConfig); - return globalConfig2; -} - -// ../../node_modules/zod/v4/core/util.js -var util_exports2 = {}; -__export(util_exports2, { - BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES2, - Class: () => Class2, - NUMBER_FORMAT_RANGES: () => NUMBER_FORMAT_RANGES2, - aborted: () => aborted2, - allowsEval: () => allowsEval2, - assert: () => assert2, - assertEqual: () => assertEqual2, - assertIs: () => assertIs2, - assertNever: () => assertNever2, - assertNotEqual: () => assertNotEqual2, - assignProp: () => assignProp2, - base64ToUint8Array: () => base64ToUint8Array2, - base64urlToUint8Array: () => base64urlToUint8Array2, - cached: () => cached2, - captureStackTrace: () => captureStackTrace2, - cleanEnum: () => cleanEnum2, - cleanRegex: () => cleanRegex2, - clone: () => clone2, - cloneDef: () => cloneDef2, - createTransparentProxy: () => createTransparentProxy2, - defineLazy: () => defineLazy2, - esc: () => esc2, - escapeRegex: () => escapeRegex2, - extend: () => extend2, - finalizeIssue: () => finalizeIssue2, - floatSafeRemainder: () => floatSafeRemainder2, - getElementAtPath: () => getElementAtPath2, - getEnumValues: () => getEnumValues2, - getLengthableOrigin: () => getLengthableOrigin2, - getParsedType: () => getParsedType2, - getSizableOrigin: () => getSizableOrigin2, - hexToUint8Array: () => hexToUint8Array2, - isObject: () => isObject2, - isPlainObject: () => isPlainObject2, - issue: () => issue2, - joinValues: () => joinValues2, - jsonStringifyReplacer: () => jsonStringifyReplacer2, - merge: () => merge2, - mergeDefs: () => mergeDefs2, - normalizeParams: () => normalizeParams2, - nullish: () => nullish3, - numKeys: () => numKeys2, - objectClone: () => objectClone2, - omit: () => omit2, - optionalKeys: () => optionalKeys2, - parsedType: () => parsedType2, - partial: () => partial2, - pick: () => pick2, - prefixIssues: () => prefixIssues2, - primitiveTypes: () => primitiveTypes2, - promiseAllObject: () => promiseAllObject2, - propertyKeyTypes: () => propertyKeyTypes2, - randomString: () => randomString2, - required: () => required2, - safeExtend: () => safeExtend2, - shallowClone: () => shallowClone2, - slugify: () => slugify2, - stringifyPrimitive: () => stringifyPrimitive2, - uint8ArrayToBase64: () => uint8ArrayToBase642, - uint8ArrayToBase64url: () => uint8ArrayToBase64url2, - uint8ArrayToHex: () => uint8ArrayToHex2, - unwrapMessage: () => unwrapMessage2 -}); -function assertEqual2(val) { - return val; -} -function assertNotEqual2(val) { - return val; -} -function assertIs2(_arg) { -} -function assertNever2(_x) { - throw new Error("Unexpected value in exhaustive check"); -} -function assert2(_) { -} -function getEnumValues2(entries) { - const numericValues = Object.values(entries).filter((v) => typeof v === "number"); - const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); - return values; -} -function joinValues2(array3, separator = "|") { - return array3.map((val) => stringifyPrimitive2(val)).join(separator); -} -function jsonStringifyReplacer2(_, value) { - if (typeof value === "bigint") - return value.toString(); - return value; -} -function cached2(getter) { - const set3 = false; - return { - get value() { - if (!set3) { - const value = getter(); - Object.defineProperty(this, "value", { value }); - return value; - } - throw new Error("cached value already set"); - } - }; -} -function nullish3(input) { - return input === null || input === void 0; -} -function cleanRegex2(source) { - const start = source.startsWith("^") ? 1 : 0; - const end = source.endsWith("$") ? source.length - 1 : source.length; - return source.slice(start, end); -} -function floatSafeRemainder2(val, step) { - const valDecCount = (val.toString().split(".")[1] || "").length; - const stepString = step.toString(); - let stepDecCount = (stepString.split(".")[1] || "").length; - if (stepDecCount === 0 && /\d?e-\d?/.test(stepString)) { - const match = stepString.match(/\d?e-(\d?)/); - if (match?.[1]) { - stepDecCount = Number.parseInt(match[1]); - } - } - const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; - const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); - const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); - return valInt % stepInt / 10 ** decCount; -} -var EVALUATING2 = /* @__PURE__ */ Symbol("evaluating"); -function defineLazy2(object3, key, getter) { - let value = void 0; - Object.defineProperty(object3, key, { - get() { - if (value === EVALUATING2) { - return void 0; - } - if (value === void 0) { - value = EVALUATING2; - value = getter(); - } - return value; - }, - set(v) { - Object.defineProperty(object3, key, { - value: v - // configurable: true, - }); - }, - configurable: true - }); -} -function objectClone2(obj) { - return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); -} -function assignProp2(target, prop, value) { - Object.defineProperty(target, prop, { - value, - writable: true, - enumerable: true, - configurable: true - }); -} -function mergeDefs2(...defs) { - const mergedDescriptors = {}; - for (const def of defs) { - const descriptors = Object.getOwnPropertyDescriptors(def); - Object.assign(mergedDescriptors, descriptors); - } - return Object.defineProperties({}, mergedDescriptors); -} -function cloneDef2(schema) { - return mergeDefs2(schema._zod.def); -} -function getElementAtPath2(obj, path) { - if (!path) - return obj; - return path.reduce((acc, key) => acc?.[key], obj); -} -function promiseAllObject2(promisesObj) { - const keys = Object.keys(promisesObj); - const promises = keys.map((key) => promisesObj[key]); - return Promise.all(promises).then((results) => { - const resolvedObj = {}; - for (let i = 0; i < keys.length; i++) { - resolvedObj[keys[i]] = results[i]; - } - return resolvedObj; - }); -} -function randomString2(length = 10) { - const chars = "abcdefghijklmnopqrstuvwxyz"; - let str = ""; - for (let i = 0; i < length; i++) { - str += chars[Math.floor(Math.random() * chars.length)]; - } - return str; -} -function esc2(str) { - return JSON.stringify(str); -} -function slugify2(input) { - return input.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, ""); -} -var captureStackTrace2 = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { -}; -function isObject2(data) { - return typeof data === "object" && data !== null && !Array.isArray(data); -} -var allowsEval2 = cached2(() => { - if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) { - return false; - } - try { - const F = Function; - new F(""); - return true; - } catch (_) { - return false; - } -}); -function isPlainObject2(o) { - if (isObject2(o) === false) - return false; - const ctor = o.constructor; - if (ctor === void 0) - return true; - if (typeof ctor !== "function") - return true; - const prot = ctor.prototype; - if (isObject2(prot) === false) - return false; - if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) { - return false; - } - return true; -} -function shallowClone2(o) { - if (isPlainObject2(o)) - return { ...o }; - if (Array.isArray(o)) - return [...o]; - return o; -} -function numKeys2(data) { - let keyCount = 0; - for (const key in data) { - if (Object.prototype.hasOwnProperty.call(data, key)) { - keyCount++; - } - } - return keyCount; -} -var getParsedType2 = (data) => { - const t = typeof data; - switch (t) { - case "undefined": - return "undefined"; - case "string": - return "string"; - case "number": - return Number.isNaN(data) ? "nan" : "number"; - case "boolean": - return "boolean"; - case "function": - return "function"; - case "bigint": - return "bigint"; - case "symbol": - return "symbol"; - case "object": - if (Array.isArray(data)) { - return "array"; - } - if (data === null) { - return "null"; - } - if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { - return "promise"; - } - if (typeof Map !== "undefined" && data instanceof Map) { - return "map"; - } - if (typeof Set !== "undefined" && data instanceof Set) { - return "set"; - } - if (typeof Date !== "undefined" && data instanceof Date) { - return "date"; - } - if (typeof File !== "undefined" && data instanceof File) { - return "file"; - } - return "object"; - default: - throw new Error(`Unknown data type: ${t}`); - } -}; -var propertyKeyTypes2 = /* @__PURE__ */ new Set(["string", "number", "symbol"]); -var primitiveTypes2 = /* @__PURE__ */ new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]); -function escapeRegex2(str) { - return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); -} -function clone2(inst, def, params) { - const cl = new inst._zod.constr(def ?? inst._zod.def); - if (!def || params?.parent) - cl._zod.parent = inst; - return cl; -} -function normalizeParams2(_params) { - const params = _params; - if (!params) - return {}; - if (typeof params === "string") - return { error: () => params }; - if (params?.message !== void 0) { - if (params?.error !== void 0) - throw new Error("Cannot specify both `message` and `error` params"); - params.error = params.message; - } - delete params.message; - if (typeof params.error === "string") - return { ...params, error: () => params.error }; - return params; -} -function createTransparentProxy2(getter) { - let target; - return new Proxy({}, { - get(_, prop, receiver) { - target ?? (target = getter()); - return Reflect.get(target, prop, receiver); - }, - set(_, prop, value, receiver) { - target ?? (target = getter()); - return Reflect.set(target, prop, value, receiver); - }, - has(_, prop) { - target ?? (target = getter()); - return Reflect.has(target, prop); - }, - deleteProperty(_, prop) { - target ?? (target = getter()); - return Reflect.deleteProperty(target, prop); - }, - ownKeys(_) { - target ?? (target = getter()); - return Reflect.ownKeys(target); - }, - getOwnPropertyDescriptor(_, prop) { - target ?? (target = getter()); - return Reflect.getOwnPropertyDescriptor(target, prop); - }, - defineProperty(_, prop, descriptor) { - target ?? (target = getter()); - return Reflect.defineProperty(target, prop, descriptor); - } - }); -} -function stringifyPrimitive2(value) { - if (typeof value === "bigint") - return value.toString() + "n"; - if (typeof value === "string") - return `"${value}"`; - return `${value}`; -} -function optionalKeys2(shape) { - return Object.keys(shape).filter((k) => { - return shape[k]._zod.optin === "optional" && shape[k]._zod.optout === "optional"; - }); -} -var NUMBER_FORMAT_RANGES2 = { - safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], - int32: [-2147483648, 2147483647], - uint32: [0, 4294967295], - float32: [-34028234663852886e22, 34028234663852886e22], - float64: [-Number.MAX_VALUE, Number.MAX_VALUE] -}; -var BIGINT_FORMAT_RANGES2 = { - int64: [/* @__PURE__ */ BigInt("-9223372036854775808"), /* @__PURE__ */ BigInt("9223372036854775807")], - uint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt("18446744073709551615")] -}; -function pick2(schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".pick() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs2(schema._zod.def, { - get shape() { - const newShape = {}; - for (const key in mask) { - if (!(key in currDef.shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - newShape[key] = currDef.shape[key]; - } - assignProp2(this, "shape", newShape); - return newShape; - }, - checks: [] - }); - return clone2(schema, def); -} -function omit2(schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".omit() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs2(schema._zod.def, { - get shape() { - const newShape = { ...schema._zod.def.shape }; - for (const key in mask) { - if (!(key in currDef.shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - delete newShape[key]; - } - assignProp2(this, "shape", newShape); - return newShape; - }, - checks: [] - }); - return clone2(schema, def); -} -function extend2(schema, shape) { - if (!isPlainObject2(shape)) { - throw new Error("Invalid input to extend: expected a plain object"); - } - const checks = schema._zod.def.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - const existingShape = schema._zod.def.shape; - for (const key in shape) { - if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) { - throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead."); - } - } - } - const def = mergeDefs2(schema._zod.def, { - get shape() { - const _shape = { ...schema._zod.def.shape, ...shape }; - assignProp2(this, "shape", _shape); - return _shape; - } - }); - return clone2(schema, def); -} -function safeExtend2(schema, shape) { - if (!isPlainObject2(shape)) { - throw new Error("Invalid input to safeExtend: expected a plain object"); - } - const def = mergeDefs2(schema._zod.def, { - get shape() { - const _shape = { ...schema._zod.def.shape, ...shape }; - assignProp2(this, "shape", _shape); - return _shape; - } - }); - return clone2(schema, def); -} -function merge2(a, b) { - const def = mergeDefs2(a._zod.def, { - get shape() { - const _shape = { ...a._zod.def.shape, ...b._zod.def.shape }; - assignProp2(this, "shape", _shape); - return _shape; - }, - get catchall() { - return b._zod.def.catchall; - }, - checks: [] - // delete existing checks - }); - return clone2(a, def); -} -function partial2(Class3, schema, mask) { - const currDef = schema._zod.def; - const checks = currDef.checks; - const hasChecks = checks && checks.length > 0; - if (hasChecks) { - throw new Error(".partial() cannot be used on object schemas containing refinements"); - } - const def = mergeDefs2(schema._zod.def, { - get shape() { - const oldShape = schema._zod.def.shape; - const shape = { ...oldShape }; - if (mask) { - for (const key in mask) { - if (!(key in oldShape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - shape[key] = Class3 ? new Class3({ - type: "optional", - innerType: oldShape[key] - }) : oldShape[key]; - } - } else { - for (const key in oldShape) { - shape[key] = Class3 ? new Class3({ - type: "optional", - innerType: oldShape[key] - }) : oldShape[key]; - } - } - assignProp2(this, "shape", shape); - return shape; - }, - checks: [] - }); - return clone2(schema, def); -} -function required2(Class3, schema, mask) { - const def = mergeDefs2(schema._zod.def, { - get shape() { - const oldShape = schema._zod.def.shape; - const shape = { ...oldShape }; - if (mask) { - for (const key in mask) { - if (!(key in shape)) { - throw new Error(`Unrecognized key: "${key}"`); - } - if (!mask[key]) - continue; - shape[key] = new Class3({ - type: "nonoptional", - innerType: oldShape[key] - }); - } - } else { - for (const key in oldShape) { - shape[key] = new Class3({ - type: "nonoptional", - innerType: oldShape[key] - }); - } - } - assignProp2(this, "shape", shape); - return shape; - } - }); - return clone2(schema, def); -} -function aborted2(x, startIndex = 0) { - if (x.aborted === true) - return true; - for (let i = startIndex; i < x.issues.length; i++) { - if (x.issues[i]?.continue !== true) { - return true; - } - } - return false; -} -function prefixIssues2(path, issues) { - return issues.map((iss) => { - var _a3; - (_a3 = iss).path ?? (_a3.path = []); - iss.path.unshift(path); - return iss; - }); -} -function unwrapMessage2(message) { - return typeof message === "string" ? message : message?.message; -} -function finalizeIssue2(iss, ctx, config3) { - const full = { ...iss, path: iss.path ?? [] }; - if (!iss.message) { - const message = unwrapMessage2(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage2(ctx?.error?.(iss)) ?? unwrapMessage2(config3.customError?.(iss)) ?? unwrapMessage2(config3.localeError?.(iss)) ?? "Invalid input"; - full.message = message; - } - delete full.inst; - delete full.continue; - if (!ctx?.reportInput) { - delete full.input; - } - return full; -} -function getSizableOrigin2(input) { - if (input instanceof Set) - return "set"; - if (input instanceof Map) - return "map"; - if (input instanceof File) - return "file"; - return "unknown"; -} -function getLengthableOrigin2(input) { - if (Array.isArray(input)) - return "array"; - if (typeof input === "string") - return "string"; - return "unknown"; -} -function parsedType2(data) { - const t = typeof data; - switch (t) { - case "number": { - return Number.isNaN(data) ? "nan" : "number"; - } - case "object": { - if (data === null) { - return "null"; - } - if (Array.isArray(data)) { - return "array"; - } - const obj = data; - if (obj && Object.getPrototypeOf(obj) !== Object.prototype && "constructor" in obj && obj.constructor) { - return obj.constructor.name; - } - } - } - return t; -} -function issue2(...args) { - const [iss, input, inst] = args; - if (typeof iss === "string") { - return { - message: iss, - code: "custom", - input, - inst - }; - } - return { ...iss }; -} -function cleanEnum2(obj) { - return Object.entries(obj).filter(([k, _]) => { - return Number.isNaN(Number.parseInt(k, 10)); - }).map((el) => el[1]); -} -function base64ToUint8Array2(base645) { - const binaryString = atob(base645); - const bytes = new Uint8Array(binaryString.length); - for (let i = 0; i < binaryString.length; i++) { - bytes[i] = binaryString.charCodeAt(i); - } - return bytes; -} -function uint8ArrayToBase642(bytes) { - let binaryString = ""; - for (let i = 0; i < bytes.length; i++) { - binaryString += String.fromCharCode(bytes[i]); - } - return btoa(binaryString); -} -function base64urlToUint8Array2(base64url5) { - const base645 = base64url5.replace(/-/g, "+").replace(/_/g, "/"); - const padding = "=".repeat((4 - base645.length % 4) % 4); - return base64ToUint8Array2(base645 + padding); -} -function uint8ArrayToBase64url2(bytes) { - return uint8ArrayToBase642(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); -} -function hexToUint8Array2(hex5) { - const cleanHex = hex5.replace(/^0x/, ""); - if (cleanHex.length % 2 !== 0) { - throw new Error("Invalid hex string length"); - } - const bytes = new Uint8Array(cleanHex.length / 2); - for (let i = 0; i < cleanHex.length; i += 2) { - bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16); - } - return bytes; -} -function uint8ArrayToHex2(bytes) { - return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join(""); -} -var Class2 = class { - constructor(..._args) { - } -}; - -// ../../node_modules/zod/v4/core/errors.js -var initializer3 = (inst, def) => { - inst.name = "$ZodError"; - Object.defineProperty(inst, "_zod", { - value: inst._zod, - enumerable: false - }); - Object.defineProperty(inst, "issues", { - value: def, - enumerable: false - }); - inst.message = JSON.stringify(def, jsonStringifyReplacer2, 2); - Object.defineProperty(inst, "toString", { - value: () => inst.message, - enumerable: false - }); -}; -var $ZodError2 = $constructor2("$ZodError", initializer3); -var $ZodRealError2 = $constructor2("$ZodError", initializer3, { Parent: Error }); -function flattenError2(error95, mapper = (issue3) => issue3.message) { - const fieldErrors = {}; - const formErrors = []; - for (const sub of error95.issues) { - if (sub.path.length > 0) { - fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; - fieldErrors[sub.path[0]].push(mapper(sub)); - } else { - formErrors.push(mapper(sub)); - } - } - return { formErrors, fieldErrors }; -} -function formatError2(error95, mapper = (issue3) => issue3.message) { - const fieldErrors = { _errors: [] }; - const processError = (error96) => { - for (const issue3 of error96.issues) { - if (issue3.code === "invalid_union" && issue3.errors.length) { - issue3.errors.map((issues) => processError({ issues })); - } else if (issue3.code === "invalid_key") { - processError({ issues: issue3.issues }); - } else if (issue3.code === "invalid_element") { - processError({ issues: issue3.issues }); - } else if (issue3.path.length === 0) { - fieldErrors._errors.push(mapper(issue3)); - } else { - let curr = fieldErrors; - let i = 0; - while (i < issue3.path.length) { - const el = issue3.path[i]; - const terminal = i === issue3.path.length - 1; - if (!terminal) { - curr[el] = curr[el] || { _errors: [] }; - } else { - curr[el] = curr[el] || { _errors: [] }; - curr[el]._errors.push(mapper(issue3)); - } - curr = curr[el]; - i++; - } - } - } - }; - processError(error95); - return fieldErrors; -} -function treeifyError2(error95, mapper = (issue3) => issue3.message) { - const result = { errors: [] }; - const processError = (error96, path = []) => { - var _a3, _b; - for (const issue3 of error96.issues) { - if (issue3.code === "invalid_union" && issue3.errors.length) { - issue3.errors.map((issues) => processError({ issues }, issue3.path)); - } else if (issue3.code === "invalid_key") { - processError({ issues: issue3.issues }, issue3.path); - } else if (issue3.code === "invalid_element") { - processError({ issues: issue3.issues }, issue3.path); - } else { - const fullpath = [...path, ...issue3.path]; - if (fullpath.length === 0) { - result.errors.push(mapper(issue3)); - continue; - } - let curr = result; - let i = 0; - while (i < fullpath.length) { - const el = fullpath[i]; - const terminal = i === fullpath.length - 1; - if (typeof el === "string") { - curr.properties ?? (curr.properties = {}); - (_a3 = curr.properties)[el] ?? (_a3[el] = { errors: [] }); - curr = curr.properties[el]; - } else { - curr.items ?? (curr.items = []); - (_b = curr.items)[el] ?? (_b[el] = { errors: [] }); - curr = curr.items[el]; - } - if (terminal) { - curr.errors.push(mapper(issue3)); - } - i++; - } - } - } - }; - processError(error95); - return result; -} -function toDotPath2(_path) { - const segs = []; - const path = _path.map((seg) => typeof seg === "object" ? seg.key : seg); - for (const seg of path) { - if (typeof seg === "number") - segs.push(`[${seg}]`); - else if (typeof seg === "symbol") - segs.push(`[${JSON.stringify(String(seg))}]`); - else if (/[^\w$]/.test(seg)) - segs.push(`[${JSON.stringify(seg)}]`); - else { - if (segs.length) - segs.push("."); - segs.push(seg); - } - } - return segs.join(""); -} -function prettifyError2(error95) { - const lines = []; - const issues = [...error95.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length); - for (const issue3 of issues) { - lines.push(`\u2716 ${issue3.message}`); - if (issue3.path?.length) - lines.push(` \u2192 at ${toDotPath2(issue3.path)}`); - } - return lines.join("\n"); -} - -// ../../node_modules/zod/v4/core/parse.js -var _parse2 = (_Err) => (schema, value, _ctx, _params) => { - const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; - const result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) { - throw new $ZodAsyncError2(); - } - if (result.issues.length) { - const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))); - captureStackTrace2(e, _params?.callee); - throw e; - } - return result.value; -}; -var parse3 = /* @__PURE__ */ _parse2($ZodRealError2); -var _parseAsync2 = (_Err) => async (schema, value, _ctx, params) => { - const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; - let result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) - result = await result; - if (result.issues.length) { - const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))); - captureStackTrace2(e, params?.callee); - throw e; - } - return result.value; -}; -var parseAsync3 = /* @__PURE__ */ _parseAsync2($ZodRealError2); -var _safeParse2 = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; - const result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) { - throw new $ZodAsyncError2(); - } - return result.issues.length ? { - success: false, - error: new (_Err ?? $ZodError2)(result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))) - } : { success: true, data: result.value }; -}; -var safeParse3 = /* @__PURE__ */ _safeParse2($ZodRealError2); -var _safeParseAsync2 = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; - let result = schema._zod.run({ value, issues: [] }, ctx); - if (result instanceof Promise) - result = await result; - return result.issues.length ? { - success: false, - error: new _Err(result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))) - } : { success: true, data: result.value }; -}; -var safeParseAsync3 = /* @__PURE__ */ _safeParseAsync2($ZodRealError2); -var _encode2 = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _parse2(_Err)(schema, value, ctx); -}; -var encode3 = /* @__PURE__ */ _encode2($ZodRealError2); -var _decode2 = (_Err) => (schema, value, _ctx) => { - return _parse2(_Err)(schema, value, _ctx); -}; -var decode3 = /* @__PURE__ */ _decode2($ZodRealError2); -var _encodeAsync2 = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _parseAsync2(_Err)(schema, value, ctx); -}; -var encodeAsync3 = /* @__PURE__ */ _encodeAsync2($ZodRealError2); -var _decodeAsync2 = (_Err) => async (schema, value, _ctx) => { - return _parseAsync2(_Err)(schema, value, _ctx); -}; -var decodeAsync3 = /* @__PURE__ */ _decodeAsync2($ZodRealError2); -var _safeEncode2 = (_Err) => (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _safeParse2(_Err)(schema, value, ctx); -}; -var safeEncode3 = /* @__PURE__ */ _safeEncode2($ZodRealError2); -var _safeDecode2 = (_Err) => (schema, value, _ctx) => { - return _safeParse2(_Err)(schema, value, _ctx); -}; -var safeDecode3 = /* @__PURE__ */ _safeDecode2($ZodRealError2); -var _safeEncodeAsync2 = (_Err) => async (schema, value, _ctx) => { - const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; - return _safeParseAsync2(_Err)(schema, value, ctx); -}; -var safeEncodeAsync3 = /* @__PURE__ */ _safeEncodeAsync2($ZodRealError2); -var _safeDecodeAsync2 = (_Err) => async (schema, value, _ctx) => { - return _safeParseAsync2(_Err)(schema, value, _ctx); -}; -var safeDecodeAsync3 = /* @__PURE__ */ _safeDecodeAsync2($ZodRealError2); - -// ../../node_modules/zod/v4/core/regexes.js -var regexes_exports2 = {}; -__export(regexes_exports2, { - base64: () => base643, - base64url: () => base64url3, - bigint: () => bigint4, - boolean: () => boolean4, - browserEmail: () => browserEmail2, - cidrv4: () => cidrv43, - cidrv6: () => cidrv63, - cuid: () => cuid4, - cuid2: () => cuid23, - date: () => date5, - datetime: () => datetime3, - domain: () => domain2, - duration: () => duration3, - e164: () => e1643, - email: () => email3, - emoji: () => emoji3, - extendedDuration: () => extendedDuration2, - guid: () => guid3, - hex: () => hex3, - hostname: () => hostname3, - html5Email: () => html5Email2, - idnEmail: () => idnEmail2, - integer: () => integer2, - ipv4: () => ipv43, - ipv6: () => ipv63, - ksuid: () => ksuid3, - lowercase: () => lowercase2, - mac: () => mac3, - md5_base64: () => md5_base642, - md5_base64url: () => md5_base64url2, - md5_hex: () => md5_hex2, - nanoid: () => nanoid3, - null: () => _null4, - number: () => number4, - rfc5322Email: () => rfc5322Email2, - sha1_base64: () => sha1_base642, - sha1_base64url: () => sha1_base64url2, - sha1_hex: () => sha1_hex2, - sha256_base64: () => sha256_base642, - sha256_base64url: () => sha256_base64url2, - sha256_hex: () => sha256_hex2, - sha384_base64: () => sha384_base642, - sha384_base64url: () => sha384_base64url2, - sha384_hex: () => sha384_hex2, - sha512_base64: () => sha512_base642, - sha512_base64url: () => sha512_base64url2, - sha512_hex: () => sha512_hex2, - string: () => string4, - time: () => time3, - ulid: () => ulid3, - undefined: () => _undefined4, - unicodeEmail: () => unicodeEmail2, - uppercase: () => uppercase2, - uuid: () => uuid3, - uuid4: () => uuid42, - uuid6: () => uuid62, - uuid7: () => uuid72, - xid: () => xid3 -}); -var cuid4 = /^[cC][^\s-]{8,}$/; -var cuid23 = /^[0-9a-z]+$/; -var ulid3 = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; -var xid3 = /^[0-9a-vA-V]{20}$/; -var ksuid3 = /^[A-Za-z0-9]{27}$/; -var nanoid3 = /^[a-zA-Z0-9_-]{21}$/; -var duration3 = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; -var extendedDuration2 = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; -var guid3 = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; -var uuid3 = (version3) => { - if (!version3) - return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/; - return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version3}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`); -}; -var uuid42 = /* @__PURE__ */ uuid3(4); -var uuid62 = /* @__PURE__ */ uuid3(6); -var uuid72 = /* @__PURE__ */ uuid3(7); -var email3 = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; -var html5Email2 = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; -var rfc5322Email2 = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; -var unicodeEmail2 = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u; -var idnEmail2 = unicodeEmail2; -var browserEmail2 = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; -var _emoji3 = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; -function emoji3() { - return new RegExp(_emoji3, "u"); -} -var ipv43 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; -var ipv63 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; -var mac3 = (delimiter) => { - const escapedDelim = escapeRegex2(delimiter ?? ":"); - return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`); -}; -var cidrv43 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; -var cidrv63 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; -var base643 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; -var base64url3 = /^[A-Za-z0-9_-]*$/; -var hostname3 = /^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/; -var domain2 = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; -var e1643 = /^\+[1-9]\d{6,14}$/; -var dateSource2 = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`; -var date5 = /* @__PURE__ */ new RegExp(`^${dateSource2}$`); -function timeSource2(args) { - const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`; - const regex = typeof args.precision === "number" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\d` : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`; - return regex; -} -function time3(args) { - return new RegExp(`^${timeSource2(args)}$`); -} -function datetime3(args) { - const time5 = timeSource2({ precision: args.precision }); - const opts = ["Z"]; - if (args.local) - opts.push(""); - if (args.offset) - opts.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`); - const timeRegex = `${time5}(?:${opts.join("|")})`; - return new RegExp(`^${dateSource2}T(?:${timeRegex})$`); -} -var string4 = (params) => { - const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`; - return new RegExp(`^${regex}$`); -}; -var bigint4 = /^-?\d+n?$/; -var integer2 = /^-?\d+$/; -var number4 = /^-?\d+(?:\.\d+)?$/; -var boolean4 = /^(?:true|false)$/i; -var _null4 = /^null$/i; -var _undefined4 = /^undefined$/i; -var lowercase2 = /^[^A-Z]*$/; -var uppercase2 = /^[^a-z]*$/; -var hex3 = /^[0-9a-fA-F]*$/; -function fixedBase642(bodyLength, padding) { - return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`); -} -function fixedBase64url2(length) { - return new RegExp(`^[A-Za-z0-9_-]{${length}}$`); -} -var md5_hex2 = /^[0-9a-fA-F]{32}$/; -var md5_base642 = /* @__PURE__ */ fixedBase642(22, "=="); -var md5_base64url2 = /* @__PURE__ */ fixedBase64url2(22); -var sha1_hex2 = /^[0-9a-fA-F]{40}$/; -var sha1_base642 = /* @__PURE__ */ fixedBase642(27, "="); -var sha1_base64url2 = /* @__PURE__ */ fixedBase64url2(27); -var sha256_hex2 = /^[0-9a-fA-F]{64}$/; -var sha256_base642 = /* @__PURE__ */ fixedBase642(43, "="); -var sha256_base64url2 = /* @__PURE__ */ fixedBase64url2(43); -var sha384_hex2 = /^[0-9a-fA-F]{96}$/; -var sha384_base642 = /* @__PURE__ */ fixedBase642(64, ""); -var sha384_base64url2 = /* @__PURE__ */ fixedBase64url2(64); -var sha512_hex2 = /^[0-9a-fA-F]{128}$/; -var sha512_base642 = /* @__PURE__ */ fixedBase642(86, "=="); -var sha512_base64url2 = /* @__PURE__ */ fixedBase64url2(86); - -// ../../node_modules/zod/v4/core/checks.js -var $ZodCheck2 = /* @__PURE__ */ $constructor2("$ZodCheck", (inst, def) => { - var _a3; - inst._zod ?? (inst._zod = {}); - inst._zod.def = def; - (_a3 = inst._zod).onattach ?? (_a3.onattach = []); -}); -var numericOriginMap2 = { - number: "number", - bigint: "bigint", - object: "date" -}; -var $ZodCheckLessThan2 = /* @__PURE__ */ $constructor2("$ZodCheckLessThan", (inst, def) => { - $ZodCheck2.init(inst, def); - const origin = numericOriginMap2[typeof def.value]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY; - if (def.value < curr) { - if (def.inclusive) - bag.maximum = def.value; - else - bag.exclusiveMaximum = def.value; - } - }); - inst._zod.check = (payload) => { - if (def.inclusive ? payload.value <= def.value : payload.value < def.value) { - return; - } - payload.issues.push({ - origin, - code: "too_big", - maximum: typeof def.value === "object" ? def.value.getTime() : def.value, - input: payload.value, - inclusive: def.inclusive, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckGreaterThan2 = /* @__PURE__ */ $constructor2("$ZodCheckGreaterThan", (inst, def) => { - $ZodCheck2.init(inst, def); - const origin = numericOriginMap2[typeof def.value]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY; - if (def.value > curr) { - if (def.inclusive) - bag.minimum = def.value; - else - bag.exclusiveMinimum = def.value; - } - }); - inst._zod.check = (payload) => { - if (def.inclusive ? payload.value >= def.value : payload.value > def.value) { - return; - } - payload.issues.push({ - origin, - code: "too_small", - minimum: typeof def.value === "object" ? def.value.getTime() : def.value, - input: payload.value, - inclusive: def.inclusive, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMultipleOf2 = /* @__PURE__ */ $constructor2("$ZodCheckMultipleOf", (inst, def) => { - $ZodCheck2.init(inst, def); - inst._zod.onattach.push((inst2) => { - var _a3; - (_a3 = inst2._zod.bag).multipleOf ?? (_a3.multipleOf = def.value); - }); - inst._zod.check = (payload) => { - if (typeof payload.value !== typeof def.value) - throw new Error("Cannot mix number and bigint in multiple_of check."); - const isMultiple = typeof payload.value === "bigint" ? payload.value % def.value === BigInt(0) : floatSafeRemainder2(payload.value, def.value) === 0; - if (isMultiple) - return; - payload.issues.push({ - origin: typeof payload.value, - code: "not_multiple_of", - divisor: def.value, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckNumberFormat2 = /* @__PURE__ */ $constructor2("$ZodCheckNumberFormat", (inst, def) => { - $ZodCheck2.init(inst, def); - def.format = def.format || "float64"; - const isInt = def.format?.includes("int"); - const origin = isInt ? "int" : "number"; - const [minimum, maximum] = NUMBER_FORMAT_RANGES2[def.format]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - bag.minimum = minimum; - bag.maximum = maximum; - if (isInt) - bag.pattern = integer2; - }); - inst._zod.check = (payload) => { - const input = payload.value; - if (isInt) { - if (!Number.isInteger(input)) { - payload.issues.push({ - expected: origin, - format: def.format, - code: "invalid_type", - continue: false, - input, - inst - }); - return; - } - if (!Number.isSafeInteger(input)) { - if (input > 0) { - payload.issues.push({ - input, - code: "too_big", - maximum: Number.MAX_SAFE_INTEGER, - note: "Integers must be within the safe integer range.", - inst, - origin, - inclusive: true, - continue: !def.abort - }); - } else { - payload.issues.push({ - input, - code: "too_small", - minimum: Number.MIN_SAFE_INTEGER, - note: "Integers must be within the safe integer range.", - inst, - origin, - inclusive: true, - continue: !def.abort - }); - } - return; - } - } - if (input < minimum) { - payload.issues.push({ - origin: "number", - input, - code: "too_small", - minimum, - inclusive: true, - inst, - continue: !def.abort - }); - } - if (input > maximum) { - payload.issues.push({ - origin: "number", - input, - code: "too_big", - maximum, - inclusive: true, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodCheckBigIntFormat2 = /* @__PURE__ */ $constructor2("$ZodCheckBigIntFormat", (inst, def) => { - $ZodCheck2.init(inst, def); - const [minimum, maximum] = BIGINT_FORMAT_RANGES2[def.format]; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - bag.minimum = minimum; - bag.maximum = maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - if (input < minimum) { - payload.issues.push({ - origin: "bigint", - input, - code: "too_small", - minimum, - inclusive: true, - inst, - continue: !def.abort - }); - } - if (input > maximum) { - payload.issues.push({ - origin: "bigint", - input, - code: "too_big", - maximum, - inclusive: true, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodCheckMaxSize2 = /* @__PURE__ */ $constructor2("$ZodCheckMaxSize", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; - if (def.maximum < curr) - inst2._zod.bag.maximum = def.maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size <= def.maximum) - return; - payload.issues.push({ - origin: getSizableOrigin2(input), - code: "too_big", - maximum: def.maximum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMinSize2 = /* @__PURE__ */ $constructor2("$ZodCheckMinSize", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; - if (def.minimum > curr) - inst2._zod.bag.minimum = def.minimum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size >= def.minimum) - return; - payload.issues.push({ - origin: getSizableOrigin2(input), - code: "too_small", - minimum: def.minimum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckSizeEquals2 = /* @__PURE__ */ $constructor2("$ZodCheckSizeEquals", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.size !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.minimum = def.size; - bag.maximum = def.size; - bag.size = def.size; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const size = input.size; - if (size === def.size) - return; - const tooBig = size > def.size; - payload.issues.push({ - origin: getSizableOrigin2(input), - ...tooBig ? { code: "too_big", maximum: def.size } : { code: "too_small", minimum: def.size }, - inclusive: true, - exact: true, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMaxLength2 = /* @__PURE__ */ $constructor2("$ZodCheckMaxLength", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; - if (def.maximum < curr) - inst2._zod.bag.maximum = def.maximum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length <= def.maximum) - return; - const origin = getLengthableOrigin2(input); - payload.issues.push({ - origin, - code: "too_big", - maximum: def.maximum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckMinLength2 = /* @__PURE__ */ $constructor2("$ZodCheckMinLength", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; - if (def.minimum > curr) - inst2._zod.bag.minimum = def.minimum; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length >= def.minimum) - return; - const origin = getLengthableOrigin2(input); - payload.issues.push({ - origin, - code: "too_small", - minimum: def.minimum, - inclusive: true, - input, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckLengthEquals2 = /* @__PURE__ */ $constructor2("$ZodCheckLengthEquals", (inst, def) => { - var _a3; - $ZodCheck2.init(inst, def); - (_a3 = inst._zod.def).when ?? (_a3.when = (payload) => { - const val = payload.value; - return !nullish3(val) && val.length !== void 0; - }); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.minimum = def.length; - bag.maximum = def.length; - bag.length = def.length; - }); - inst._zod.check = (payload) => { - const input = payload.value; - const length = input.length; - if (length === def.length) - return; - const origin = getLengthableOrigin2(input); - const tooBig = length > def.length; - payload.issues.push({ - origin, - ...tooBig ? { code: "too_big", maximum: def.length } : { code: "too_small", minimum: def.length }, - inclusive: true, - exact: true, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckStringFormat2 = /* @__PURE__ */ $constructor2("$ZodCheckStringFormat", (inst, def) => { - var _a3, _b; - $ZodCheck2.init(inst, def); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.format = def.format; - if (def.pattern) { - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(def.pattern); - } - }); - if (def.pattern) - (_a3 = inst._zod).check ?? (_a3.check = (payload) => { - def.pattern.lastIndex = 0; - if (def.pattern.test(payload.value)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: def.format, - input: payload.value, - ...def.pattern ? { pattern: def.pattern.toString() } : {}, - inst, - continue: !def.abort - }); - }); - else - (_b = inst._zod).check ?? (_b.check = () => { - }); -}); -var $ZodCheckRegex2 = /* @__PURE__ */ $constructor2("$ZodCheckRegex", (inst, def) => { - $ZodCheckStringFormat2.init(inst, def); - inst._zod.check = (payload) => { - def.pattern.lastIndex = 0; - if (def.pattern.test(payload.value)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "regex", - input: payload.value, - pattern: def.pattern.toString(), - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckLowerCase2 = /* @__PURE__ */ $constructor2("$ZodCheckLowerCase", (inst, def) => { - def.pattern ?? (def.pattern = lowercase2); - $ZodCheckStringFormat2.init(inst, def); -}); -var $ZodCheckUpperCase2 = /* @__PURE__ */ $constructor2("$ZodCheckUpperCase", (inst, def) => { - def.pattern ?? (def.pattern = uppercase2); - $ZodCheckStringFormat2.init(inst, def); -}); -var $ZodCheckIncludes2 = /* @__PURE__ */ $constructor2("$ZodCheckIncludes", (inst, def) => { - $ZodCheck2.init(inst, def); - const escapedRegex = escapeRegex2(def.includes); - const pattern = new RegExp(typeof def.position === "number" ? `^.{${def.position}}${escapedRegex}` : escapedRegex); - def.pattern = pattern; - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.includes(def.includes, def.position)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "includes", - includes: def.includes, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckStartsWith2 = /* @__PURE__ */ $constructor2("$ZodCheckStartsWith", (inst, def) => { - $ZodCheck2.init(inst, def); - const pattern = new RegExp(`^${escapeRegex2(def.prefix)}.*`); - def.pattern ?? (def.pattern = pattern); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.startsWith(def.prefix)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "starts_with", - prefix: def.prefix, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckEndsWith2 = /* @__PURE__ */ $constructor2("$ZodCheckEndsWith", (inst, def) => { - $ZodCheck2.init(inst, def); - const pattern = new RegExp(`.*${escapeRegex2(def.suffix)}$`); - def.pattern ?? (def.pattern = pattern); - inst._zod.onattach.push((inst2) => { - const bag = inst2._zod.bag; - bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); - bag.patterns.add(pattern); - }); - inst._zod.check = (payload) => { - if (payload.value.endsWith(def.suffix)) - return; - payload.issues.push({ - origin: "string", - code: "invalid_format", - format: "ends_with", - suffix: def.suffix, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -function handleCheckPropertyResult2(result, payload, property) { - if (result.issues.length) { - payload.issues.push(...prefixIssues2(property, result.issues)); - } -} -var $ZodCheckProperty2 = /* @__PURE__ */ $constructor2("$ZodCheckProperty", (inst, def) => { - $ZodCheck2.init(inst, def); - inst._zod.check = (payload) => { - const result = def.schema._zod.run({ - value: payload.value[def.property], - issues: [] - }, {}); - if (result instanceof Promise) { - return result.then((result2) => handleCheckPropertyResult2(result2, payload, def.property)); - } - handleCheckPropertyResult2(result, payload, def.property); - return; - }; -}); -var $ZodCheckMimeType2 = /* @__PURE__ */ $constructor2("$ZodCheckMimeType", (inst, def) => { - $ZodCheck2.init(inst, def); - const mimeSet = new Set(def.mime); - inst._zod.onattach.push((inst2) => { - inst2._zod.bag.mime = def.mime; - }); - inst._zod.check = (payload) => { - if (mimeSet.has(payload.value.type)) - return; - payload.issues.push({ - code: "invalid_value", - values: def.mime, - input: payload.value.type, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCheckOverwrite2 = /* @__PURE__ */ $constructor2("$ZodCheckOverwrite", (inst, def) => { - $ZodCheck2.init(inst, def); - inst._zod.check = (payload) => { - payload.value = def.tx(payload.value); - }; -}); - -// ../../node_modules/zod/v4/core/doc.js -var Doc2 = class { - constructor(args = []) { - this.content = []; - this.indent = 0; - if (this) - this.args = args; - } - indented(fn) { - this.indent += 1; - fn(this); - this.indent -= 1; - } - write(arg) { - if (typeof arg === "function") { - arg(this, { execution: "sync" }); - arg(this, { execution: "async" }); - return; - } - const content = arg; - const lines = content.split("\n").filter((x) => x); - const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length)); - const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x); - for (const line of dedented) { - this.content.push(line); - } - } - compile() { - const F = Function; - const args = this?.args; - const content = this?.content ?? [``]; - const lines = [...content.map((x) => ` ${x}`)]; - return new F(...args, lines.join("\n")); - } -}; - -// ../../node_modules/zod/v4/core/versions.js -var version2 = { - major: 4, - minor: 3, - patch: 6 -}; - -// ../../node_modules/zod/v4/core/schemas.js -var $ZodType2 = /* @__PURE__ */ $constructor2("$ZodType", (inst, def) => { - var _a3; - inst ?? (inst = {}); - inst._zod.def = def; - inst._zod.bag = inst._zod.bag || {}; - inst._zod.version = version2; - const checks = [...inst._zod.def.checks ?? []]; - if (inst._zod.traits.has("$ZodCheck")) { - checks.unshift(inst); - } - for (const ch of checks) { - for (const fn of ch._zod.onattach) { - fn(inst); - } - } - if (checks.length === 0) { - (_a3 = inst._zod).deferred ?? (_a3.deferred = []); - inst._zod.deferred?.push(() => { - inst._zod.run = inst._zod.parse; - }); - } else { - const runChecks = (payload, checks2, ctx) => { - let isAborted = aborted2(payload); - let asyncResult; - for (const ch of checks2) { - if (ch._zod.def.when) { - const shouldRun = ch._zod.def.when(payload); - if (!shouldRun) - continue; - } else if (isAborted) { - continue; - } - const currLen = payload.issues.length; - const _ = ch._zod.check(payload); - if (_ instanceof Promise && ctx?.async === false) { - throw new $ZodAsyncError2(); - } - if (asyncResult || _ instanceof Promise) { - asyncResult = (asyncResult ?? Promise.resolve()).then(async () => { - await _; - const nextLen = payload.issues.length; - if (nextLen === currLen) - return; - if (!isAborted) - isAborted = aborted2(payload, currLen); - }); - } else { - const nextLen = payload.issues.length; - if (nextLen === currLen) - continue; - if (!isAborted) - isAborted = aborted2(payload, currLen); - } - } - if (asyncResult) { - return asyncResult.then(() => { - return payload; - }); - } - return payload; - }; - const handleCanaryResult = (canary, payload, ctx) => { - if (aborted2(canary)) { - canary.aborted = true; - return canary; - } - const checkResult = runChecks(payload, checks, ctx); - if (checkResult instanceof Promise) { - if (ctx.async === false) - throw new $ZodAsyncError2(); - return checkResult.then((checkResult2) => inst._zod.parse(checkResult2, ctx)); - } - return inst._zod.parse(checkResult, ctx); - }; - inst._zod.run = (payload, ctx) => { - if (ctx.skipChecks) { - return inst._zod.parse(payload, ctx); - } - if (ctx.direction === "backward") { - const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true }); - if (canary instanceof Promise) { - return canary.then((canary2) => { - return handleCanaryResult(canary2, payload, ctx); - }); - } - return handleCanaryResult(canary, payload, ctx); - } - const result = inst._zod.parse(payload, ctx); - if (result instanceof Promise) { - if (ctx.async === false) - throw new $ZodAsyncError2(); - return result.then((result2) => runChecks(result2, checks, ctx)); - } - return runChecks(result, checks, ctx); - }; - } - defineLazy2(inst, "~standard", () => ({ - validate: (value) => { - try { - const r = safeParse3(inst, value); - return r.success ? { value: r.data } : { issues: r.error?.issues }; - } catch (_) { - return safeParseAsync3(inst, value).then((r) => r.success ? { value: r.data } : { issues: r.error?.issues }); - } - }, - vendor: "zod", - version: 1 - })); -}); -var $ZodString2 = /* @__PURE__ */ $constructor2("$ZodString", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = [...inst?._zod.bag?.patterns ?? []].pop() ?? string4(inst._zod.bag); - inst._zod.parse = (payload, _) => { - if (def.coerce) - try { - payload.value = String(payload.value); - } catch (_2) { - } - if (typeof payload.value === "string") - return payload; - payload.issues.push({ - expected: "string", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodStringFormat2 = /* @__PURE__ */ $constructor2("$ZodStringFormat", (inst, def) => { - $ZodCheckStringFormat2.init(inst, def); - $ZodString2.init(inst, def); -}); -var $ZodGUID2 = /* @__PURE__ */ $constructor2("$ZodGUID", (inst, def) => { - def.pattern ?? (def.pattern = guid3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodUUID2 = /* @__PURE__ */ $constructor2("$ZodUUID", (inst, def) => { - if (def.version) { - const versionMap = { - v1: 1, - v2: 2, - v3: 3, - v4: 4, - v5: 5, - v6: 6, - v7: 7, - v8: 8 - }; - const v = versionMap[def.version]; - if (v === void 0) - throw new Error(`Invalid UUID version: "${def.version}"`); - def.pattern ?? (def.pattern = uuid3(v)); - } else - def.pattern ?? (def.pattern = uuid3()); - $ZodStringFormat2.init(inst, def); -}); -var $ZodEmail2 = /* @__PURE__ */ $constructor2("$ZodEmail", (inst, def) => { - def.pattern ?? (def.pattern = email3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodURL2 = /* @__PURE__ */ $constructor2("$ZodURL", (inst, def) => { - $ZodStringFormat2.init(inst, def); - inst._zod.check = (payload) => { - try { - const trimmed = payload.value.trim(); - const url3 = new URL(trimmed); - if (def.hostname) { - def.hostname.lastIndex = 0; - if (!def.hostname.test(url3.hostname)) { - payload.issues.push({ - code: "invalid_format", - format: "url", - note: "Invalid hostname", - pattern: def.hostname.source, - input: payload.value, - inst, - continue: !def.abort - }); - } - } - if (def.protocol) { - def.protocol.lastIndex = 0; - if (!def.protocol.test(url3.protocol.endsWith(":") ? url3.protocol.slice(0, -1) : url3.protocol)) { - payload.issues.push({ - code: "invalid_format", - format: "url", - note: "Invalid protocol", - pattern: def.protocol.source, - input: payload.value, - inst, - continue: !def.abort - }); - } - } - if (def.normalize) { - payload.value = url3.href; - } else { - payload.value = trimmed; - } - return; - } catch (_) { - payload.issues.push({ - code: "invalid_format", - format: "url", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodEmoji2 = /* @__PURE__ */ $constructor2("$ZodEmoji", (inst, def) => { - def.pattern ?? (def.pattern = emoji3()); - $ZodStringFormat2.init(inst, def); -}); -var $ZodNanoID2 = /* @__PURE__ */ $constructor2("$ZodNanoID", (inst, def) => { - def.pattern ?? (def.pattern = nanoid3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodCUID3 = /* @__PURE__ */ $constructor2("$ZodCUID", (inst, def) => { - def.pattern ?? (def.pattern = cuid4); - $ZodStringFormat2.init(inst, def); -}); -var $ZodCUID22 = /* @__PURE__ */ $constructor2("$ZodCUID2", (inst, def) => { - def.pattern ?? (def.pattern = cuid23); - $ZodStringFormat2.init(inst, def); -}); -var $ZodULID2 = /* @__PURE__ */ $constructor2("$ZodULID", (inst, def) => { - def.pattern ?? (def.pattern = ulid3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodXID2 = /* @__PURE__ */ $constructor2("$ZodXID", (inst, def) => { - def.pattern ?? (def.pattern = xid3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodKSUID2 = /* @__PURE__ */ $constructor2("$ZodKSUID", (inst, def) => { - def.pattern ?? (def.pattern = ksuid3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodISODateTime2 = /* @__PURE__ */ $constructor2("$ZodISODateTime", (inst, def) => { - def.pattern ?? (def.pattern = datetime3(def)); - $ZodStringFormat2.init(inst, def); -}); -var $ZodISODate2 = /* @__PURE__ */ $constructor2("$ZodISODate", (inst, def) => { - def.pattern ?? (def.pattern = date5); - $ZodStringFormat2.init(inst, def); -}); -var $ZodISOTime2 = /* @__PURE__ */ $constructor2("$ZodISOTime", (inst, def) => { - def.pattern ?? (def.pattern = time3(def)); - $ZodStringFormat2.init(inst, def); -}); -var $ZodISODuration2 = /* @__PURE__ */ $constructor2("$ZodISODuration", (inst, def) => { - def.pattern ?? (def.pattern = duration3); - $ZodStringFormat2.init(inst, def); -}); -var $ZodIPv42 = /* @__PURE__ */ $constructor2("$ZodIPv4", (inst, def) => { - def.pattern ?? (def.pattern = ipv43); - $ZodStringFormat2.init(inst, def); - inst._zod.bag.format = `ipv4`; -}); -var $ZodIPv62 = /* @__PURE__ */ $constructor2("$ZodIPv6", (inst, def) => { - def.pattern ?? (def.pattern = ipv63); - $ZodStringFormat2.init(inst, def); - inst._zod.bag.format = `ipv6`; - inst._zod.check = (payload) => { - try { - new URL(`http://[${payload.value}]`); - } catch { - payload.issues.push({ - code: "invalid_format", - format: "ipv6", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -var $ZodMAC2 = /* @__PURE__ */ $constructor2("$ZodMAC", (inst, def) => { - def.pattern ?? (def.pattern = mac3(def.delimiter)); - $ZodStringFormat2.init(inst, def); - inst._zod.bag.format = `mac`; -}); -var $ZodCIDRv42 = /* @__PURE__ */ $constructor2("$ZodCIDRv4", (inst, def) => { - def.pattern ?? (def.pattern = cidrv43); - $ZodStringFormat2.init(inst, def); -}); -var $ZodCIDRv62 = /* @__PURE__ */ $constructor2("$ZodCIDRv6", (inst, def) => { - def.pattern ?? (def.pattern = cidrv63); - $ZodStringFormat2.init(inst, def); - inst._zod.check = (payload) => { - const parts = payload.value.split("/"); - try { - if (parts.length !== 2) - throw new Error(); - const [address, prefix] = parts; - if (!prefix) - throw new Error(); - const prefixNum = Number(prefix); - if (`${prefixNum}` !== prefix) - throw new Error(); - if (prefixNum < 0 || prefixNum > 128) - throw new Error(); - new URL(`http://[${address}]`); - } catch { - payload.issues.push({ - code: "invalid_format", - format: "cidrv6", - input: payload.value, - inst, - continue: !def.abort - }); - } - }; -}); -function isValidBase642(data) { - if (data === "") - return true; - if (data.length % 4 !== 0) - return false; - try { - atob(data); - return true; - } catch { - return false; - } -} -var $ZodBase642 = /* @__PURE__ */ $constructor2("$ZodBase64", (inst, def) => { - def.pattern ?? (def.pattern = base643); - $ZodStringFormat2.init(inst, def); - inst._zod.bag.contentEncoding = "base64"; - inst._zod.check = (payload) => { - if (isValidBase642(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: "base64", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -function isValidBase64URL2(data) { - if (!base64url3.test(data)) - return false; - const base645 = data.replace(/[-_]/g, (c) => c === "-" ? "+" : "/"); - const padded = base645.padEnd(Math.ceil(base645.length / 4) * 4, "="); - return isValidBase642(padded); -} -var $ZodBase64URL2 = /* @__PURE__ */ $constructor2("$ZodBase64URL", (inst, def) => { - def.pattern ?? (def.pattern = base64url3); - $ZodStringFormat2.init(inst, def); - inst._zod.bag.contentEncoding = "base64url"; - inst._zod.check = (payload) => { - if (isValidBase64URL2(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: "base64url", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodE1642 = /* @__PURE__ */ $constructor2("$ZodE164", (inst, def) => { - def.pattern ?? (def.pattern = e1643); - $ZodStringFormat2.init(inst, def); -}); -function isValidJWT2(token, algorithm = null) { - try { - const tokensParts = token.split("."); - if (tokensParts.length !== 3) - return false; - const [header] = tokensParts; - if (!header) - return false; - const parsedHeader = JSON.parse(atob(header)); - if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT") - return false; - if (!parsedHeader.alg) - return false; - if (algorithm && (!("alg" in parsedHeader) || parsedHeader.alg !== algorithm)) - return false; - return true; - } catch { - return false; - } -} -var $ZodJWT2 = /* @__PURE__ */ $constructor2("$ZodJWT", (inst, def) => { - $ZodStringFormat2.init(inst, def); - inst._zod.check = (payload) => { - if (isValidJWT2(payload.value, def.alg)) - return; - payload.issues.push({ - code: "invalid_format", - format: "jwt", - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodCustomStringFormat2 = /* @__PURE__ */ $constructor2("$ZodCustomStringFormat", (inst, def) => { - $ZodStringFormat2.init(inst, def); - inst._zod.check = (payload) => { - if (def.fn(payload.value)) - return; - payload.issues.push({ - code: "invalid_format", - format: def.format, - input: payload.value, - inst, - continue: !def.abort - }); - }; -}); -var $ZodNumber2 = /* @__PURE__ */ $constructor2("$ZodNumber", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = inst._zod.bag.pattern ?? number4; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = Number(payload.value); - } catch (_) { - } - const input = payload.value; - if (typeof input === "number" && !Number.isNaN(input) && Number.isFinite(input)) { - return payload; - } - const received = typeof input === "number" ? Number.isNaN(input) ? "NaN" : !Number.isFinite(input) ? "Infinity" : void 0 : void 0; - payload.issues.push({ - expected: "number", - code: "invalid_type", - input, - inst, - ...received ? { received } : {} - }); - return payload; - }; -}); -var $ZodNumberFormat2 = /* @__PURE__ */ $constructor2("$ZodNumberFormat", (inst, def) => { - $ZodCheckNumberFormat2.init(inst, def); - $ZodNumber2.init(inst, def); -}); -var $ZodBoolean2 = /* @__PURE__ */ $constructor2("$ZodBoolean", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = boolean4; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = Boolean(payload.value); - } catch (_) { - } - const input = payload.value; - if (typeof input === "boolean") - return payload; - payload.issues.push({ - expected: "boolean", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodBigInt2 = /* @__PURE__ */ $constructor2("$ZodBigInt", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = bigint4; - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) - try { - payload.value = BigInt(payload.value); - } catch (_) { - } - if (typeof payload.value === "bigint") - return payload; - payload.issues.push({ - expected: "bigint", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodBigIntFormat2 = /* @__PURE__ */ $constructor2("$ZodBigIntFormat", (inst, def) => { - $ZodCheckBigIntFormat2.init(inst, def); - $ZodBigInt2.init(inst, def); -}); -var $ZodSymbol2 = /* @__PURE__ */ $constructor2("$ZodSymbol", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "symbol") - return payload; - payload.issues.push({ - expected: "symbol", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodUndefined2 = /* @__PURE__ */ $constructor2("$ZodUndefined", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = _undefined4; - inst._zod.values = /* @__PURE__ */ new Set([void 0]); - inst._zod.optin = "optional"; - inst._zod.optout = "optional"; - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "undefined") - return payload; - payload.issues.push({ - expected: "undefined", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodNull2 = /* @__PURE__ */ $constructor2("$ZodNull", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.pattern = _null4; - inst._zod.values = /* @__PURE__ */ new Set([null]); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (input === null) - return payload; - payload.issues.push({ - expected: "null", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodAny2 = /* @__PURE__ */ $constructor2("$ZodAny", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload) => payload; -}); -var $ZodUnknown2 = /* @__PURE__ */ $constructor2("$ZodUnknown", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload) => payload; -}); -var $ZodNever2 = /* @__PURE__ */ $constructor2("$ZodNever", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - payload.issues.push({ - expected: "never", - code: "invalid_type", - input: payload.value, - inst - }); - return payload; - }; -}); -var $ZodVoid2 = /* @__PURE__ */ $constructor2("$ZodVoid", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (typeof input === "undefined") - return payload; - payload.issues.push({ - expected: "void", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodDate2 = /* @__PURE__ */ $constructor2("$ZodDate", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - if (def.coerce) { - try { - payload.value = new Date(payload.value); - } catch (_err) { - } - } - const input = payload.value; - const isDate = input instanceof Date; - const isValidDate = isDate && !Number.isNaN(input.getTime()); - if (isValidDate) - return payload; - payload.issues.push({ - expected: "date", - code: "invalid_type", - input, - ...isDate ? { received: "Invalid Date" } : {}, - inst - }); - return payload; - }; -}); -function handleArrayResult2(result, final, index) { - if (result.issues.length) { - final.issues.push(...prefixIssues2(index, result.issues)); - } - final.value[index] = result.value; -} -var $ZodArray2 = /* @__PURE__ */ $constructor2("$ZodArray", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!Array.isArray(input)) { - payload.issues.push({ - expected: "array", - code: "invalid_type", - input, - inst - }); - return payload; - } - payload.value = Array(input.length); - const proms = []; - for (let i = 0; i < input.length; i++) { - const item = input[i]; - const result = def.element._zod.run({ - value: item, - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleArrayResult2(result2, payload, i))); - } else { - handleArrayResult2(result, payload, i); - } - } - if (proms.length) { - return Promise.all(proms).then(() => payload); - } - return payload; - }; -}); -function handlePropertyResult2(result, final, key, input, isOptionalOut) { - if (result.issues.length) { - if (isOptionalOut && !(key in input)) { - return; - } - final.issues.push(...prefixIssues2(key, result.issues)); - } - if (result.value === void 0) { - if (key in input) { - final.value[key] = void 0; - } - } else { - final.value[key] = result.value; - } -} -function normalizeDef2(def) { - const keys = Object.keys(def.shape); - for (const k of keys) { - if (!def.shape?.[k]?._zod?.traits?.has("$ZodType")) { - throw new Error(`Invalid element at key "${k}": expected a Zod schema`); - } - } - const okeys = optionalKeys2(def.shape); - return { - ...def, - keys, - keySet: new Set(keys), - numKeys: keys.length, - optionalKeys: new Set(okeys) - }; -} -function handleCatchall2(proms, input, payload, ctx, def, inst) { - const unrecognized = []; - const keySet = def.keySet; - const _catchall = def.catchall._zod; - const t = _catchall.def.type; - const isOptionalOut = _catchall.optout === "optional"; - for (const key in input) { - if (keySet.has(key)) - continue; - if (t === "never") { - unrecognized.push(key); - continue; - } - const r = _catchall.run({ value: input[key], issues: [] }, ctx); - if (r instanceof Promise) { - proms.push(r.then((r2) => handlePropertyResult2(r2, payload, key, input, isOptionalOut))); - } else { - handlePropertyResult2(r, payload, key, input, isOptionalOut); - } - } - if (unrecognized.length) { - payload.issues.push({ - code: "unrecognized_keys", - keys: unrecognized, - input, - inst - }); - } - if (!proms.length) - return payload; - return Promise.all(proms).then(() => { - return payload; - }); -} -var $ZodObject2 = /* @__PURE__ */ $constructor2("$ZodObject", (inst, def) => { - $ZodType2.init(inst, def); - const desc = Object.getOwnPropertyDescriptor(def, "shape"); - if (!desc?.get) { - const sh = def.shape; - Object.defineProperty(def, "shape", { - get: () => { - const newSh = { ...sh }; - Object.defineProperty(def, "shape", { - value: newSh - }); - return newSh; - } - }); - } - const _normalized = cached2(() => normalizeDef2(def)); - defineLazy2(inst._zod, "propValues", () => { - const shape = def.shape; - const propValues = {}; - for (const key in shape) { - const field = shape[key]._zod; - if (field.values) { - propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set()); - for (const v of field.values) - propValues[key].add(v); - } - } - return propValues; - }); - const isObject3 = isObject2; - const catchall = def.catchall; - let value; - inst._zod.parse = (payload, ctx) => { - value ?? (value = _normalized.value); - const input = payload.value; - if (!isObject3(input)) { - payload.issues.push({ - expected: "object", - code: "invalid_type", - input, - inst - }); - return payload; - } - payload.value = {}; - const proms = []; - const shape = value.shape; - for (const key of value.keys) { - const el = shape[key]; - const isOptionalOut = el._zod.optout === "optional"; - const r = el._zod.run({ value: input[key], issues: [] }, ctx); - if (r instanceof Promise) { - proms.push(r.then((r2) => handlePropertyResult2(r2, payload, key, input, isOptionalOut))); - } else { - handlePropertyResult2(r, payload, key, input, isOptionalOut); - } - } - if (!catchall) { - return proms.length ? Promise.all(proms).then(() => payload) : payload; - } - return handleCatchall2(proms, input, payload, ctx, _normalized.value, inst); - }; -}); -var $ZodObjectJIT2 = /* @__PURE__ */ $constructor2("$ZodObjectJIT", (inst, def) => { - $ZodObject2.init(inst, def); - const superParse = inst._zod.parse; - const _normalized = cached2(() => normalizeDef2(def)); - const generateFastpass = (shape) => { - const doc = new Doc2(["shape", "payload", "ctx"]); - const normalized = _normalized.value; - const parseStr = (key) => { - const k = esc2(key); - return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`; - }; - doc.write(`const input = payload.value;`); - const ids = /* @__PURE__ */ Object.create(null); - let counter = 0; - for (const key of normalized.keys) { - ids[key] = `key_${counter++}`; - } - doc.write(`const newResult = {};`); - for (const key of normalized.keys) { - const id = ids[key]; - const k = esc2(key); - const schema = shape[key]; - const isOptionalOut = schema?._zod?.optout === "optional"; - doc.write(`const ${id} = ${parseStr(key)};`); - if (isOptionalOut) { - doc.write(` - if (${id}.issues.length) { - if (${k} in input) { - payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${k}, ...iss.path] : [${k}] - }))); - } - } - - if (${id}.value === undefined) { - if (${k} in input) { - newResult[${k}] = undefined; - } - } else { - newResult[${k}] = ${id}.value; - } - - `); - } else { - doc.write(` - if (${id}.issues.length) { - payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${k}, ...iss.path] : [${k}] - }))); - } - - if (${id}.value === undefined) { - if (${k} in input) { - newResult[${k}] = undefined; - } - } else { - newResult[${k}] = ${id}.value; - } - - `); - } - } - doc.write(`payload.value = newResult;`); - doc.write(`return payload;`); - const fn = doc.compile(); - return (payload, ctx) => fn(shape, payload, ctx); - }; - let fastpass; - const isObject3 = isObject2; - const jit = !globalConfig2.jitless; - const allowsEval3 = allowsEval2; - const fastEnabled = jit && allowsEval3.value; - const catchall = def.catchall; - let value; - inst._zod.parse = (payload, ctx) => { - value ?? (value = _normalized.value); - const input = payload.value; - if (!isObject3(input)) { - payload.issues.push({ - expected: "object", - code: "invalid_type", - input, - inst - }); - return payload; - } - if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) { - if (!fastpass) - fastpass = generateFastpass(def.shape); - payload = fastpass(payload, ctx); - if (!catchall) - return payload; - return handleCatchall2([], input, payload, ctx, value, inst); - } - return superParse(payload, ctx); - }; -}); -function handleUnionResults2(results, final, inst, ctx) { - for (const result of results) { - if (result.issues.length === 0) { - final.value = result.value; - return final; - } - } - const nonaborted = results.filter((r) => !aborted2(r)); - if (nonaborted.length === 1) { - final.value = nonaborted[0].value; - return nonaborted[0]; - } - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: results.map((result) => result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))) - }); - return final; -} -var $ZodUnion2 = /* @__PURE__ */ $constructor2("$ZodUnion", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "optin", () => def.options.some((o) => o._zod.optin === "optional") ? "optional" : void 0); - defineLazy2(inst._zod, "optout", () => def.options.some((o) => o._zod.optout === "optional") ? "optional" : void 0); - defineLazy2(inst._zod, "values", () => { - if (def.options.every((o) => o._zod.values)) { - return new Set(def.options.flatMap((option) => Array.from(option._zod.values))); - } - return void 0; - }); - defineLazy2(inst._zod, "pattern", () => { - if (def.options.every((o) => o._zod.pattern)) { - const patterns = def.options.map((o) => o._zod.pattern); - return new RegExp(`^(${patterns.map((p) => cleanRegex2(p.source)).join("|")})$`); - } - return void 0; - }); - const single = def.options.length === 1; - const first = def.options[0]._zod.run; - inst._zod.parse = (payload, ctx) => { - if (single) { - return first(payload, ctx); - } - let async = false; - const results = []; - for (const option of def.options) { - const result = option._zod.run({ - value: payload.value, - issues: [] - }, ctx); - if (result instanceof Promise) { - results.push(result); - async = true; - } else { - if (result.issues.length === 0) - return result; - results.push(result); - } - } - if (!async) - return handleUnionResults2(results, payload, inst, ctx); - return Promise.all(results).then((results2) => { - return handleUnionResults2(results2, payload, inst, ctx); - }); - }; -}); -function handleExclusiveUnionResults2(results, final, inst, ctx) { - const successes = results.filter((r) => r.issues.length === 0); - if (successes.length === 1) { - final.value = successes[0].value; - return final; - } - if (successes.length === 0) { - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: results.map((result) => result.issues.map((iss) => finalizeIssue2(iss, ctx, config2()))) - }); - } else { - final.issues.push({ - code: "invalid_union", - input: final.value, - inst, - errors: [], - inclusive: false - }); - } - return final; -} -var $ZodXor2 = /* @__PURE__ */ $constructor2("$ZodXor", (inst, def) => { - $ZodUnion2.init(inst, def); - def.inclusive = false; - const single = def.options.length === 1; - const first = def.options[0]._zod.run; - inst._zod.parse = (payload, ctx) => { - if (single) { - return first(payload, ctx); - } - let async = false; - const results = []; - for (const option of def.options) { - const result = option._zod.run({ - value: payload.value, - issues: [] - }, ctx); - if (result instanceof Promise) { - results.push(result); - async = true; - } else { - results.push(result); - } - } - if (!async) - return handleExclusiveUnionResults2(results, payload, inst, ctx); - return Promise.all(results).then((results2) => { - return handleExclusiveUnionResults2(results2, payload, inst, ctx); - }); - }; -}); -var $ZodDiscriminatedUnion2 = /* @__PURE__ */ $constructor2("$ZodDiscriminatedUnion", (inst, def) => { - def.inclusive = false; - $ZodUnion2.init(inst, def); - const _super = inst._zod.parse; - defineLazy2(inst._zod, "propValues", () => { - const propValues = {}; - for (const option of def.options) { - const pv = option._zod.propValues; - if (!pv || Object.keys(pv).length === 0) - throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`); - for (const [k, v] of Object.entries(pv)) { - if (!propValues[k]) - propValues[k] = /* @__PURE__ */ new Set(); - for (const val of v) { - propValues[k].add(val); - } - } - } - return propValues; - }); - const disc = cached2(() => { - const opts = def.options; - const map3 = /* @__PURE__ */ new Map(); - for (const o of opts) { - const values = o._zod.propValues?.[def.discriminator]; - if (!values || values.size === 0) - throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`); - for (const v of values) { - if (map3.has(v)) { - throw new Error(`Duplicate discriminator value "${String(v)}"`); - } - map3.set(v, o); - } - } - return map3; - }); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!isObject2(input)) { - payload.issues.push({ - code: "invalid_type", - expected: "object", - input, - inst - }); - return payload; - } - const opt = disc.value.get(input?.[def.discriminator]); - if (opt) { - return opt._zod.run(payload, ctx); - } - if (def.unionFallback) { - return _super(payload, ctx); - } - payload.issues.push({ - code: "invalid_union", - errors: [], - note: "No matching discriminator", - discriminator: def.discriminator, - input, - path: [def.discriminator], - inst - }); - return payload; - }; -}); -var $ZodIntersection2 = /* @__PURE__ */ $constructor2("$ZodIntersection", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - const left = def.left._zod.run({ value: input, issues: [] }, ctx); - const right = def.right._zod.run({ value: input, issues: [] }, ctx); - const async = left instanceof Promise || right instanceof Promise; - if (async) { - return Promise.all([left, right]).then(([left2, right2]) => { - return handleIntersectionResults2(payload, left2, right2); - }); - } - return handleIntersectionResults2(payload, left, right); - }; -}); -function mergeValues2(a, b) { - if (a === b) { - return { valid: true, data: a }; - } - if (a instanceof Date && b instanceof Date && +a === +b) { - return { valid: true, data: a }; - } - if (isPlainObject2(a) && isPlainObject2(b)) { - const bKeys = Object.keys(b); - const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1); - const newObj = { ...a, ...b }; - for (const key of sharedKeys) { - const sharedValue = mergeValues2(a[key], b[key]); - if (!sharedValue.valid) { - return { - valid: false, - mergeErrorPath: [key, ...sharedValue.mergeErrorPath] - }; - } - newObj[key] = sharedValue.data; - } - return { valid: true, data: newObj }; - } - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) { - return { valid: false, mergeErrorPath: [] }; - } - const newArray = []; - for (let index = 0; index < a.length; index++) { - const itemA = a[index]; - const itemB = b[index]; - const sharedValue = mergeValues2(itemA, itemB); - if (!sharedValue.valid) { - return { - valid: false, - mergeErrorPath: [index, ...sharedValue.mergeErrorPath] - }; - } - newArray.push(sharedValue.data); - } - return { valid: true, data: newArray }; - } - return { valid: false, mergeErrorPath: [] }; -} -function handleIntersectionResults2(result, left, right) { - const unrecKeys = /* @__PURE__ */ new Map(); - let unrecIssue; - for (const iss of left.issues) { - if (iss.code === "unrecognized_keys") { - unrecIssue ?? (unrecIssue = iss); - for (const k of iss.keys) { - if (!unrecKeys.has(k)) - unrecKeys.set(k, {}); - unrecKeys.get(k).l = true; - } - } else { - result.issues.push(iss); - } - } - for (const iss of right.issues) { - if (iss.code === "unrecognized_keys") { - for (const k of iss.keys) { - if (!unrecKeys.has(k)) - unrecKeys.set(k, {}); - unrecKeys.get(k).r = true; - } - } else { - result.issues.push(iss); - } - } - const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k); - if (bothKeys.length && unrecIssue) { - result.issues.push({ ...unrecIssue, keys: bothKeys }); - } - if (aborted2(result)) - return result; - const merged = mergeValues2(left.value, right.value); - if (!merged.valid) { - throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`); - } - result.value = merged.data; - return result; -} -var $ZodTuple2 = /* @__PURE__ */ $constructor2("$ZodTuple", (inst, def) => { - $ZodType2.init(inst, def); - const items = def.items; - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!Array.isArray(input)) { - payload.issues.push({ - input, - inst, - expected: "tuple", - code: "invalid_type" - }); - return payload; - } - payload.value = []; - const proms = []; - const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== "optional"); - const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex; - if (!def.rest) { - const tooBig = input.length > items.length; - const tooSmall = input.length < optStart - 1; - if (tooBig || tooSmall) { - payload.issues.push({ - ...tooBig ? { code: "too_big", maximum: items.length, inclusive: true } : { code: "too_small", minimum: items.length }, - input, - inst, - origin: "array" - }); - return payload; - } - } - let i = -1; - for (const item of items) { - i++; - if (i >= input.length) { - if (i >= optStart) - continue; - } - const result = item._zod.run({ - value: input[i], - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleTupleResult2(result2, payload, i))); - } else { - handleTupleResult2(result, payload, i); - } - } - if (def.rest) { - const rest = input.slice(items.length); - for (const el of rest) { - i++; - const result = def.rest._zod.run({ - value: el, - issues: [] - }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleTupleResult2(result2, payload, i))); - } else { - handleTupleResult2(result, payload, i); - } - } - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleTupleResult2(result, final, index) { - if (result.issues.length) { - final.issues.push(...prefixIssues2(index, result.issues)); - } - final.value[index] = result.value; -} -var $ZodRecord2 = /* @__PURE__ */ $constructor2("$ZodRecord", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!isPlainObject2(input)) { - payload.issues.push({ - expected: "record", - code: "invalid_type", - input, - inst - }); - return payload; - } - const proms = []; - const values = def.keyType._zod.values; - if (values) { - payload.value = {}; - const recordKeys = /* @__PURE__ */ new Set(); - for (const key of values) { - if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { - recordKeys.add(typeof key === "number" ? key.toString() : key); - const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => { - if (result2.issues.length) { - payload.issues.push(...prefixIssues2(key, result2.issues)); - } - payload.value[key] = result2.value; - })); - } else { - if (result.issues.length) { - payload.issues.push(...prefixIssues2(key, result.issues)); - } - payload.value[key] = result.value; - } - } - } - let unrecognized; - for (const key in input) { - if (!recordKeys.has(key)) { - unrecognized = unrecognized ?? []; - unrecognized.push(key); - } - } - if (unrecognized && unrecognized.length > 0) { - payload.issues.push({ - code: "unrecognized_keys", - input, - inst, - keys: unrecognized - }); - } - } else { - payload.value = {}; - for (const key of Reflect.ownKeys(input)) { - if (key === "__proto__") - continue; - let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); - if (keyResult instanceof Promise) { - throw new Error("Async schemas not supported in object keys currently"); - } - const checkNumericKey = typeof key === "string" && number4.test(key) && keyResult.issues.length; - if (checkNumericKey) { - const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx); - if (retryResult instanceof Promise) { - throw new Error("Async schemas not supported in object keys currently"); - } - if (retryResult.issues.length === 0) { - keyResult = retryResult; - } - } - if (keyResult.issues.length) { - if (def.mode === "loose") { - payload.value[key] = input[key]; - } else { - payload.issues.push({ - code: "invalid_key", - origin: "record", - issues: keyResult.issues.map((iss) => finalizeIssue2(iss, ctx, config2())), - input: key, - path: [key], - inst - }); - } - continue; - } - const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => { - if (result2.issues.length) { - payload.issues.push(...prefixIssues2(key, result2.issues)); - } - payload.value[keyResult.value] = result2.value; - })); - } else { - if (result.issues.length) { - payload.issues.push(...prefixIssues2(key, result.issues)); - } - payload.value[keyResult.value] = result.value; - } - } - } - if (proms.length) { - return Promise.all(proms).then(() => payload); - } - return payload; - }; -}); -var $ZodMap2 = /* @__PURE__ */ $constructor2("$ZodMap", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!(input instanceof Map)) { - payload.issues.push({ - expected: "map", - code: "invalid_type", - input, - inst - }); - return payload; - } - const proms = []; - payload.value = /* @__PURE__ */ new Map(); - for (const [key, value] of input) { - const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); - const valueResult = def.valueType._zod.run({ value, issues: [] }, ctx); - if (keyResult instanceof Promise || valueResult instanceof Promise) { - proms.push(Promise.all([keyResult, valueResult]).then(([keyResult2, valueResult2]) => { - handleMapResult2(keyResult2, valueResult2, payload, key, input, inst, ctx); - })); - } else { - handleMapResult2(keyResult, valueResult, payload, key, input, inst, ctx); - } - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleMapResult2(keyResult, valueResult, final, key, input, inst, ctx) { - if (keyResult.issues.length) { - if (propertyKeyTypes2.has(typeof key)) { - final.issues.push(...prefixIssues2(key, keyResult.issues)); - } else { - final.issues.push({ - code: "invalid_key", - origin: "map", - input, - inst, - issues: keyResult.issues.map((iss) => finalizeIssue2(iss, ctx, config2())) - }); - } - } - if (valueResult.issues.length) { - if (propertyKeyTypes2.has(typeof key)) { - final.issues.push(...prefixIssues2(key, valueResult.issues)); - } else { - final.issues.push({ - origin: "map", - code: "invalid_element", - input, - inst, - key, - issues: valueResult.issues.map((iss) => finalizeIssue2(iss, ctx, config2())) - }); - } - } - final.value.set(keyResult.value, valueResult.value); -} -var $ZodSet2 = /* @__PURE__ */ $constructor2("$ZodSet", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - const input = payload.value; - if (!(input instanceof Set)) { - payload.issues.push({ - input, - inst, - expected: "set", - code: "invalid_type" - }); - return payload; - } - const proms = []; - payload.value = /* @__PURE__ */ new Set(); - for (const item of input) { - const result = def.valueType._zod.run({ value: item, issues: [] }, ctx); - if (result instanceof Promise) { - proms.push(result.then((result2) => handleSetResult2(result2, payload))); - } else - handleSetResult2(result, payload); - } - if (proms.length) - return Promise.all(proms).then(() => payload); - return payload; - }; -}); -function handleSetResult2(result, final) { - if (result.issues.length) { - final.issues.push(...result.issues); - } - final.value.add(result.value); -} -var $ZodEnum2 = /* @__PURE__ */ $constructor2("$ZodEnum", (inst, def) => { - $ZodType2.init(inst, def); - const values = getEnumValues2(def.entries); - const valuesSet = new Set(values); - inst._zod.values = valuesSet; - inst._zod.pattern = new RegExp(`^(${values.filter((k) => propertyKeyTypes2.has(typeof k)).map((o) => typeof o === "string" ? escapeRegex2(o) : o.toString()).join("|")})$`); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (valuesSet.has(input)) { - return payload; - } - payload.issues.push({ - code: "invalid_value", - values, - input, - inst - }); - return payload; - }; -}); -var $ZodLiteral2 = /* @__PURE__ */ $constructor2("$ZodLiteral", (inst, def) => { - $ZodType2.init(inst, def); - if (def.values.length === 0) { - throw new Error("Cannot create literal schema with no valid values"); - } - const values = new Set(def.values); - inst._zod.values = values; - inst._zod.pattern = new RegExp(`^(${def.values.map((o) => typeof o === "string" ? escapeRegex2(o) : o ? escapeRegex2(o.toString()) : String(o)).join("|")})$`); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (values.has(input)) { - return payload; - } - payload.issues.push({ - code: "invalid_value", - values: def.values, - input, - inst - }); - return payload; - }; -}); -var $ZodFile2 = /* @__PURE__ */ $constructor2("$ZodFile", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - const input = payload.value; - if (input instanceof File) - return payload; - payload.issues.push({ - expected: "file", - code: "invalid_type", - input, - inst - }); - return payload; - }; -}); -var $ZodTransform2 = /* @__PURE__ */ $constructor2("$ZodTransform", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - throw new $ZodEncodeError2(inst.constructor.name); - } - const _out = def.transform(payload.value, payload); - if (ctx.async) { - const output = _out instanceof Promise ? _out : Promise.resolve(_out); - return output.then((output2) => { - payload.value = output2; - return payload; - }); - } - if (_out instanceof Promise) { - throw new $ZodAsyncError2(); - } - payload.value = _out; - return payload; - }; -}); -function handleOptionalResult2(result, input) { - if (result.issues.length && input === void 0) { - return { issues: [], value: void 0 }; - } - return result; -} -var $ZodOptional2 = /* @__PURE__ */ $constructor2("$ZodOptional", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.optin = "optional"; - inst._zod.optout = "optional"; - defineLazy2(inst._zod, "values", () => { - return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, void 0]) : void 0; - }); - defineLazy2(inst._zod, "pattern", () => { - const pattern = def.innerType._zod.pattern; - return pattern ? new RegExp(`^(${cleanRegex2(pattern.source)})?$`) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - if (def.innerType._zod.optin === "optional") { - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) - return result.then((r) => handleOptionalResult2(r, payload.value)); - return handleOptionalResult2(result, payload.value); - } - if (payload.value === void 0) { - return payload; - } - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodExactOptional2 = /* @__PURE__ */ $constructor2("$ZodExactOptional", (inst, def) => { - $ZodOptional2.init(inst, def); - defineLazy2(inst._zod, "values", () => def.innerType._zod.values); - defineLazy2(inst._zod, "pattern", () => def.innerType._zod.pattern); - inst._zod.parse = (payload, ctx) => { - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodNullable2 = /* @__PURE__ */ $constructor2("$ZodNullable", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "optin", () => def.innerType._zod.optin); - defineLazy2(inst._zod, "optout", () => def.innerType._zod.optout); - defineLazy2(inst._zod, "pattern", () => { - const pattern = def.innerType._zod.pattern; - return pattern ? new RegExp(`^(${cleanRegex2(pattern.source)}|null)$`) : void 0; - }); - defineLazy2(inst._zod, "values", () => { - return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, null]) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - if (payload.value === null) - return payload; - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodDefault2 = /* @__PURE__ */ $constructor2("$ZodDefault", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.optin = "optional"; - defineLazy2(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - if (payload.value === void 0) { - payload.value = def.defaultValue; - return payload; - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => handleDefaultResult2(result2, def)); - } - return handleDefaultResult2(result, def); - }; -}); -function handleDefaultResult2(payload, def) { - if (payload.value === void 0) { - payload.value = def.defaultValue; - } - return payload; -} -var $ZodPrefault2 = /* @__PURE__ */ $constructor2("$ZodPrefault", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.optin = "optional"; - defineLazy2(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - if (payload.value === void 0) { - payload.value = def.defaultValue; - } - return def.innerType._zod.run(payload, ctx); - }; -}); -var $ZodNonOptional2 = /* @__PURE__ */ $constructor2("$ZodNonOptional", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "values", () => { - const v = def.innerType._zod.values; - return v ? new Set([...v].filter((x) => x !== void 0)) : void 0; - }); - inst._zod.parse = (payload, ctx) => { - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => handleNonOptionalResult2(result2, inst)); - } - return handleNonOptionalResult2(result, inst); - }; -}); -function handleNonOptionalResult2(payload, inst) { - if (!payload.issues.length && payload.value === void 0) { - payload.issues.push({ - code: "invalid_type", - expected: "nonoptional", - input: payload.value, - inst - }); - } - return payload; -} -var $ZodSuccess2 = /* @__PURE__ */ $constructor2("$ZodSuccess", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - throw new $ZodEncodeError2("ZodSuccess"); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => { - payload.value = result2.issues.length === 0; - return payload; - }); - } - payload.value = result.issues.length === 0; - return payload; - }; -}); -var $ZodCatch2 = /* @__PURE__ */ $constructor2("$ZodCatch", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "optin", () => def.innerType._zod.optin); - defineLazy2(inst._zod, "optout", () => def.innerType._zod.optout); - defineLazy2(inst._zod, "values", () => def.innerType._zod.values); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then((result2) => { - payload.value = result2.value; - if (result2.issues.length) { - payload.value = def.catchValue({ - ...payload, - error: { - issues: result2.issues.map((iss) => finalizeIssue2(iss, ctx, config2())) - }, - input: payload.value - }); - payload.issues = []; - } - return payload; - }); - } - payload.value = result.value; - if (result.issues.length) { - payload.value = def.catchValue({ - ...payload, - error: { - issues: result.issues.map((iss) => finalizeIssue2(iss, ctx, config2())) - }, - input: payload.value - }); - payload.issues = []; - } - return payload; - }; -}); -var $ZodNaN2 = /* @__PURE__ */ $constructor2("$ZodNaN", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "number" || !Number.isNaN(payload.value)) { - payload.issues.push({ - input: payload.value, - inst, - expected: "nan", - code: "invalid_type" - }); - return payload; - } - return payload; - }; -}); -var $ZodPipe2 = /* @__PURE__ */ $constructor2("$ZodPipe", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "values", () => def.in._zod.values); - defineLazy2(inst._zod, "optin", () => def.in._zod.optin); - defineLazy2(inst._zod, "optout", () => def.out._zod.optout); - defineLazy2(inst._zod, "propValues", () => def.in._zod.propValues); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - const right = def.out._zod.run(payload, ctx); - if (right instanceof Promise) { - return right.then((right2) => handlePipeResult2(right2, def.in, ctx)); - } - return handlePipeResult2(right, def.in, ctx); - } - const left = def.in._zod.run(payload, ctx); - if (left instanceof Promise) { - return left.then((left2) => handlePipeResult2(left2, def.out, ctx)); - } - return handlePipeResult2(left, def.out, ctx); - }; -}); -function handlePipeResult2(left, next, ctx) { - if (left.issues.length) { - left.aborted = true; - return left; - } - return next._zod.run({ value: left.value, issues: left.issues }, ctx); -} -var $ZodCodec2 = /* @__PURE__ */ $constructor2("$ZodCodec", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "values", () => def.in._zod.values); - defineLazy2(inst._zod, "optin", () => def.in._zod.optin); - defineLazy2(inst._zod, "optout", () => def.out._zod.optout); - defineLazy2(inst._zod, "propValues", () => def.in._zod.propValues); - inst._zod.parse = (payload, ctx) => { - const direction = ctx.direction || "forward"; - if (direction === "forward") { - const left = def.in._zod.run(payload, ctx); - if (left instanceof Promise) { - return left.then((left2) => handleCodecAResult2(left2, def, ctx)); - } - return handleCodecAResult2(left, def, ctx); - } else { - const right = def.out._zod.run(payload, ctx); - if (right instanceof Promise) { - return right.then((right2) => handleCodecAResult2(right2, def, ctx)); - } - return handleCodecAResult2(right, def, ctx); - } - }; -}); -function handleCodecAResult2(result, def, ctx) { - if (result.issues.length) { - result.aborted = true; - return result; - } - const direction = ctx.direction || "forward"; - if (direction === "forward") { - const transformed = def.transform(result.value, result); - if (transformed instanceof Promise) { - return transformed.then((value) => handleCodecTxResult2(result, value, def.out, ctx)); - } - return handleCodecTxResult2(result, transformed, def.out, ctx); - } else { - const transformed = def.reverseTransform(result.value, result); - if (transformed instanceof Promise) { - return transformed.then((value) => handleCodecTxResult2(result, value, def.in, ctx)); - } - return handleCodecTxResult2(result, transformed, def.in, ctx); - } -} -function handleCodecTxResult2(left, value, nextSchema, ctx) { - if (left.issues.length) { - left.aborted = true; - return left; - } - return nextSchema._zod.run({ value, issues: left.issues }, ctx); -} -var $ZodReadonly2 = /* @__PURE__ */ $constructor2("$ZodReadonly", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "propValues", () => def.innerType._zod.propValues); - defineLazy2(inst._zod, "values", () => def.innerType._zod.values); - defineLazy2(inst._zod, "optin", () => def.innerType?._zod?.optin); - defineLazy2(inst._zod, "optout", () => def.innerType?._zod?.optout); - inst._zod.parse = (payload, ctx) => { - if (ctx.direction === "backward") { - return def.innerType._zod.run(payload, ctx); - } - const result = def.innerType._zod.run(payload, ctx); - if (result instanceof Promise) { - return result.then(handleReadonlyResult2); - } - return handleReadonlyResult2(result); - }; -}); -function handleReadonlyResult2(payload) { - payload.value = Object.freeze(payload.value); - return payload; -} -var $ZodTemplateLiteral2 = /* @__PURE__ */ $constructor2("$ZodTemplateLiteral", (inst, def) => { - $ZodType2.init(inst, def); - const regexParts = []; - for (const part of def.parts) { - if (typeof part === "object" && part !== null) { - if (!part._zod.pattern) { - throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`); - } - const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern; - if (!source) - throw new Error(`Invalid template literal part: ${part._zod.traits}`); - const start = source.startsWith("^") ? 1 : 0; - const end = source.endsWith("$") ? source.length - 1 : source.length; - regexParts.push(source.slice(start, end)); - } else if (part === null || primitiveTypes2.has(typeof part)) { - regexParts.push(escapeRegex2(`${part}`)); - } else { - throw new Error(`Invalid template literal part: ${part}`); - } - } - inst._zod.pattern = new RegExp(`^${regexParts.join("")}$`); - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "string") { - payload.issues.push({ - input: payload.value, - inst, - expected: "string", - code: "invalid_type" - }); - return payload; - } - inst._zod.pattern.lastIndex = 0; - if (!inst._zod.pattern.test(payload.value)) { - payload.issues.push({ - input: payload.value, - inst, - code: "invalid_format", - format: def.format ?? "template_literal", - pattern: inst._zod.pattern.source - }); - return payload; - } - return payload; - }; -}); -var $ZodFunction2 = /* @__PURE__ */ $constructor2("$ZodFunction", (inst, def) => { - $ZodType2.init(inst, def); - inst._def = def; - inst._zod.def = def; - inst.implement = (func) => { - if (typeof func !== "function") { - throw new Error("implement() must be called with a function"); - } - return function(...args) { - const parsedArgs = inst._def.input ? parse3(inst._def.input, args) : args; - const result = Reflect.apply(func, this, parsedArgs); - if (inst._def.output) { - return parse3(inst._def.output, result); - } - return result; - }; - }; - inst.implementAsync = (func) => { - if (typeof func !== "function") { - throw new Error("implementAsync() must be called with a function"); - } - return async function(...args) { - const parsedArgs = inst._def.input ? await parseAsync3(inst._def.input, args) : args; - const result = await Reflect.apply(func, this, parsedArgs); - if (inst._def.output) { - return await parseAsync3(inst._def.output, result); - } - return result; - }; - }; - inst._zod.parse = (payload, _ctx) => { - if (typeof payload.value !== "function") { - payload.issues.push({ - code: "invalid_type", - expected: "function", - input: payload.value, - inst - }); - return payload; - } - const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === "promise"; - if (hasPromiseOutput) { - payload.value = inst.implementAsync(payload.value); - } else { - payload.value = inst.implement(payload.value); - } - return payload; - }; - inst.input = (...args) => { - const F = inst.constructor; - if (Array.isArray(args[0])) { - return new F({ - type: "function", - input: new $ZodTuple2({ - type: "tuple", - items: args[0], - rest: args[1] - }), - output: inst._def.output - }); - } - return new F({ - type: "function", - input: args[0], - output: inst._def.output - }); - }; - inst.output = (output) => { - const F = inst.constructor; - return new F({ - type: "function", - input: inst._def.input, - output - }); - }; - return inst; -}); -var $ZodPromise2 = /* @__PURE__ */ $constructor2("$ZodPromise", (inst, def) => { - $ZodType2.init(inst, def); - inst._zod.parse = (payload, ctx) => { - return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx)); - }; -}); -var $ZodLazy2 = /* @__PURE__ */ $constructor2("$ZodLazy", (inst, def) => { - $ZodType2.init(inst, def); - defineLazy2(inst._zod, "innerType", () => def.getter()); - defineLazy2(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern); - defineLazy2(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues); - defineLazy2(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0); - defineLazy2(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0); - inst._zod.parse = (payload, ctx) => { - const inner = inst._zod.innerType; - return inner._zod.run(payload, ctx); - }; -}); -var $ZodCustom2 = /* @__PURE__ */ $constructor2("$ZodCustom", (inst, def) => { - $ZodCheck2.init(inst, def); - $ZodType2.init(inst, def); - inst._zod.parse = (payload, _) => { - return payload; - }; - inst._zod.check = (payload) => { - const input = payload.value; - const r = def.fn(input); - if (r instanceof Promise) { - return r.then((r2) => handleRefineResult2(r2, payload, input, inst)); - } - handleRefineResult2(r, payload, input, inst); - return; - }; -}); -function handleRefineResult2(result, payload, input, inst) { - if (!result) { - const _iss = { - code: "custom", - input, - inst, - // incorporates params.error into issue reporting - path: [...inst._zod.def.path ?? []], - // incorporates params.error into issue reporting - continue: !inst._zod.def.abort - // params: inst._zod.def.params, - }; - if (inst._zod.def.params) - _iss.params = inst._zod.def.params; - payload.issues.push(issue2(_iss)); - } -} - -// ../../node_modules/zod/v4/locales/index.js -var locales_exports2 = {}; -__export(locales_exports2, { - ar: () => ar_default2, - az: () => az_default2, - be: () => be_default2, - bg: () => bg_default2, - ca: () => ca_default2, - cs: () => cs_default2, - da: () => da_default2, - de: () => de_default2, - en: () => en_default2, - eo: () => eo_default2, - es: () => es_default2, - fa: () => fa_default2, - fi: () => fi_default2, - fr: () => fr_default2, - frCA: () => fr_CA_default2, - he: () => he_default2, - hu: () => hu_default2, - hy: () => hy_default2, - id: () => id_default2, - is: () => is_default2, - it: () => it_default2, - ja: () => ja_default2, - ka: () => ka_default2, - kh: () => kh_default2, - km: () => km_default2, - ko: () => ko_default2, - lt: () => lt_default2, - mk: () => mk_default2, - ms: () => ms_default2, - nl: () => nl_default2, - no: () => no_default2, - ota: () => ota_default2, - pl: () => pl_default2, - ps: () => ps_default2, - pt: () => pt_default2, - ru: () => ru_default2, - sl: () => sl_default2, - sv: () => sv_default2, - ta: () => ta_default2, - th: () => th_default2, - tr: () => tr_default2, - ua: () => ua_default2, - uk: () => uk_default2, - ur: () => ur_default2, - uz: () => uz_default2, - vi: () => vi_default2, - yo: () => yo_default2, - zhCN: () => zh_CN_default2, - zhTW: () => zh_TW_default2 -}); - -// ../../node_modules/zod/v4/locales/ar.js -var error48 = () => { - const Sizable = { - string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - file: { unit: "\u0628\u0627\u064A\u062A", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - array: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, - set: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0645\u062F\u062E\u0644", - email: "\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A", - url: "\u0631\u0627\u0628\u0637", - emoji: "\u0625\u064A\u0645\u0648\u062C\u064A", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - date: "\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - time: "\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - duration: "\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO", - ipv4: "\u0639\u0646\u0648\u0627\u0646 IPv4", - ipv6: "\u0639\u0646\u0648\u0627\u0646 IPv6", - cidrv4: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4", - cidrv6: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6", - base64: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded", - base64url: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded", - json_string: "\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON", - e164: "\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164", - jwt: "JWT", - template_literal: "\u0645\u062F\u062E\u0644" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue3.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; - } - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${stringifyPrimitive2(issue3.values[0])}`; - return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue3.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"}`; - return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue3.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue3.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue3.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${issue3.prefix}"`; - if (_issue.format === "ends_with") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`; - } - case "not_multiple_of": - return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue3.divisor}`; - case "unrecognized_keys": - return `\u0645\u0639\u0631\u0641${issue3.keys.length > 1 ? "\u0627\u062A" : ""} \u063A\u0631\u064A\u0628${issue3.keys.length > 1 ? "\u0629" : ""}: ${joinValues2(issue3.keys, "\u060C ")}`; - case "invalid_key": - return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue3.origin}`; - case "invalid_union": - return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; - case "invalid_element": - return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue3.origin}`; - default: - return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; - } - }; -}; -function ar_default2() { - return { - localeError: error48() - }; -} - -// ../../node_modules/zod/v4/locales/az.js -var error49 = () => { - const Sizable = { - string: { unit: "simvol", verb: "olmal\u0131d\u0131r" }, - file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, - array: { unit: "element", verb: "olmal\u0131d\u0131r" }, - set: { unit: "element", verb: "olmal\u0131d\u0131r" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "email address", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datetime", - date: "ISO date", - time: "ISO time", - duration: "ISO duration", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded string", - base64url: "base64url-encoded string", - json_string: "JSON string", - e164: "E.164 number", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${issue3.expected}, daxil olan ${received}`; - } - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${stringifyPrimitive2(issue3.values[0])}`; - return `Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue3.origin ?? "d\u0259y\u0259r"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element"}`; - return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue3.origin ?? "d\u0259y\u0259r"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`; - if (_issue.format === "ends_with") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.suffix}" il\u0259 bitm\u0259lidir`; - if (_issue.format === "includes") - return `Yanl\u0131\u015F m\u0259tn: "${_issue.includes}" daxil olmal\u0131d\u0131r`; - if (_issue.format === "regex") - return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`; - return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Yanl\u0131\u015F \u0259d\u0259d: ${issue3.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`; - case "unrecognized_keys": - return `Tan\u0131nmayan a\xE7ar${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`; - case "invalid_union": - return "Yanl\u0131\u015F d\u0259y\u0259r"; - case "invalid_element": - return `${issue3.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`; - default: - return `Yanl\u0131\u015F d\u0259y\u0259r`; - } - }; -}; -function az_default2() { - return { - localeError: error49() - }; -} - -// ../../node_modules/zod/v4/locales/be.js -function getBelarusianPlural2(count, one, few, many) { - const absCount = Math.abs(count); - const lastDigit = absCount % 10; - const lastTwoDigits = absCount % 100; - if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { - return many; - } - if (lastDigit === 1) { - return one; - } - if (lastDigit >= 2 && lastDigit <= 4) { - return few; - } - return many; -} -var error50 = () => { - const Sizable = { - string: { - unit: { - one: "\u0441\u0456\u043C\u0432\u0430\u043B", - few: "\u0441\u0456\u043C\u0432\u0430\u043B\u044B", - many: "\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - array: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - set: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - }, - file: { - unit: { - one: "\u0431\u0430\u0439\u0442", - few: "\u0431\u0430\u0439\u0442\u044B", - many: "\u0431\u0430\u0439\u0442\u0430\u045E" - }, - verb: "\u043C\u0435\u0446\u044C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0443\u0432\u043E\u0434", - email: "email \u0430\u0434\u0440\u0430\u0441", - url: "URL", - emoji: "\u044D\u043C\u043E\u0434\u0437\u0456", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0447\u0430\u0441", - duration: "ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C", - ipv4: "IPv4 \u0430\u0434\u0440\u0430\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0430\u0441", - cidrv4: "IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", - base64: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64", - base64url: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url", - json_string: "JSON \u0440\u0430\u0434\u043E\u043A", - e164: "\u043D\u0443\u043C\u0430\u0440 E.164", - jwt: "JWT", - template_literal: "\u0443\u0432\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u043B\u0456\u043A", - array: "\u043C\u0430\u0441\u0456\u045E" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue3.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; - } - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${stringifyPrimitive2(issue3.values[0])}`; - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getBelarusianPlural2(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getBelarusianPlural2(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue3.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue3.keys.length > 1 ? "\u043A\u043B\u044E\u0447\u044B" : "\u043A\u043B\u044E\u0447"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"; - case "invalid_element": - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue3.origin}`; - default: - return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`; - } - }; -}; -function be_default2() { - return { - localeError: error50() - }; -} - -// ../../node_modules/zod/v4/locales/bg.js -var error51 = () => { - const Sizable = { - string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - file: { unit: "\u0431\u0430\u0439\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, - set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0445\u043E\u0434", - email: "\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441", - url: "URL", - emoji: "\u0435\u043C\u043E\u0434\u0436\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0432\u0440\u0435\u043C\u0435", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0432\u0440\u0435\u043C\u0435", - duration: "ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", - cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - base64: "base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", - base64url: "base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", - json_string: "JSON \u043D\u0438\u0437", - e164: "E.164 \u043D\u043E\u043C\u0435\u0440", - jwt: "JWT", - template_literal: "\u0432\u0445\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue3.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; - } - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${stringifyPrimitive2(issue3.values[0])}`; - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`; - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue3.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`; - let invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D"; - if (_issue.format === "emoji") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "datetime") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "date") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; - if (_issue.format === "time") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; - if (_issue.format === "duration") - invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; - return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue3.keys.length > 1 ? "\u0438" : ""} \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u043E\u0432\u0435" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"; - case "invalid_element": - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue3.origin}`; - default: - return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`; - } - }; -}; -function bg_default2() { - return { - localeError: error51() - }; -} - -// ../../node_modules/zod/v4/locales/ca.js -var error52 = () => { - const Sizable = { - string: { unit: "car\xE0cters", verb: "contenir" }, - file: { unit: "bytes", verb: "contenir" }, - array: { unit: "elements", verb: "contenir" }, - set: { unit: "elements", verb: "contenir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entrada", - email: "adre\xE7a electr\xF2nica", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data i hora ISO", - date: "data ISO", - time: "hora ISO", - duration: "durada ISO", - ipv4: "adre\xE7a IPv4", - ipv6: "adre\xE7a IPv6", - cidrv4: "rang IPv4", - cidrv6: "rang IPv6", - base64: "cadena codificada en base64", - base64url: "cadena codificada en base64url", - json_string: "cadena JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Tipus inv\xE0lid: s'esperava instanceof ${issue3.expected}, s'ha rebut ${received}`; - } - return `Tipus inv\xE0lid: s'esperava ${expected}, s'ha rebut ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Valor inv\xE0lid: s'esperava ${stringifyPrimitive2(issue3.values[0])}`; - return `Opci\xF3 inv\xE0lida: s'esperava una de ${joinValues2(issue3.values, " o ")}`; - case "too_big": { - const adj = issue3.inclusive ? "com a m\xE0xim" : "menys de"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Massa gran: s'esperava que ${issue3.origin ?? "el valor"} contingu\xE9s ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "elements"}`; - return `Massa gran: s'esperava que ${issue3.origin ?? "el valor"} fos ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "com a m\xEDnim" : "m\xE9s de"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Massa petit: s'esperava que ${issue3.origin} contingu\xE9s ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Massa petit: s'esperava que ${issue3.origin} fos ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Format inv\xE0lid: ha de comen\xE7ar amb "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Format inv\xE0lid: ha d'acabar amb "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Format inv\xE0lid: ha d'incloure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${_issue.pattern}`; - return `Format inv\xE0lid per a ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Clau${issue3.keys.length > 1 ? "s" : ""} no reconeguda${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Clau inv\xE0lida a ${issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE0lida"; - // Could also be "Tipus d'unió invàlid" but "Entrada invàlida" is more general - case "invalid_element": - return `Element inv\xE0lid a ${issue3.origin}`; - default: - return `Entrada inv\xE0lida`; - } - }; -}; -function ca_default2() { - return { - localeError: error52() - }; -} - -// ../../node_modules/zod/v4/locales/cs.js -var error53 = () => { - const Sizable = { - string: { unit: "znak\u016F", verb: "m\xEDt" }, - file: { unit: "bajt\u016F", verb: "m\xEDt" }, - array: { unit: "prvk\u016F", verb: "m\xEDt" }, - set: { unit: "prvk\u016F", verb: "m\xEDt" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "regul\xE1rn\xED v\xFDraz", - email: "e-mailov\xE1 adresa", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "datum a \u010Das ve form\xE1tu ISO", - date: "datum ve form\xE1tu ISO", - time: "\u010Das ve form\xE1tu ISO", - duration: "doba trv\xE1n\xED ISO", - ipv4: "IPv4 adresa", - ipv6: "IPv6 adresa", - cidrv4: "rozsah IPv4", - cidrv6: "rozsah IPv6", - base64: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64", - base64url: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url", - json_string: "\u0159et\u011Bzec ve form\xE1tu JSON", - e164: "\u010D\xEDslo E.164", - jwt: "JWT", - template_literal: "vstup" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u010D\xEDslo", - string: "\u0159et\u011Bzec", - function: "funkce", - array: "pole" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${issue3.expected}, obdr\u017Eeno ${received}`; - } - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${expected}, obdr\u017Eeno ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${stringifyPrimitive2(issue3.values[0])}`; - return `Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue3.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "prvk\u016F"}`; - } - return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue3.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue3.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue3.minimum.toString()} ${sizing.unit ?? "prvk\u016F"}`; - } - return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue3.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${_issue.includes}"`; - if (_issue.format === "regex") - return `Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${_issue.pattern}`; - return `Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${issue3.divisor}`; - case "unrecognized_keys": - return `Nezn\xE1m\xE9 kl\xED\u010De: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Neplatn\xFD kl\xED\u010D v ${issue3.origin}`; - case "invalid_union": - return "Neplatn\xFD vstup"; - case "invalid_element": - return `Neplatn\xE1 hodnota v ${issue3.origin}`; - default: - return `Neplatn\xFD vstup`; - } - }; -}; -function cs_default2() { - return { - localeError: error53() - }; -} - -// ../../node_modules/zod/v4/locales/da.js -var error54 = () => { - const Sizable = { - string: { unit: "tegn", verb: "havde" }, - file: { unit: "bytes", verb: "havde" }, - array: { unit: "elementer", verb: "indeholdt" }, - set: { unit: "elementer", verb: "indeholdt" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "e-mailadresse", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dato- og klokkesl\xE6t", - date: "ISO-dato", - time: "ISO-klokkesl\xE6t", - duration: "ISO-varighed", - ipv4: "IPv4-omr\xE5de", - ipv6: "IPv6-omr\xE5de", - cidrv4: "IPv4-spektrum", - cidrv6: "IPv6-spektrum", - base64: "base64-kodet streng", - base64url: "base64url-kodet streng", - json_string: "JSON-streng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - string: "streng", - number: "tal", - boolean: "boolean", - array: "liste", - object: "objekt", - set: "s\xE6t", - file: "fil" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ugyldigt input: forventede instanceof ${issue3.expected}, fik ${received}`; - } - return `Ugyldigt input: forventede ${expected}, fik ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ugyldig v\xE6rdi: forventede ${stringifyPrimitive2(issue3.values[0])}`; - return `Ugyldigt valg: forventede en af f\xF8lgende ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) - return `For stor: forventede ${origin ?? "value"} ${sizing.verb} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "elementer"}`; - return `For stor: forventede ${origin ?? "value"} havde ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) { - return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `For lille: forventede ${origin} havde ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ugyldig streng: skal starte med "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Ugyldig streng: skal ende med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ugyldig streng: skal indeholde "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ugyldig streng: skal matche m\xF8nsteret ${_issue.pattern}`; - return `Ugyldig ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ugyldigt tal: skal v\xE6re deleligt med ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ukendte n\xF8gler" : "Ukendt n\xF8gle"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Ugyldig n\xF8gle i ${issue3.origin}`; - case "invalid_union": - return "Ugyldigt input: matcher ingen af de tilladte typer"; - case "invalid_element": - return `Ugyldig v\xE6rdi i ${issue3.origin}`; - default: - return `Ugyldigt input`; - } - }; -}; -function da_default2() { - return { - localeError: error54() - }; -} - -// ../../node_modules/zod/v4/locales/de.js -var error55 = () => { - const Sizable = { - string: { unit: "Zeichen", verb: "zu haben" }, - file: { unit: "Bytes", verb: "zu haben" }, - array: { unit: "Elemente", verb: "zu haben" }, - set: { unit: "Elemente", verb: "zu haben" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "Eingabe", - email: "E-Mail-Adresse", - url: "URL", - emoji: "Emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-Datum und -Uhrzeit", - date: "ISO-Datum", - time: "ISO-Uhrzeit", - duration: "ISO-Dauer", - ipv4: "IPv4-Adresse", - ipv6: "IPv6-Adresse", - cidrv4: "IPv4-Bereich", - cidrv6: "IPv6-Bereich", - base64: "Base64-codierter String", - base64url: "Base64-URL-codierter String", - json_string: "JSON-String", - e164: "E.164-Nummer", - jwt: "JWT", - template_literal: "Eingabe" - }; - const TypeDictionary = { - nan: "NaN", - number: "Zahl", - array: "Array" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ung\xFCltige Eingabe: erwartet instanceof ${issue3.expected}, erhalten ${received}`; - } - return `Ung\xFCltige Eingabe: erwartet ${expected}, erhalten ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ung\xFCltige Eingabe: erwartet ${stringifyPrimitive2(issue3.values[0])}`; - return `Ung\xFCltige Option: erwartet eine von ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Zu gro\xDF: erwartet, dass ${issue3.origin ?? "Wert"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "Elemente"} hat`; - return `Zu gro\xDF: erwartet, dass ${issue3.origin ?? "Wert"} ${adj}${issue3.maximum.toString()} ist`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Zu klein: erwartet, dass ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} hat`; - } - return `Zu klein: erwartet, dass ${issue3.origin} ${adj}${issue3.minimum.toString()} ist`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ung\xFCltiger String: muss mit "${_issue.prefix}" beginnen`; - if (_issue.format === "ends_with") - return `Ung\xFCltiger String: muss mit "${_issue.suffix}" enden`; - if (_issue.format === "includes") - return `Ung\xFCltiger String: muss "${_issue.includes}" enthalten`; - if (_issue.format === "regex") - return `Ung\xFCltiger String: muss dem Muster ${_issue.pattern} entsprechen`; - return `Ung\xFCltig: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ung\xFCltige Zahl: muss ein Vielfaches von ${issue3.divisor} sein`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Unbekannte Schl\xFCssel" : "Unbekannter Schl\xFCssel"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Ung\xFCltiger Schl\xFCssel in ${issue3.origin}`; - case "invalid_union": - return "Ung\xFCltige Eingabe"; - case "invalid_element": - return `Ung\xFCltiger Wert in ${issue3.origin}`; - default: - return `Ung\xFCltige Eingabe`; - } - }; -}; -function de_default2() { - return { - localeError: error55() - }; -} - -// ../../node_modules/zod/v4/locales/en.js -var error56 = () => { - const Sizable = { - string: { unit: "characters", verb: "to have" }, - file: { unit: "bytes", verb: "to have" }, - array: { unit: "items", verb: "to have" }, - set: { unit: "items", verb: "to have" }, - map: { unit: "entries", verb: "to have" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "email address", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datetime", - date: "ISO date", - time: "ISO time", - duration: "ISO duration", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - mac: "MAC address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded string", - base64url: "base64url-encoded string", - json_string: "JSON string", - e164: "E.164 number", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - // Compatibility: "nan" -> "NaN" for display - nan: "NaN" - // All other type names omitted - they fall back to raw values via ?? operator - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - return `Invalid input: expected ${expected}, received ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Invalid input: expected ${stringifyPrimitive2(issue3.values[0])}`; - return `Invalid option: expected one of ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Too big: expected ${issue3.origin ?? "value"} to have ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elements"}`; - return `Too big: expected ${issue3.origin ?? "value"} to be ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Too small: expected ${issue3.origin} to have ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Too small: expected ${issue3.origin} to be ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Invalid string: must start with "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Invalid string: must end with "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Invalid string: must include "${_issue.includes}"`; - if (_issue.format === "regex") - return `Invalid string: must match pattern ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Invalid number: must be a multiple of ${issue3.divisor}`; - case "unrecognized_keys": - return `Unrecognized key${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Invalid key in ${issue3.origin}`; - case "invalid_union": - return "Invalid input"; - case "invalid_element": - return `Invalid value in ${issue3.origin}`; - default: - return `Invalid input`; - } - }; -}; -function en_default2() { - return { - localeError: error56() - }; -} - -// ../../node_modules/zod/v4/locales/eo.js -var error57 = () => { - const Sizable = { - string: { unit: "karaktrojn", verb: "havi" }, - file: { unit: "bajtojn", verb: "havi" }, - array: { unit: "elementojn", verb: "havi" }, - set: { unit: "elementojn", verb: "havi" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "enigo", - email: "retadreso", - url: "URL", - emoji: "emo\u011Dio", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-datotempo", - date: "ISO-dato", - time: "ISO-tempo", - duration: "ISO-da\u016Dro", - ipv4: "IPv4-adreso", - ipv6: "IPv6-adreso", - cidrv4: "IPv4-rango", - cidrv6: "IPv6-rango", - base64: "64-ume kodita karaktraro", - base64url: "URL-64-ume kodita karaktraro", - json_string: "JSON-karaktraro", - e164: "E.164-nombro", - jwt: "JWT", - template_literal: "enigo" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombro", - array: "tabelo", - null: "senvalora" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Nevalida enigo: atendi\u011Dis instanceof ${issue3.expected}, ricevi\u011Dis ${received}`; - } - return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Nevalida enigo: atendi\u011Dis ${stringifyPrimitive2(issue3.values[0])}`; - return `Nevalida opcio: atendi\u011Dis unu el ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Tro granda: atendi\u011Dis ke ${issue3.origin ?? "valoro"} havu ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementojn"}`; - return `Tro granda: atendi\u011Dis ke ${issue3.origin ?? "valoro"} havu ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Tro malgranda: atendi\u011Dis ke ${issue3.origin} havu ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Tro malgranda: atendi\u011Dis ke ${issue3.origin} estu ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Nevalida karaktraro: devas komenci\u011Di per "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Nevalida karaktraro: devas fini\u011Di per "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`; - if (_issue.format === "regex") - return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`; - return `Nevalida ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Nevalida nombro: devas esti oblo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Nekonata${issue3.keys.length > 1 ? "j" : ""} \u015Dlosilo${issue3.keys.length > 1 ? "j" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Nevalida \u015Dlosilo en ${issue3.origin}`; - case "invalid_union": - return "Nevalida enigo"; - case "invalid_element": - return `Nevalida valoro en ${issue3.origin}`; - default: - return `Nevalida enigo`; - } - }; -}; -function eo_default2() { - return { - localeError: error57() - }; -} - -// ../../node_modules/zod/v4/locales/es.js -var error58 = () => { - const Sizable = { - string: { unit: "caracteres", verb: "tener" }, - file: { unit: "bytes", verb: "tener" }, - array: { unit: "elementos", verb: "tener" }, - set: { unit: "elementos", verb: "tener" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entrada", - email: "direcci\xF3n de correo electr\xF3nico", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "fecha y hora ISO", - date: "fecha ISO", - time: "hora ISO", - duration: "duraci\xF3n ISO", - ipv4: "direcci\xF3n IPv4", - ipv6: "direcci\xF3n IPv6", - cidrv4: "rango IPv4", - cidrv6: "rango IPv6", - base64: "cadena codificada en base64", - base64url: "URL codificada en base64", - json_string: "cadena JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN", - string: "texto", - number: "n\xFAmero", - boolean: "booleano", - array: "arreglo", - object: "objeto", - set: "conjunto", - file: "archivo", - date: "fecha", - bigint: "n\xFAmero grande", - symbol: "s\xEDmbolo", - undefined: "indefinido", - null: "nulo", - function: "funci\xF3n", - map: "mapa", - record: "registro", - tuple: "tupla", - enum: "enumeraci\xF3n", - union: "uni\xF3n", - literal: "literal", - promise: "promesa", - void: "vac\xEDo", - never: "nunca", - unknown: "desconocido", - any: "cualquiera" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entrada inv\xE1lida: se esperaba instanceof ${issue3.expected}, recibido ${received}`; - } - return `Entrada inv\xE1lida: se esperaba ${expected}, recibido ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entrada inv\xE1lida: se esperaba ${stringifyPrimitive2(issue3.values[0])}`; - return `Opci\xF3n inv\xE1lida: se esperaba una de ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) - return `Demasiado grande: se esperaba que ${origin ?? "valor"} tuviera ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementos"}`; - return `Demasiado grande: se esperaba que ${origin ?? "valor"} fuera ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - if (sizing) { - return `Demasiado peque\xF1o: se esperaba que ${origin} tuviera ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Demasiado peque\xF1o: se esperaba que ${origin} fuera ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Cadena inv\xE1lida: debe comenzar con "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Cadena inv\xE1lida: debe terminar en "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cadena inv\xE1lida: debe incluir "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${_issue.pattern}`; - return `Inv\xE1lido ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Llave${issue3.keys.length > 1 ? "s" : ""} desconocida${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Llave inv\xE1lida en ${TypeDictionary[issue3.origin] ?? issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE1lida"; - case "invalid_element": - return `Valor inv\xE1lido en ${TypeDictionary[issue3.origin] ?? issue3.origin}`; - default: - return `Entrada inv\xE1lida`; - } - }; -}; -function es_default2() { - return { - localeError: error58() - }; -} - -// ../../node_modules/zod/v4/locales/fa.js -var error59 = () => { - const Sizable = { - string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - file: { unit: "\u0628\u0627\u06CC\u062A", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - array: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, - set: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0648\u0631\u0648\u062F\u06CC", - email: "\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644", - url: "URL", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - date: "\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648", - time: "\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - duration: "\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", - ipv4: "IPv4 \u0622\u062F\u0631\u0633", - ipv6: "IPv6 \u0622\u062F\u0631\u0633", - cidrv4: "IPv4 \u062F\u0627\u0645\u0646\u0647", - cidrv6: "IPv6 \u062F\u0627\u0645\u0646\u0647", - base64: "base64-encoded \u0631\u0634\u062A\u0647", - base64url: "base64url-encoded \u0631\u0634\u062A\u0647", - json_string: "JSON \u0631\u0634\u062A\u0647", - e164: "E.164 \u0639\u062F\u062F", - jwt: "JWT", - template_literal: "\u0648\u0631\u0648\u062F\u06CC" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0639\u062F\u062F", - array: "\u0622\u0631\u0627\u06CC\u0647" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue3.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; - } - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; - } - case "invalid_value": - if (issue3.values.length === 1) { - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${stringifyPrimitive2(issue3.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`; - } - return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${joinValues2(issue3.values, "|")} \u0645\u06CC\u200C\u0628\u0648\u062F`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue3.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`; - } - return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue3.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} \u0628\u0627\u0634\u062F`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`; - } - return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} \u0628\u0627\u0634\u062F`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`; - } - if (_issue.format === "ends_with") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`; - } - if (_issue.format === "includes") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${_issue.includes}" \u0628\u0627\u0634\u062F`; - } - if (_issue.format === "regex") { - return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`; - } - return `${FormatDictionary[_issue.format] ?? issue3.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - } - case "not_multiple_of": - return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue3.divisor} \u0628\u0627\u0634\u062F`; - case "unrecognized_keys": - return `\u06A9\u0644\u06CC\u062F${issue3.keys.length > 1 ? "\u0647\u0627\u06CC" : ""} \u0646\u0627\u0634\u0646\u0627\u0633: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue3.origin}`; - case "invalid_union": - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - case "invalid_element": - return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue3.origin}`; - default: - return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; - } - }; -}; -function fa_default2() { - return { - localeError: error59() - }; -} - -// ../../node_modules/zod/v4/locales/fi.js -var error60 = () => { - const Sizable = { - string: { unit: "merkki\xE4", subject: "merkkijonon" }, - file: { unit: "tavua", subject: "tiedoston" }, - array: { unit: "alkiota", subject: "listan" }, - set: { unit: "alkiota", subject: "joukon" }, - number: { unit: "", subject: "luvun" }, - bigint: { unit: "", subject: "suuren kokonaisluvun" }, - int: { unit: "", subject: "kokonaisluvun" }, - date: { unit: "", subject: "p\xE4iv\xE4m\xE4\xE4r\xE4n" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "s\xE4\xE4nn\xF6llinen lauseke", - email: "s\xE4hk\xF6postiosoite", - url: "URL-osoite", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-aikaleima", - date: "ISO-p\xE4iv\xE4m\xE4\xE4r\xE4", - time: "ISO-aika", - duration: "ISO-kesto", - ipv4: "IPv4-osoite", - ipv6: "IPv6-osoite", - cidrv4: "IPv4-alue", - cidrv6: "IPv6-alue", - base64: "base64-koodattu merkkijono", - base64url: "base64url-koodattu merkkijono", - json_string: "JSON-merkkijono", - e164: "E.164-luku", - jwt: "JWT", - template_literal: "templaattimerkkijono" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Virheellinen tyyppi: odotettiin instanceof ${issue3.expected}, oli ${received}`; - } - return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Virheellinen sy\xF6te: t\xE4ytyy olla ${stringifyPrimitive2(issue3.values[0])}`; - return `Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Liian suuri: ${sizing.subject} t\xE4ytyy olla ${adj}${issue3.maximum.toString()} ${sizing.unit}`.trim(); - } - return `Liian suuri: arvon t\xE4ytyy olla ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Liian pieni: ${sizing.subject} t\xE4ytyy olla ${adj}${issue3.minimum.toString()} ${sizing.unit}`.trim(); - } - return `Liian pieni: arvon t\xE4ytyy olla ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Virheellinen sy\xF6te: t\xE4ytyy alkaa "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Virheellinen sy\xF6te: t\xE4ytyy loppua "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${_issue.includes}"`; - if (_issue.format === "regex") { - return `Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${_issue.pattern}`; - } - return `Virheellinen ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Virheellinen luku: t\xE4ytyy olla luvun ${issue3.divisor} monikerta`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Tuntemattomat avaimet" : "Tuntematon avain"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return "Virheellinen avain tietueessa"; - case "invalid_union": - return "Virheellinen unioni"; - case "invalid_element": - return "Virheellinen arvo joukossa"; - default: - return `Virheellinen sy\xF6te`; - } - }; -}; -function fi_default2() { - return { - localeError: error60() - }; -} - -// ../../node_modules/zod/v4/locales/fr.js -var error61 = () => { - const Sizable = { - string: { unit: "caract\xE8res", verb: "avoir" }, - file: { unit: "octets", verb: "avoir" }, - array: { unit: "\xE9l\xE9ments", verb: "avoir" }, - set: { unit: "\xE9l\xE9ments", verb: "avoir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entr\xE9e", - email: "adresse e-mail", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "date et heure ISO", - date: "date ISO", - time: "heure ISO", - duration: "dur\xE9e ISO", - ipv4: "adresse IPv4", - ipv6: "adresse IPv6", - cidrv4: "plage IPv4", - cidrv6: "plage IPv6", - base64: "cha\xEEne encod\xE9e en base64", - base64url: "cha\xEEne encod\xE9e en base64url", - json_string: "cha\xEEne JSON", - e164: "num\xE9ro E.164", - jwt: "JWT", - template_literal: "entr\xE9e" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombre", - array: "tableau" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entr\xE9e invalide : instanceof ${issue3.expected} attendu, ${received} re\xE7u`; - } - return `Entr\xE9e invalide : ${expected} attendu, ${received} re\xE7u`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entr\xE9e invalide : ${stringifyPrimitive2(issue3.values[0])} attendu`; - return `Option invalide : une valeur parmi ${joinValues2(issue3.values, "|")} attendue`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Trop grand : ${issue3.origin ?? "valeur"} doit ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\xE9l\xE9ment(s)"}`; - return `Trop grand : ${issue3.origin ?? "valeur"} doit \xEAtre ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Trop petit : ${issue3.origin} doit ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Trop petit : ${issue3.origin} doit \xEAtre ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cha\xEEne invalide : doit correspondre au mod\xE8le ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} invalide`; - } - case "not_multiple_of": - return `Nombre invalide : doit \xEAtre un multiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Cl\xE9${issue3.keys.length > 1 ? "s" : ""} non reconnue${issue3.keys.length > 1 ? "s" : ""} : ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Cl\xE9 invalide dans ${issue3.origin}`; - case "invalid_union": - return "Entr\xE9e invalide"; - case "invalid_element": - return `Valeur invalide dans ${issue3.origin}`; - default: - return `Entr\xE9e invalide`; - } - }; -}; -function fr_default2() { - return { - localeError: error61() - }; -} - -// ../../node_modules/zod/v4/locales/fr-CA.js -var error62 = () => { - const Sizable = { - string: { unit: "caract\xE8res", verb: "avoir" }, - file: { unit: "octets", verb: "avoir" }, - array: { unit: "\xE9l\xE9ments", verb: "avoir" }, - set: { unit: "\xE9l\xE9ments", verb: "avoir" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "entr\xE9e", - email: "adresse courriel", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "date-heure ISO", - date: "date ISO", - time: "heure ISO", - duration: "dur\xE9e ISO", - ipv4: "adresse IPv4", - ipv6: "adresse IPv6", - cidrv4: "plage IPv4", - cidrv6: "plage IPv6", - base64: "cha\xEEne encod\xE9e en base64", - base64url: "cha\xEEne encod\xE9e en base64url", - json_string: "cha\xEEne JSON", - e164: "num\xE9ro E.164", - jwt: "JWT", - template_literal: "entr\xE9e" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Entr\xE9e invalide : attendu instanceof ${issue3.expected}, re\xE7u ${received}`; - } - return `Entr\xE9e invalide : attendu ${expected}, re\xE7u ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entr\xE9e invalide : attendu ${stringifyPrimitive2(issue3.values[0])}`; - return `Option invalide : attendu l'une des valeurs suivantes ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "\u2264" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Trop grand : attendu que ${issue3.origin ?? "la valeur"} ait ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - return `Trop grand : attendu que ${issue3.origin ?? "la valeur"} soit ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u2265" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Trop petit : attendu que ${issue3.origin} ait ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Trop petit : attendu que ${issue3.origin} soit ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; - if (_issue.format === "regex") - return `Cha\xEEne invalide : doit correspondre au motif ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} invalide`; - } - case "not_multiple_of": - return `Nombre invalide : doit \xEAtre un multiple de ${issue3.divisor}`; - case "unrecognized_keys": - return `Cl\xE9${issue3.keys.length > 1 ? "s" : ""} non reconnue${issue3.keys.length > 1 ? "s" : ""} : ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Cl\xE9 invalide dans ${issue3.origin}`; - case "invalid_union": - return "Entr\xE9e invalide"; - case "invalid_element": - return `Valeur invalide dans ${issue3.origin}`; - default: - return `Entr\xE9e invalide`; - } - }; -}; -function fr_CA_default2() { - return { - localeError: error62() - }; -} - -// ../../node_modules/zod/v4/locales/he.js -var error63 = () => { - const TypeNames = { - string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" }, - number: { label: "\u05DE\u05E1\u05E4\u05E8", gender: "m" }, - boolean: { label: "\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9", gender: "m" }, - bigint: { label: "BigInt", gender: "m" }, - date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA", gender: "m" }, - array: { label: "\u05DE\u05E2\u05E8\u05DA", gender: "m" }, - object: { label: "\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8", gender: "m" }, - null: { label: "\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)", gender: "m" }, - undefined: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)", gender: "m" }, - symbol: { label: "\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)", gender: "m" }, - function: { label: "\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4", gender: "f" }, - map: { label: "\u05DE\u05E4\u05D4 (Map)", gender: "f" }, - set: { label: "\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)", gender: "f" }, - file: { label: "\u05E7\u05D5\u05D1\u05E5", gender: "m" }, - promise: { label: "Promise", gender: "m" }, - NaN: { label: "NaN", gender: "m" }, - unknown: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2", gender: "m" }, - value: { label: "\u05E2\u05E8\u05DA", gender: "m" } - }; - const Sizable = { - string: { unit: "\u05EA\u05D5\u05D5\u05D9\u05DD", shortLabel: "\u05E7\u05E6\u05E8", longLabel: "\u05D0\u05E8\u05D5\u05DA" }, - file: { unit: "\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - array: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - set: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, - number: { unit: "", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" } - // no unit - }; - const typeEntry = (t) => t ? TypeNames[t] : void 0; - const typeLabel = (t) => { - const e = typeEntry(t); - if (e) - return e.label; - return t ?? TypeNames.unknown.label; - }; - const withDefinite = (t) => `\u05D4${typeLabel(t)}`; - const verbFor = (t) => { - const e = typeEntry(t); - const gender = e?.gender ?? "m"; - return gender === "f" ? "\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA" : "\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"; - }; - const getSizing = (origin) => { - if (!origin) - return null; - return Sizable[origin] ?? null; - }; - const FormatDictionary = { - regex: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - email: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC", gender: "f" }, - url: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA", gender: "f" }, - emoji: { label: "\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9", gender: "m" }, - uuid: { label: "UUID", gender: "m" }, - nanoid: { label: "nanoid", gender: "m" }, - guid: { label: "GUID", gender: "m" }, - cuid: { label: "cuid", gender: "m" }, - cuid2: { label: "cuid2", gender: "m" }, - ulid: { label: "ULID", gender: "m" }, - xid: { label: "XID", gender: "m" }, - ksuid: { label: "KSUID", gender: "m" }, - datetime: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO", gender: "m" }, - date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA ISO", gender: "m" }, - time: { label: "\u05D6\u05DE\u05DF ISO", gender: "m" }, - duration: { label: "\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO", gender: "m" }, - ipv4: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv4", gender: "f" }, - ipv6: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv6", gender: "f" }, - cidrv4: { label: "\u05D8\u05D5\u05D5\u05D7 IPv4", gender: "m" }, - cidrv6: { label: "\u05D8\u05D5\u05D5\u05D7 IPv6", gender: "m" }, - base64: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64", gender: "f" }, - base64url: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA", gender: "f" }, - json_string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON", gender: "f" }, - e164: { label: "\u05DE\u05E1\u05E4\u05E8 E.164", gender: "m" }, - jwt: { label: "JWT", gender: "m" }, - ends_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - includes: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - lowercase: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - starts_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, - uppercase: { label: "\u05E7\u05DC\u05D8", gender: "m" } - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expectedKey = issue3.expected; - const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel(expectedKey); - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue3.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; - } - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; - } - case "invalid_value": { - if (issue3.values.length === 1) { - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${stringifyPrimitive2(issue3.values[0])}`; - } - const stringified = issue3.values.map((v) => stringifyPrimitive2(v)); - if (issue3.values.length === 2) { - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`; - } - const lastValue = stringified[stringified.length - 1]; - const restValues = stringified.slice(0, -1).join(", "); - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`; - } - case "too_big": { - const sizing = getSizing(issue3.origin); - const subject = withDefinite(issue3.origin ?? "value"); - if (issue3.origin === "string") { - return `${sizing?.longLabel ?? "\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue3.maximum.toString()} ${sizing?.unit ?? ""} ${issue3.inclusive ? "\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA" : "\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim(); - } - if (issue3.origin === "number") { - const comparison = issue3.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue3.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue3.maximum}`; - return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; - } - if (issue3.origin === "array" || issue3.origin === "set") { - const verb = issue3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; - const comparison = issue3.inclusive ? `${issue3.maximum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA` : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue3.maximum} ${sizing?.unit ?? ""}`; - return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); - } - const adj = issue3.inclusive ? "<=" : "<"; - const be = verbFor(issue3.origin ?? "value"); - if (sizing?.unit) { - return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - } - return `${sizing?.longLabel ?? "\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const sizing = getSizing(issue3.origin); - const subject = withDefinite(issue3.origin ?? "value"); - if (issue3.origin === "string") { - return `${sizing?.shortLabel ?? "\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue3.minimum.toString()} ${sizing?.unit ?? ""} ${issue3.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim(); - } - if (issue3.origin === "number") { - const comparison = issue3.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue3.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue3.minimum}`; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; - } - if (issue3.origin === "array" || issue3.origin === "set") { - const verb = issue3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; - if (issue3.minimum === 1 && issue3.inclusive) { - const singularPhrase = issue3.origin === "set" ? "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3" : "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3"; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`; - } - const comparison = issue3.inclusive ? `${issue3.minimum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8` : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue3.minimum} ${sizing?.unit ?? ""}`; - return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); - } - const adj = issue3.inclusive ? ">=" : ">"; - const be = verbFor(issue3.origin ?? "value"); - if (sizing?.unit) { - return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `${sizing?.shortLabel ?? "\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`; - const nounEntry = FormatDictionary[_issue.format]; - const noun = nounEntry?.label ?? _issue.format; - const gender = nounEntry?.gender ?? "m"; - const adjective = gender === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF"; - return `${noun} \u05DC\u05D0 ${adjective}`; - } - case "not_multiple_of": - return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue3.divisor}`; - case "unrecognized_keys": - return `\u05DE\u05E4\u05EA\u05D7${issue3.keys.length > 1 ? "\u05D5\u05EA" : ""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue3.keys.length > 1 ? "\u05D9\u05DD" : "\u05D4"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": { - return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`; - } - case "invalid_union": - return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"; - case "invalid_element": { - const place = withDefinite(issue3.origin ?? "array"); - return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`; - } - default: - return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`; - } - }; -}; -function he_default2() { - return { - localeError: error63() - }; -} - -// ../../node_modules/zod/v4/locales/hu.js -var error64 = () => { - const Sizable = { - string: { unit: "karakter", verb: "legyen" }, - file: { unit: "byte", verb: "legyen" }, - array: { unit: "elem", verb: "legyen" }, - set: { unit: "elem", verb: "legyen" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "bemenet", - email: "email c\xEDm", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO id\u0151b\xE9lyeg", - date: "ISO d\xE1tum", - time: "ISO id\u0151", - duration: "ISO id\u0151intervallum", - ipv4: "IPv4 c\xEDm", - ipv6: "IPv6 c\xEDm", - cidrv4: "IPv4 tartom\xE1ny", - cidrv6: "IPv6 tartom\xE1ny", - base64: "base64-k\xF3dolt string", - base64url: "base64url-k\xF3dolt string", - json_string: "JSON string", - e164: "E.164 sz\xE1m", - jwt: "JWT", - template_literal: "bemenet" - }; - const TypeDictionary = { - nan: "NaN", - number: "sz\xE1m", - array: "t\xF6mb" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${issue3.expected}, a kapott \xE9rt\xE9k ${received}`; - } - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${expected}, a kapott \xE9rt\xE9k ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${stringifyPrimitive2(issue3.values[0])}`; - return `\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `T\xFAl nagy: ${issue3.origin ?? "\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elem"}`; - return `T\xFAl nagy: a bemeneti \xE9rt\xE9k ${issue3.origin ?? "\xE9rt\xE9k"} t\xFAl nagy: ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue3.origin} m\xE9rete t\xFAl kicsi ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue3.origin} t\xFAl kicsi ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\xC9rv\xE9nytelen string: "${_issue.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`; - if (_issue.format === "ends_with") - return `\xC9rv\xE9nytelen string: "${_issue.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`; - if (_issue.format === "includes") - return `\xC9rv\xE9nytelen string: "${_issue.includes}" \xE9rt\xE9ket kell tartalmaznia`; - if (_issue.format === "regex") - return `\xC9rv\xE9nytelen string: ${_issue.pattern} mint\xE1nak kell megfelelnie`; - return `\xC9rv\xE9nytelen ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\xC9rv\xE9nytelen sz\xE1m: ${issue3.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`; - case "unrecognized_keys": - return `Ismeretlen kulcs${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\xC9rv\xE9nytelen kulcs ${issue3.origin}`; - case "invalid_union": - return "\xC9rv\xE9nytelen bemenet"; - case "invalid_element": - return `\xC9rv\xE9nytelen \xE9rt\xE9k: ${issue3.origin}`; - default: - return `\xC9rv\xE9nytelen bemenet`; - } - }; -}; -function hu_default2() { - return { - localeError: error64() - }; -} - -// ../../node_modules/zod/v4/locales/hy.js -function getArmenianPlural2(count, one, many) { - return Math.abs(count) === 1 ? one : many; -} -function withDefiniteArticle2(word) { - if (!word) - return ""; - const vowels = ["\u0561", "\u0565", "\u0568", "\u056B", "\u0578", "\u0578\u0582", "\u0585"]; - const lastChar = word[word.length - 1]; - return word + (vowels.includes(lastChar) ? "\u0576" : "\u0568"); -} -var error65 = () => { - const Sizable = { - string: { - unit: { - one: "\u0576\u0577\u0561\u0576", - many: "\u0576\u0577\u0561\u0576\u0576\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - file: { - unit: { - one: "\u0562\u0561\u0575\u0569", - many: "\u0562\u0561\u0575\u0569\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - array: { - unit: { - one: "\u057F\u0561\u0580\u0580", - many: "\u057F\u0561\u0580\u0580\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - }, - set: { - unit: { - one: "\u057F\u0561\u0580\u0580", - many: "\u057F\u0561\u0580\u0580\u0565\u0580" - }, - verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0574\u0578\u0582\u057F\u0584", - email: "\u0567\u056C. \u0570\u0561\u057D\u0581\u0565", - url: "URL", - emoji: "\u0567\u0574\u0578\u057B\u056B", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574", - date: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E", - time: "ISO \u056A\u0561\u0574", - duration: "ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576", - ipv4: "IPv4 \u0570\u0561\u057D\u0581\u0565", - ipv6: "IPv6 \u0570\u0561\u057D\u0581\u0565", - cidrv4: "IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", - cidrv6: "IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", - base64: "base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", - base64url: "base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", - json_string: "JSON \u057F\u0578\u0572", - e164: "E.164 \u0570\u0561\u0574\u0561\u0580", - jwt: "JWT", - template_literal: "\u0574\u0578\u0582\u057F\u0584" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0569\u056B\u057E", - array: "\u0566\u0561\u0576\u0563\u057E\u0561\u056E" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue3.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; - } - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${stringifyPrimitive2(issue3.values[1])}`; - return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getArmenianPlural2(maxValue, sizing.unit.one, sizing.unit.many); - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle2(issue3.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle2(issue3.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getArmenianPlural2(minValue, sizing.unit.one, sizing.unit.many); - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle2(issue3.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle2(issue3.origin)} \u056C\u056B\u0576\u056B ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${_issue.prefix}"-\u0578\u057E`; - if (_issue.format === "ends_with") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${_issue.suffix}"-\u0578\u057E`; - if (_issue.format === "includes") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`; - return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue3.divisor}-\u056B`; - case "unrecognized_keys": - return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue3.keys.length > 1 ? "\u0576\u0565\u0580" : ""}. ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle2(issue3.origin)}-\u0578\u0582\u0574`; - case "invalid_union": - return "\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"; - case "invalid_element": - return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle2(issue3.origin)}-\u0578\u0582\u0574`; - default: - return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`; - } - }; -}; -function hy_default2() { - return { - localeError: error65() - }; -} - -// ../../node_modules/zod/v4/locales/id.js -var error66 = () => { - const Sizable = { - string: { unit: "karakter", verb: "memiliki" }, - file: { unit: "byte", verb: "memiliki" }, - array: { unit: "item", verb: "memiliki" }, - set: { unit: "item", verb: "memiliki" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "alamat email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "tanggal dan waktu format ISO", - date: "tanggal format ISO", - time: "jam format ISO", - duration: "durasi format ISO", - ipv4: "alamat IPv4", - ipv6: "alamat IPv6", - cidrv4: "rentang alamat IPv4", - cidrv6: "rentang alamat IPv6", - base64: "string dengan enkode base64", - base64url: "string dengan enkode base64url", - json_string: "string JSON", - e164: "angka E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input tidak valid: diharapkan instanceof ${issue3.expected}, diterima ${received}`; - } - return `Input tidak valid: diharapkan ${expected}, diterima ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input tidak valid: diharapkan ${stringifyPrimitive2(issue3.values[0])}`; - return `Pilihan tidak valid: diharapkan salah satu dari ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Terlalu besar: diharapkan ${issue3.origin ?? "value"} memiliki ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elemen"}`; - return `Terlalu besar: diharapkan ${issue3.origin ?? "value"} menjadi ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Terlalu kecil: diharapkan ${issue3.origin} memiliki ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Terlalu kecil: diharapkan ${issue3.origin} menjadi ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `String tidak valid: harus dimulai dengan "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `String tidak valid: harus berakhir dengan "${_issue.suffix}"`; - if (_issue.format === "includes") - return `String tidak valid: harus menyertakan "${_issue.includes}"`; - if (_issue.format === "regex") - return `String tidak valid: harus sesuai pola ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} tidak valid`; - } - case "not_multiple_of": - return `Angka tidak valid: harus kelipatan dari ${issue3.divisor}`; - case "unrecognized_keys": - return `Kunci tidak dikenali ${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Kunci tidak valid di ${issue3.origin}`; - case "invalid_union": - return "Input tidak valid"; - case "invalid_element": - return `Nilai tidak valid di ${issue3.origin}`; - default: - return `Input tidak valid`; - } - }; -}; -function id_default2() { - return { - localeError: error66() - }; -} - -// ../../node_modules/zod/v4/locales/is.js -var error67 = () => { - const Sizable = { - string: { unit: "stafi", verb: "a\xF0 hafa" }, - file: { unit: "b\xE6ti", verb: "a\xF0 hafa" }, - array: { unit: "hluti", verb: "a\xF0 hafa" }, - set: { unit: "hluti", verb: "a\xF0 hafa" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "gildi", - email: "netfang", - url: "vefsl\xF3\xF0", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dagsetning og t\xEDmi", - date: "ISO dagsetning", - time: "ISO t\xEDmi", - duration: "ISO t\xEDmalengd", - ipv4: "IPv4 address", - ipv6: "IPv6 address", - cidrv4: "IPv4 range", - cidrv6: "IPv6 range", - base64: "base64-encoded strengur", - base64url: "base64url-encoded strengur", - json_string: "JSON strengur", - e164: "E.164 t\xF6lugildi", - jwt: "JWT", - template_literal: "gildi" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\xFAmer", - array: "fylki" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera instanceof ${issue3.expected}`; - } - return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera ${expected}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Rangt gildi: gert r\xE1\xF0 fyrir ${stringifyPrimitive2(issue3.values[0])}`; - return `\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin ?? "gildi"} hafi ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "hluti"}`; - return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin ?? "gildi"} s\xE9 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin} hafi ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue3.origin} s\xE9 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${_issue.includes}"`; - if (_issue.format === "regex") - return `\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${_issue.pattern}`; - return `Rangt ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${issue3.divisor}`; - case "unrecognized_keys": - return `\xD3\xFEekkt ${issue3.keys.length > 1 ? "ir lyklar" : "ur lykill"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Rangur lykill \xED ${issue3.origin}`; - case "invalid_union": - return "Rangt gildi"; - case "invalid_element": - return `Rangt gildi \xED ${issue3.origin}`; - default: - return `Rangt gildi`; - } - }; -}; -function is_default2() { - return { - localeError: error67() - }; -} - -// ../../node_modules/zod/v4/locales/it.js -var error68 = () => { - const Sizable = { - string: { unit: "caratteri", verb: "avere" }, - file: { unit: "byte", verb: "avere" }, - array: { unit: "elementi", verb: "avere" }, - set: { unit: "elementi", verb: "avere" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "indirizzo email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data e ora ISO", - date: "data ISO", - time: "ora ISO", - duration: "durata ISO", - ipv4: "indirizzo IPv4", - ipv6: "indirizzo IPv6", - cidrv4: "intervallo IPv4", - cidrv6: "intervallo IPv6", - base64: "stringa codificata in base64", - base64url: "URL codificata in base64", - json_string: "stringa JSON", - e164: "numero E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "numero", - array: "vettore" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input non valido: atteso instanceof ${issue3.expected}, ricevuto ${received}`; - } - return `Input non valido: atteso ${expected}, ricevuto ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input non valido: atteso ${stringifyPrimitive2(issue3.values[0])}`; - return `Opzione non valida: atteso uno tra ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Troppo grande: ${issue3.origin ?? "valore"} deve avere ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementi"}`; - return `Troppo grande: ${issue3.origin ?? "valore"} deve essere ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Troppo piccolo: ${issue3.origin} deve avere ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Troppo piccolo: ${issue3.origin} deve essere ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Stringa non valida: deve iniziare con "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Stringa non valida: deve terminare con "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Stringa non valida: deve includere "${_issue.includes}"`; - if (_issue.format === "regex") - return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Numero non valido: deve essere un multiplo di ${issue3.divisor}`; - case "unrecognized_keys": - return `Chiav${issue3.keys.length > 1 ? "i" : "e"} non riconosciut${issue3.keys.length > 1 ? "e" : "a"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Chiave non valida in ${issue3.origin}`; - case "invalid_union": - return "Input non valido"; - case "invalid_element": - return `Valore non valido in ${issue3.origin}`; - default: - return `Input non valido`; - } - }; -}; -function it_default2() { - return { - localeError: error68() - }; -} - -// ../../node_modules/zod/v4/locales/ja.js -var error69 = () => { - const Sizable = { - string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" }, - file: { unit: "\u30D0\u30A4\u30C8", verb: "\u3067\u3042\u308B" }, - array: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" }, - set: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u5165\u529B\u5024", - email: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9", - url: "URL", - emoji: "\u7D75\u6587\u5B57", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO\u65E5\u6642", - date: "ISO\u65E5\u4ED8", - time: "ISO\u6642\u523B", - duration: "ISO\u671F\u9593", - ipv4: "IPv4\u30A2\u30C9\u30EC\u30B9", - ipv6: "IPv6\u30A2\u30C9\u30EC\u30B9", - cidrv4: "IPv4\u7BC4\u56F2", - cidrv6: "IPv6\u7BC4\u56F2", - base64: "base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", - base64url: "base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", - json_string: "JSON\u6587\u5B57\u5217", - e164: "E.164\u756A\u53F7", - jwt: "JWT", - template_literal: "\u5165\u529B\u5024" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u6570\u5024", - array: "\u914D\u5217" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue3.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; - } - return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u7121\u52B9\u306A\u5165\u529B: ${stringifyPrimitive2(issue3.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`; - return `\u7121\u52B9\u306A\u9078\u629E: ${joinValues2(issue3.values, "\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - case "too_big": { - const adj = issue3.inclusive ? "\u4EE5\u4E0B\u3067\u3042\u308B" : "\u3088\u308A\u5C0F\u3055\u3044"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue3.origin ?? "\u5024"}\u306F${issue3.maximum.toString()}${sizing.unit ?? "\u8981\u7D20"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue3.origin ?? "\u5024"}\u306F${issue3.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u4EE5\u4E0A\u3067\u3042\u308B" : "\u3088\u308A\u5927\u304D\u3044"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue3.origin}\u306F${issue3.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue3.origin}\u306F${issue3.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "ends_with") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "includes") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - if (_issue.format === "regex") - return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u7121\u52B9\u306A\u6570\u5024: ${issue3.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; - case "unrecognized_keys": - return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue3.keys.length > 1 ? "\u7FA4" : ""}: ${joinValues2(issue3.keys, "\u3001")}`; - case "invalid_key": - return `${issue3.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`; - case "invalid_union": - return "\u7121\u52B9\u306A\u5165\u529B"; - case "invalid_element": - return `${issue3.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`; - default: - return `\u7121\u52B9\u306A\u5165\u529B`; - } - }; -}; -function ja_default2() { - return { - localeError: error69() - }; -} - -// ../../node_modules/zod/v4/locales/ka.js -var error70 = () => { - const Sizable = { - string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - file: { unit: "\u10D1\u10D0\u10D8\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - array: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, - set: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0", - email: "\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - url: "URL", - emoji: "\u10D4\u10DB\u10DD\u10EF\u10D8", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD", - date: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8", - time: "\u10D3\u10E0\u10DD", - duration: "\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0", - ipv4: "IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - ipv6: "IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", - cidrv4: "IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", - cidrv6: "IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", - base64: "base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - base64url: "base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - json_string: "JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - e164: "E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8", - jwt: "JWT", - template_literal: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8", - string: "\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", - boolean: "\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8", - function: "\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0", - array: "\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue3.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; - } - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${stringifyPrimitive2(issue3.values[0])}`; - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${joinValues2(issue3.values, "|")}-\u10D3\u10D0\u10DC`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit}`; - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue3.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.prefix}"-\u10D8\u10D7`; - } - if (_issue.format === "ends_with") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.suffix}"-\u10D8\u10D7`; - if (_issue.format === "includes") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${_issue.includes}"-\u10E1`; - if (_issue.format === "regex") - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`; - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue3.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`; - case "unrecognized_keys": - return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue3.keys.length > 1 ? "\u10D4\u10D1\u10D8" : "\u10D8"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue3.origin}-\u10E8\u10D8`; - case "invalid_union": - return "\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"; - case "invalid_element": - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue3.origin}-\u10E8\u10D8`; - default: - return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`; - } - }; -}; -function ka_default2() { - return { - localeError: error70() - }; -} - -// ../../node_modules/zod/v4/locales/km.js -var error71 = () => { - const Sizable = { - string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - file: { unit: "\u1794\u17C3", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - array: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, - set: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B", - email: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B", - url: "URL", - emoji: "\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO", - date: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO", - time: "\u1798\u17C9\u17C4\u1784 ISO", - duration: "\u179A\u1799\u17C8\u1796\u17C1\u179B ISO", - ipv4: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", - ipv6: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", - cidrv4: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", - cidrv6: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", - base64: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64", - base64url: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url", - json_string: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON", - e164: "\u179B\u17C1\u1781 E.164", - jwt: "JWT", - template_literal: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u179B\u17C1\u1781", - array: "\u17A2\u17B6\u179A\u17C1 (Array)", - null: "\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue3.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; - } - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${stringifyPrimitive2(issue3.values[0])}`; - return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u1792\u17B6\u178F\u17BB"}`; - return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin} ${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue3.origin} ${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`; - return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue3.divisor}`; - case "unrecognized_keys": - return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue3.origin}`; - case "invalid_union": - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; - case "invalid_element": - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue3.origin}`; - default: - return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; - } - }; -}; -function km_default2() { - return { - localeError: error71() - }; -} - -// ../../node_modules/zod/v4/locales/kh.js -function kh_default2() { - return km_default2(); -} - -// ../../node_modules/zod/v4/locales/ko.js -var error72 = () => { - const Sizable = { - string: { unit: "\uBB38\uC790", verb: "to have" }, - file: { unit: "\uBC14\uC774\uD2B8", verb: "to have" }, - array: { unit: "\uAC1C", verb: "to have" }, - set: { unit: "\uAC1C", verb: "to have" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\uC785\uB825", - email: "\uC774\uBA54\uC77C \uC8FC\uC18C", - url: "URL", - emoji: "\uC774\uBAA8\uC9C0", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \uB0A0\uC9DC\uC2DC\uAC04", - date: "ISO \uB0A0\uC9DC", - time: "ISO \uC2DC\uAC04", - duration: "ISO \uAE30\uAC04", - ipv4: "IPv4 \uC8FC\uC18C", - ipv6: "IPv6 \uC8FC\uC18C", - cidrv4: "IPv4 \uBC94\uC704", - cidrv6: "IPv6 \uBC94\uC704", - base64: "base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", - base64url: "base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", - json_string: "JSON \uBB38\uC790\uC5F4", - e164: "E.164 \uBC88\uD638", - jwt: "JWT", - template_literal: "\uC785\uB825" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue3.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; - } - return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${stringifyPrimitive2(issue3.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`; - return `\uC798\uBABB\uB41C \uC635\uC158: ${joinValues2(issue3.values, "\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`; - case "too_big": { - const adj = issue3.inclusive ? "\uC774\uD558" : "\uBBF8\uB9CC"; - const suffix = adj === "\uBBF8\uB9CC" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; - const sizing = getSizing(issue3.origin); - const unit = sizing?.unit ?? "\uC694\uC18C"; - if (sizing) - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue3.maximum.toString()}${unit} ${adj}${suffix}`; - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue3.maximum.toString()} ${adj}${suffix}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\uC774\uC0C1" : "\uCD08\uACFC"; - const suffix = adj === "\uC774\uC0C1" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; - const sizing = getSizing(issue3.origin); - const unit = sizing?.unit ?? "\uC694\uC18C"; - if (sizing) { - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue3.minimum.toString()}${unit} ${adj}${suffix}`; - } - return `${issue3.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue3.minimum.toString()} ${adj}${suffix}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`; - } - if (_issue.format === "ends_with") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`; - if (_issue.format === "includes") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`; - if (_issue.format === "regex") - return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`; - return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue3.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`; - case "unrecognized_keys": - return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\uC798\uBABB\uB41C \uD0A4: ${issue3.origin}`; - case "invalid_union": - return `\uC798\uBABB\uB41C \uC785\uB825`; - case "invalid_element": - return `\uC798\uBABB\uB41C \uAC12: ${issue3.origin}`; - default: - return `\uC798\uBABB\uB41C \uC785\uB825`; - } - }; -}; -function ko_default2() { - return { - localeError: error72() - }; -} - -// ../../node_modules/zod/v4/locales/lt.js -var capitalizeFirstCharacter2 = (text) => { - return text.charAt(0).toUpperCase() + text.slice(1); -}; -function getUnitTypeFromNumber2(number7) { - const abs = Math.abs(number7); - const last = abs % 10; - const last2 = abs % 100; - if (last2 >= 11 && last2 <= 19 || last === 0) - return "many"; - if (last === 1) - return "one"; - return "few"; -} -var error73 = () => { - const Sizable = { - string: { - unit: { - one: "simbolis", - few: "simboliai", - many: "simboli\u0173" - }, - verb: { - smaller: { - inclusive: "turi b\u016Bti ne ilgesn\u0117 kaip", - notInclusive: "turi b\u016Bti trumpesn\u0117 kaip" - }, - bigger: { - inclusive: "turi b\u016Bti ne trumpesn\u0117 kaip", - notInclusive: "turi b\u016Bti ilgesn\u0117 kaip" - } - } - }, - file: { - unit: { - one: "baitas", - few: "baitai", - many: "bait\u0173" - }, - verb: { - smaller: { - inclusive: "turi b\u016Bti ne didesnis kaip", - notInclusive: "turi b\u016Bti ma\u017Eesnis kaip" - }, - bigger: { - inclusive: "turi b\u016Bti ne ma\u017Eesnis kaip", - notInclusive: "turi b\u016Bti didesnis kaip" - } - } - }, - array: { - unit: { - one: "element\u0105", - few: "elementus", - many: "element\u0173" - }, - verb: { - smaller: { - inclusive: "turi tur\u0117ti ne daugiau kaip", - notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" - }, - bigger: { - inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", - notInclusive: "turi tur\u0117ti daugiau kaip" - } - } - }, - set: { - unit: { - one: "element\u0105", - few: "elementus", - many: "element\u0173" - }, - verb: { - smaller: { - inclusive: "turi tur\u0117ti ne daugiau kaip", - notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" - }, - bigger: { - inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", - notInclusive: "turi tur\u0117ti daugiau kaip" - } - } - } - }; - function getSizing(origin, unitType, inclusive, targetShouldBe) { - const result = Sizable[origin] ?? null; - if (result === null) - return result; - return { - unit: result.unit[unitType], - verb: result.verb[targetShouldBe][inclusive ? "inclusive" : "notInclusive"] - }; - } - const FormatDictionary = { - regex: "\u012Fvestis", - email: "el. pa\u0161to adresas", - url: "URL", - emoji: "jaustukas", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO data ir laikas", - date: "ISO data", - time: "ISO laikas", - duration: "ISO trukm\u0117", - ipv4: "IPv4 adresas", - ipv6: "IPv6 adresas", - cidrv4: "IPv4 tinklo prefiksas (CIDR)", - cidrv6: "IPv6 tinklo prefiksas (CIDR)", - base64: "base64 u\u017Ekoduota eilut\u0117", - base64url: "base64url u\u017Ekoduota eilut\u0117", - json_string: "JSON eilut\u0117", - e164: "E.164 numeris", - jwt: "JWT", - template_literal: "\u012Fvestis" - }; - const TypeDictionary = { - nan: "NaN", - number: "skai\u010Dius", - bigint: "sveikasis skai\u010Dius", - string: "eilut\u0117", - boolean: "login\u0117 reik\u0161m\u0117", - undefined: "neapibr\u0117\u017Eta reik\u0161m\u0117", - function: "funkcija", - symbol: "simbolis", - array: "masyvas", - object: "objektas", - null: "nulin\u0117 reik\u0161m\u0117" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue3.expected}`; - } - return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Privalo b\u016Bti ${stringifyPrimitive2(issue3.values[0])}`; - return `Privalo b\u016Bti vienas i\u0161 ${joinValues2(issue3.values, "|")} pasirinkim\u0173`; - case "too_big": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - const sizing = getSizing(issue3.origin, getUnitTypeFromNumber2(Number(issue3.maximum)), issue3.inclusive ?? false, "smaller"); - if (sizing?.verb) - return `${capitalizeFirstCharacter2(origin ?? issue3.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue3.maximum.toString()} ${sizing.unit ?? "element\u0173"}`; - const adj = issue3.inclusive ? "ne didesnis kaip" : "ma\u017Eesnis kaip"; - return `${capitalizeFirstCharacter2(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue3.maximum.toString()} ${sizing?.unit}`; - } - case "too_small": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - const sizing = getSizing(issue3.origin, getUnitTypeFromNumber2(Number(issue3.minimum)), issue3.inclusive ?? false, "bigger"); - if (sizing?.verb) - return `${capitalizeFirstCharacter2(origin ?? issue3.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue3.minimum.toString()} ${sizing.unit ?? "element\u0173"}`; - const adj = issue3.inclusive ? "ne ma\u017Eesnis kaip" : "didesnis kaip"; - return `${capitalizeFirstCharacter2(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue3.minimum.toString()} ${sizing?.unit}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Eilut\u0117 privalo prasid\u0117ti "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Eilut\u0117 privalo pasibaigti "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Eilut\u0117 privalo \u012Ftraukti "${_issue.includes}"`; - if (_issue.format === "regex") - return `Eilut\u0117 privalo atitikti ${_issue.pattern}`; - return `Neteisingas ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Skai\u010Dius privalo b\u016Bti ${issue3.divisor} kartotinis.`; - case "unrecognized_keys": - return `Neatpa\u017Eint${issue3.keys.length > 1 ? "i" : "as"} rakt${issue3.keys.length > 1 ? "ai" : "as"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return "Rastas klaidingas raktas"; - case "invalid_union": - return "Klaidinga \u012Fvestis"; - case "invalid_element": { - const origin = TypeDictionary[issue3.origin] ?? issue3.origin; - return `${capitalizeFirstCharacter2(origin ?? issue3.origin ?? "reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`; - } - default: - return "Klaidinga \u012Fvestis"; - } - }; -}; -function lt_default2() { - return { - localeError: error73() - }; -} - -// ../../node_modules/zod/v4/locales/mk.js -var error74 = () => { - const Sizable = { - string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - file: { unit: "\u0431\u0430\u0458\u0442\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - array: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, - set: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u043D\u0435\u0441", - email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430", - url: "URL", - emoji: "\u0435\u043C\u043E\u045F\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435", - date: "ISO \u0434\u0430\u0442\u0443\u043C", - time: "ISO \u0432\u0440\u0435\u043C\u0435", - duration: "ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441\u0430", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441\u0430", - cidrv4: "IPv4 \u043E\u043F\u0441\u0435\u0433", - cidrv6: "IPv6 \u043E\u043F\u0441\u0435\u0433", - base64: "base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", - base64url: "base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", - json_string: "JSON \u043D\u0438\u0437\u0430", - e164: "E.164 \u0431\u0440\u043E\u0458", - jwt: "JWT", - template_literal: "\u0432\u043D\u0435\u0441" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0431\u0440\u043E\u0458", - array: "\u043D\u0438\u0437\u0430" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue3.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; - } - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Invalid input: expected ${stringifyPrimitive2(issue3.values[0])}`; - return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`; - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue3.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`; - return `Invalid ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438" : "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue3.origin}`; - case "invalid_union": - return "\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"; - case "invalid_element": - return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue3.origin}`; - default: - return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`; - } - }; -}; -function mk_default2() { - return { - localeError: error74() - }; -} - -// ../../node_modules/zod/v4/locales/ms.js -var error75 = () => { - const Sizable = { - string: { unit: "aksara", verb: "mempunyai" }, - file: { unit: "bait", verb: "mempunyai" }, - array: { unit: "elemen", verb: "mempunyai" }, - set: { unit: "elemen", verb: "mempunyai" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "alamat e-mel", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "tarikh masa ISO", - date: "tarikh ISO", - time: "masa ISO", - duration: "tempoh ISO", - ipv4: "alamat IPv4", - ipv6: "alamat IPv6", - cidrv4: "julat IPv4", - cidrv6: "julat IPv6", - base64: "string dikodkan base64", - base64url: "string dikodkan base64url", - json_string: "string JSON", - e164: "nombor E.164", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "nombor" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Input tidak sah: dijangka instanceof ${issue3.expected}, diterima ${received}`; - } - return `Input tidak sah: dijangka ${expected}, diterima ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Input tidak sah: dijangka ${stringifyPrimitive2(issue3.values[0])}`; - return `Pilihan tidak sah: dijangka salah satu daripada ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Terlalu besar: dijangka ${issue3.origin ?? "nilai"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elemen"}`; - return `Terlalu besar: dijangka ${issue3.origin ?? "nilai"} adalah ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Terlalu kecil: dijangka ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Terlalu kecil: dijangka ${issue3.origin} adalah ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `String tidak sah: mesti bermula dengan "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `String tidak sah: mesti berakhir dengan "${_issue.suffix}"`; - if (_issue.format === "includes") - return `String tidak sah: mesti mengandungi "${_issue.includes}"`; - if (_issue.format === "regex") - return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} tidak sah`; - } - case "not_multiple_of": - return `Nombor tidak sah: perlu gandaan ${issue3.divisor}`; - case "unrecognized_keys": - return `Kunci tidak dikenali: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Kunci tidak sah dalam ${issue3.origin}`; - case "invalid_union": - return "Input tidak sah"; - case "invalid_element": - return `Nilai tidak sah dalam ${issue3.origin}`; - default: - return `Input tidak sah`; - } - }; -}; -function ms_default2() { - return { - localeError: error75() - }; -} - -// ../../node_modules/zod/v4/locales/nl.js -var error76 = () => { - const Sizable = { - string: { unit: "tekens", verb: "heeft" }, - file: { unit: "bytes", verb: "heeft" }, - array: { unit: "elementen", verb: "heeft" }, - set: { unit: "elementen", verb: "heeft" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "invoer", - email: "emailadres", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datum en tijd", - date: "ISO datum", - time: "ISO tijd", - duration: "ISO duur", - ipv4: "IPv4-adres", - ipv6: "IPv6-adres", - cidrv4: "IPv4-bereik", - cidrv6: "IPv6-bereik", - base64: "base64-gecodeerde tekst", - base64url: "base64 URL-gecodeerde tekst", - json_string: "JSON string", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "invoer" - }; - const TypeDictionary = { - nan: "NaN", - number: "getal" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ongeldige invoer: verwacht instanceof ${issue3.expected}, ontving ${received}`; - } - return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ongeldige invoer: verwacht ${stringifyPrimitive2(issue3.values[0])}`; - return `Ongeldige optie: verwacht \xE9\xE9n van ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - const longName = issue3.origin === "date" ? "laat" : issue3.origin === "string" ? "lang" : "groot"; - if (sizing) - return `Te ${longName}: verwacht dat ${issue3.origin ?? "waarde"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementen"} ${sizing.verb}`; - return `Te ${longName}: verwacht dat ${issue3.origin ?? "waarde"} ${adj}${issue3.maximum.toString()} is`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - const shortName = issue3.origin === "date" ? "vroeg" : issue3.origin === "string" ? "kort" : "klein"; - if (sizing) { - return `Te ${shortName}: verwacht dat ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} ${sizing.verb}`; - } - return `Te ${shortName}: verwacht dat ${issue3.origin} ${adj}${issue3.minimum.toString()} is`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Ongeldige tekst: moet met "${_issue.prefix}" beginnen`; - } - if (_issue.format === "ends_with") - return `Ongeldige tekst: moet op "${_issue.suffix}" eindigen`; - if (_issue.format === "includes") - return `Ongeldige tekst: moet "${_issue.includes}" bevatten`; - if (_issue.format === "regex") - return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`; - return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ongeldig getal: moet een veelvoud van ${issue3.divisor} zijn`; - case "unrecognized_keys": - return `Onbekende key${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Ongeldige key in ${issue3.origin}`; - case "invalid_union": - return "Ongeldige invoer"; - case "invalid_element": - return `Ongeldige waarde in ${issue3.origin}`; - default: - return `Ongeldige invoer`; - } - }; -}; -function nl_default2() { - return { - localeError: error76() - }; -} - -// ../../node_modules/zod/v4/locales/no.js -var error77 = () => { - const Sizable = { - string: { unit: "tegn", verb: "\xE5 ha" }, - file: { unit: "bytes", verb: "\xE5 ha" }, - array: { unit: "elementer", verb: "\xE5 inneholde" }, - set: { unit: "elementer", verb: "\xE5 inneholde" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "input", - email: "e-postadresse", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO dato- og klokkeslett", - date: "ISO-dato", - time: "ISO-klokkeslett", - duration: "ISO-varighet", - ipv4: "IPv4-omr\xE5de", - ipv6: "IPv6-omr\xE5de", - cidrv4: "IPv4-spekter", - cidrv6: "IPv6-spekter", - base64: "base64-enkodet streng", - base64url: "base64url-enkodet streng", - json_string: "JSON-streng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "tall", - array: "liste" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ugyldig input: forventet instanceof ${issue3.expected}, fikk ${received}`; - } - return `Ugyldig input: forventet ${expected}, fikk ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ugyldig verdi: forventet ${stringifyPrimitive2(issue3.values[0])}`; - return `Ugyldig valg: forventet en av ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `For stor(t): forventet ${issue3.origin ?? "value"} til \xE5 ha ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementer"}`; - return `For stor(t): forventet ${issue3.origin ?? "value"} til \xE5 ha ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `For lite(n): forventet ${issue3.origin} til \xE5 ha ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `For lite(n): forventet ${issue3.origin} til \xE5 ha ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Ugyldig streng: m\xE5 ende med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ugyldig streng: m\xE5 inneholde "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`; - return `Ugyldig ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ugyldig tall: m\xE5 v\xE6re et multiplum av ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ukjente n\xF8kler" : "Ukjent n\xF8kkel"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Ugyldig n\xF8kkel i ${issue3.origin}`; - case "invalid_union": - return "Ugyldig input"; - case "invalid_element": - return `Ugyldig verdi i ${issue3.origin}`; - default: - return `Ugyldig input`; - } - }; -}; -function no_default2() { - return { - localeError: error77() - }; -} - -// ../../node_modules/zod/v4/locales/ota.js -var error78 = () => { - const Sizable = { - string: { unit: "harf", verb: "olmal\u0131d\u0131r" }, - file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, - array: { unit: "unsur", verb: "olmal\u0131d\u0131r" }, - set: { unit: "unsur", verb: "olmal\u0131d\u0131r" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "giren", - email: "epostag\xE2h", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO heng\xE2m\u0131", - date: "ISO tarihi", - time: "ISO zaman\u0131", - duration: "ISO m\xFCddeti", - ipv4: "IPv4 ni\u015F\xE2n\u0131", - ipv6: "IPv6 ni\u015F\xE2n\u0131", - cidrv4: "IPv4 menzili", - cidrv6: "IPv6 menzili", - base64: "base64-\u015Fifreli metin", - base64url: "base64url-\u015Fifreli metin", - json_string: "JSON metin", - e164: "E.164 say\u0131s\u0131", - jwt: "JWT", - template_literal: "giren" - }; - const TypeDictionary = { - nan: "NaN", - number: "numara", - array: "saf", - null: "gayb" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `F\xE2sit giren: umulan instanceof ${issue3.expected}, al\u0131nan ${received}`; - } - return `F\xE2sit giren: umulan ${expected}, al\u0131nan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `F\xE2sit giren: umulan ${stringifyPrimitive2(issue3.values[0])}`; - return `F\xE2sit tercih: m\xFBteberler ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Fazla b\xFCy\xFCk: ${issue3.origin ?? "value"}, ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elements"} sahip olmal\u0131yd\u0131.`; - return `Fazla b\xFCy\xFCk: ${issue3.origin ?? "value"}, ${adj}${issue3.maximum.toString()} olmal\u0131yd\u0131.`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Fazla k\xFC\xE7\xFCk: ${issue3.origin}, ${adj}${issue3.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`; - } - return `Fazla k\xFC\xE7\xFCk: ${issue3.origin}, ${adj}${issue3.minimum.toString()} olmal\u0131yd\u0131.`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `F\xE2sit metin: "${_issue.prefix}" ile ba\u015Flamal\u0131.`; - if (_issue.format === "ends_with") - return `F\xE2sit metin: "${_issue.suffix}" ile bitmeli.`; - if (_issue.format === "includes") - return `F\xE2sit metin: "${_issue.includes}" ihtiv\xE2 etmeli.`; - if (_issue.format === "regex") - return `F\xE2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`; - return `F\xE2sit ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `F\xE2sit say\u0131: ${issue3.divisor} kat\u0131 olmal\u0131yd\u0131.`; - case "unrecognized_keys": - return `Tan\u0131nmayan anahtar ${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} i\xE7in tan\u0131nmayan anahtar var.`; - case "invalid_union": - return "Giren tan\u0131namad\u0131."; - case "invalid_element": - return `${issue3.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`; - default: - return `K\u0131ymet tan\u0131namad\u0131.`; - } - }; -}; -function ota_default2() { - return { - localeError: error78() - }; -} - -// ../../node_modules/zod/v4/locales/ps.js -var error79 = () => { - const Sizable = { - string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, - file: { unit: "\u0628\u0627\u06CC\u067C\u0633", verb: "\u0648\u0644\u0631\u064A" }, - array: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, - set: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0648\u0631\u0648\u062F\u064A", - email: "\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9", - url: "\u06CC\u0648 \u0622\u0631 \u0627\u0644", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u064A", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A", - date: "\u0646\u06D0\u067C\u0647", - time: "\u0648\u062E\u062A", - duration: "\u0645\u0648\u062F\u0647", - ipv4: "\u062F IPv4 \u067E\u062A\u0647", - ipv6: "\u062F IPv6 \u067E\u062A\u0647", - cidrv4: "\u062F IPv4 \u0633\u0627\u062D\u0647", - cidrv6: "\u062F IPv6 \u0633\u0627\u062D\u0647", - base64: "base64-encoded \u0645\u062A\u0646", - base64url: "base64url-encoded \u0645\u062A\u0646", - json_string: "JSON \u0645\u062A\u0646", - e164: "\u062F E.164 \u0634\u0645\u06D0\u0631\u0647", - jwt: "JWT", - template_literal: "\u0648\u0631\u0648\u062F\u064A" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0639\u062F\u062F", - array: "\u0627\u0631\u06D0" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue3.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; - } - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; - } - case "invalid_value": - if (issue3.values.length === 1) { - return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${stringifyPrimitive2(issue3.values[0])} \u0648\u0627\u06CC`; - } - return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${joinValues2(issue3.values, "|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue3.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`; - } - return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue3.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue3.maximum.toString()} \u0648\u064A`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`; - } - return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue3.origin} \u0628\u0627\u06CC\u062F ${adj}${issue3.minimum.toString()} \u0648\u064A`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`; - } - if (_issue.format === "ends_with") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`; - } - if (_issue.format === "includes") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${_issue.includes}" \u0648\u0644\u0631\u064A`; - } - if (_issue.format === "regex") { - return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`; - } - return `${FormatDictionary[_issue.format] ?? issue3.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`; - } - case "not_multiple_of": - return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue3.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`; - case "unrecognized_keys": - return `\u0646\u0627\u0633\u0645 ${issue3.keys.length > 1 ? "\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647" : "\u06A9\u0644\u06CC\u0689"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue3.origin} \u06A9\u06D0`; - case "invalid_union": - return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; - case "invalid_element": - return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue3.origin} \u06A9\u06D0`; - default: - return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; - } - }; -}; -function ps_default2() { - return { - localeError: error79() - }; -} - -// ../../node_modules/zod/v4/locales/pl.js -var error80 = () => { - const Sizable = { - string: { unit: "znak\xF3w", verb: "mie\u0107" }, - file: { unit: "bajt\xF3w", verb: "mie\u0107" }, - array: { unit: "element\xF3w", verb: "mie\u0107" }, - set: { unit: "element\xF3w", verb: "mie\u0107" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "wyra\u017Cenie", - email: "adres email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data i godzina w formacie ISO", - date: "data w formacie ISO", - time: "godzina w formacie ISO", - duration: "czas trwania ISO", - ipv4: "adres IPv4", - ipv6: "adres IPv6", - cidrv4: "zakres IPv4", - cidrv6: "zakres IPv6", - base64: "ci\u0105g znak\xF3w zakodowany w formacie base64", - base64url: "ci\u0105g znak\xF3w zakodowany w formacie base64url", - json_string: "ci\u0105g znak\xF3w w formacie JSON", - e164: "liczba E.164", - jwt: "JWT", - template_literal: "wej\u015Bcie" - }; - const TypeDictionary = { - nan: "NaN", - number: "liczba", - array: "tablica" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue3.expected}, otrzymano ${received}`; - } - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${stringifyPrimitive2(issue3.values[0])}`; - return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element\xF3w"}`; - } - return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue3.minimum.toString()} ${sizing.unit ?? "element\xF3w"}`; - } - return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue3.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${_issue.includes}"`; - if (_issue.format === "regex") - return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`; - return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue3.divisor}`; - case "unrecognized_keys": - return `Nierozpoznane klucze${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Nieprawid\u0142owy klucz w ${issue3.origin}`; - case "invalid_union": - return "Nieprawid\u0142owe dane wej\u015Bciowe"; - case "invalid_element": - return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue3.origin}`; - default: - return `Nieprawid\u0142owe dane wej\u015Bciowe`; - } - }; -}; -function pl_default2() { - return { - localeError: error80() - }; -} - -// ../../node_modules/zod/v4/locales/pt.js -var error81 = () => { - const Sizable = { - string: { unit: "caracteres", verb: "ter" }, - file: { unit: "bytes", verb: "ter" }, - array: { unit: "itens", verb: "ter" }, - set: { unit: "itens", verb: "ter" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "padr\xE3o", - email: "endere\xE7o de e-mail", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "data e hora ISO", - date: "data ISO", - time: "hora ISO", - duration: "dura\xE7\xE3o ISO", - ipv4: "endere\xE7o IPv4", - ipv6: "endere\xE7o IPv6", - cidrv4: "faixa de IPv4", - cidrv6: "faixa de IPv6", - base64: "texto codificado em base64", - base64url: "URL codificada em base64", - json_string: "texto JSON", - e164: "n\xFAmero E.164", - jwt: "JWT", - template_literal: "entrada" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\xFAmero", - null: "nulo" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Tipo inv\xE1lido: esperado instanceof ${issue3.expected}, recebido ${received}`; - } - return `Tipo inv\xE1lido: esperado ${expected}, recebido ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Entrada inv\xE1lida: esperado ${stringifyPrimitive2(issue3.values[0])}`; - return `Op\xE7\xE3o inv\xE1lida: esperada uma das ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Muito grande: esperado que ${issue3.origin ?? "valor"} tivesse ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementos"}`; - return `Muito grande: esperado que ${issue3.origin ?? "valor"} fosse ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Muito pequeno: esperado que ${issue3.origin} tivesse ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Muito pequeno: esperado que ${issue3.origin} fosse ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Texto inv\xE1lido: deve come\xE7ar com "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Texto inv\xE1lido: deve terminar com "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Texto inv\xE1lido: deve incluir "${_issue.includes}"`; - if (_issue.format === "regex") - return `Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} inv\xE1lido`; - } - case "not_multiple_of": - return `N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue3.divisor}`; - case "unrecognized_keys": - return `Chave${issue3.keys.length > 1 ? "s" : ""} desconhecida${issue3.keys.length > 1 ? "s" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Chave inv\xE1lida em ${issue3.origin}`; - case "invalid_union": - return "Entrada inv\xE1lida"; - case "invalid_element": - return `Valor inv\xE1lido em ${issue3.origin}`; - default: - return `Campo inv\xE1lido`; - } - }; -}; -function pt_default2() { - return { - localeError: error81() - }; -} - -// ../../node_modules/zod/v4/locales/ru.js -function getRussianPlural2(count, one, few, many) { - const absCount = Math.abs(count); - const lastDigit = absCount % 10; - const lastTwoDigits = absCount % 100; - if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { - return many; - } - if (lastDigit === 1) { - return one; - } - if (lastDigit >= 2 && lastDigit <= 4) { - return few; - } - return many; -} -var error82 = () => { - const Sizable = { - string: { - unit: { - one: "\u0441\u0438\u043C\u0432\u043E\u043B", - few: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", - many: "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - file: { - unit: { - one: "\u0431\u0430\u0439\u0442", - few: "\u0431\u0430\u0439\u0442\u0430", - many: "\u0431\u0430\u0439\u0442" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - array: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - }, - set: { - unit: { - one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", - few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", - many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" - }, - verb: "\u0438\u043C\u0435\u0442\u044C" - } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0432\u043E\u0434", - email: "email \u0430\u0434\u0440\u0435\u0441", - url: "URL", - emoji: "\u044D\u043C\u043E\u0434\u0437\u0438", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F", - date: "ISO \u0434\u0430\u0442\u0430", - time: "ISO \u0432\u0440\u0435\u043C\u044F", - duration: "ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C", - ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", - ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", - cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", - base64: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64", - base64url: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url", - json_string: "JSON \u0441\u0442\u0440\u043E\u043A\u0430", - e164: "\u043D\u043E\u043C\u0435\u0440 E.164", - jwt: "JWT", - template_literal: "\u0432\u0432\u043E\u0434" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue3.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; - } - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${stringifyPrimitive2(issue3.values[0])}`; - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const maxValue = Number(issue3.maximum); - const unit = getRussianPlural2(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue3.maximum.toString()} ${unit}`; - } - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - const minValue = Number(issue3.minimum); - const unit = getRussianPlural2(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue3.minimum.toString()} ${unit}`; - } - return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue3.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue3.keys.length > 1 ? "\u044B\u0435" : "\u044B\u0439"} \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u0438" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"; - case "invalid_element": - return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue3.origin}`; - default: - return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`; - } - }; -}; -function ru_default2() { - return { - localeError: error82() - }; -} - -// ../../node_modules/zod/v4/locales/sl.js -var error83 = () => { - const Sizable = { - string: { unit: "znakov", verb: "imeti" }, - file: { unit: "bajtov", verb: "imeti" }, - array: { unit: "elementov", verb: "imeti" }, - set: { unit: "elementov", verb: "imeti" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "vnos", - email: "e-po\u0161tni naslov", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO datum in \u010Das", - date: "ISO datum", - time: "ISO \u010Das", - duration: "ISO trajanje", - ipv4: "IPv4 naslov", - ipv6: "IPv6 naslov", - cidrv4: "obseg IPv4", - cidrv6: "obseg IPv6", - base64: "base64 kodiran niz", - base64url: "base64url kodiran niz", - json_string: "JSON niz", - e164: "E.164 \u0161tevilka", - jwt: "JWT", - template_literal: "vnos" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0161tevilo", - array: "tabela" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue3.expected}, prejeto ${received}`; - } - return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Neveljaven vnos: pri\u010Dakovano ${stringifyPrimitive2(issue3.values[0])}`; - return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Preveliko: pri\u010Dakovano, da bo ${issue3.origin ?? "vrednost"} imelo ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "elementov"}`; - return `Preveliko: pri\u010Dakovano, da bo ${issue3.origin ?? "vrednost"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Premajhno: pri\u010Dakovano, da bo ${issue3.origin} imelo ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Premajhno: pri\u010Dakovano, da bo ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Neveljaven niz: mora se za\u010Deti z "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Neveljaven niz: mora se kon\u010Dati z "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Neveljaven niz: mora vsebovati "${_issue.includes}"`; - if (_issue.format === "regex") - return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`; - return `Neveljaven ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue3.divisor}`; - case "unrecognized_keys": - return `Neprepoznan${issue3.keys.length > 1 ? "i klju\u010Di" : " klju\u010D"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Neveljaven klju\u010D v ${issue3.origin}`; - case "invalid_union": - return "Neveljaven vnos"; - case "invalid_element": - return `Neveljavna vrednost v ${issue3.origin}`; - default: - return "Neveljaven vnos"; - } - }; -}; -function sl_default2() { - return { - localeError: error83() - }; -} - -// ../../node_modules/zod/v4/locales/sv.js -var error84 = () => { - const Sizable = { - string: { unit: "tecken", verb: "att ha" }, - file: { unit: "bytes", verb: "att ha" }, - array: { unit: "objekt", verb: "att inneh\xE5lla" }, - set: { unit: "objekt", verb: "att inneh\xE5lla" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "regulj\xE4rt uttryck", - email: "e-postadress", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO-datum och tid", - date: "ISO-datum", - time: "ISO-tid", - duration: "ISO-varaktighet", - ipv4: "IPv4-intervall", - ipv6: "IPv6-intervall", - cidrv4: "IPv4-spektrum", - cidrv6: "IPv6-spektrum", - base64: "base64-kodad str\xE4ng", - base64url: "base64url-kodad str\xE4ng", - json_string: "JSON-str\xE4ng", - e164: "E.164-nummer", - jwt: "JWT", - template_literal: "mall-literal" - }; - const TypeDictionary = { - nan: "NaN", - number: "antal", - array: "lista" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${issue3.expected}, fick ${received}`; - } - return `Ogiltig inmatning: f\xF6rv\xE4ntat ${expected}, fick ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ogiltig inmatning: f\xF6rv\xE4ntat ${stringifyPrimitive2(issue3.values[0])}`; - return `Ogiltigt val: f\xF6rv\xE4ntade en av ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `F\xF6r stor(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "element"}`; - } - return `F\xF6r stor(t): f\xF6rv\xE4ntat ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue3.origin ?? "v\xE4rdet"} att ha ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `Ogiltig str\xE4ng: m\xE5ste sluta med "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${_issue.includes}"`; - if (_issue.format === "regex") - return `Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${_issue.pattern}"`; - return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ogiltigt tal: m\xE5ste vara en multipel av ${issue3.divisor}`; - case "unrecognized_keys": - return `${issue3.keys.length > 1 ? "Ok\xE4nda nycklar" : "Ok\xE4nd nyckel"}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Ogiltig nyckel i ${issue3.origin ?? "v\xE4rdet"}`; - case "invalid_union": - return "Ogiltig input"; - case "invalid_element": - return `Ogiltigt v\xE4rde i ${issue3.origin ?? "v\xE4rdet"}`; - default: - return `Ogiltig input`; - } - }; -}; -function sv_default2() { - return { - localeError: error84() - }; -} - -// ../../node_modules/zod/v4/locales/ta.js -var error85 = () => { - const Sizable = { - string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - file: { unit: "\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - array: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, - set: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1", - email: "\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", - date: "ISO \u0BA4\u0BC7\u0BA4\u0BBF", - time: "ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", - duration: "ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1", - ipv4: "IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - ipv6: "IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", - cidrv4: "IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", - cidrv6: "IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", - base64: "base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD", - base64url: "base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD", - json_string: "JSON \u0B9A\u0BB0\u0BAE\u0BCD", - e164: "E.164 \u0B8E\u0BA3\u0BCD", - jwt: "JWT", - template_literal: "input" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0B8E\u0BA3\u0BCD", - array: "\u0B85\u0BA3\u0BBF", - null: "\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue3.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; - } - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${stringifyPrimitive2(issue3.values[0])}`; - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${joinValues2(issue3.values, "|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue3.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue3.origin} ${adj}${issue3.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "ends_with") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "includes") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - if (_issue.format === "regex") - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue3.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; - case "unrecognized_keys": - return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue3.keys.length > 1 ? "\u0B95\u0BB3\u0BCD" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`; - case "invalid_union": - return "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"; - case "invalid_element": - return `${issue3.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`; - default: - return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`; - } - }; -}; -function ta_default2() { - return { - localeError: error85() - }; -} - -// ../../node_modules/zod/v4/locales/th.js -var error86 = () => { - const Sizable = { - string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - file: { unit: "\u0E44\u0E1A\u0E15\u0E4C", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - array: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, - set: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19", - email: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25", - url: "URL", - emoji: "\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - date: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO", - time: "\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - duration: "\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", - ipv4: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4", - ipv6: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6", - cidrv4: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4", - cidrv6: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6", - base64: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64", - base64url: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL", - json_string: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON", - e164: "\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)", - jwt: "\u0E42\u0E17\u0E40\u0E04\u0E19 JWT", - template_literal: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02", - array: "\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)", - null: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue3.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; - } - return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${stringifyPrimitive2(issue3.values[0])}`; - return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19" : "\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.maximum.toString()} ${sizing.unit ?? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`; - return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? "\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22" : "\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue3.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${_issue.prefix}"`; - } - if (_issue.format === "ends_with") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${_issue.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`; - if (_issue.format === "regex") - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`; - return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue3.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`; - case "unrecognized_keys": - return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue3.origin}`; - case "invalid_union": - return "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49"; - case "invalid_element": - return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue3.origin}`; - default: - return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`; - } - }; -}; -function th_default2() { - return { - localeError: error86() - }; -} - -// ../../node_modules/zod/v4/locales/tr.js -var error87 = () => { - const Sizable = { - string: { unit: "karakter", verb: "olmal\u0131" }, - file: { unit: "bayt", verb: "olmal\u0131" }, - array: { unit: "\xF6\u011Fe", verb: "olmal\u0131" }, - set: { unit: "\xF6\u011Fe", verb: "olmal\u0131" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "girdi", - email: "e-posta adresi", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO tarih ve saat", - date: "ISO tarih", - time: "ISO saat", - duration: "ISO s\xFCre", - ipv4: "IPv4 adresi", - ipv6: "IPv6 adresi", - cidrv4: "IPv4 aral\u0131\u011F\u0131", - cidrv6: "IPv6 aral\u0131\u011F\u0131", - base64: "base64 ile \u015Fifrelenmi\u015F metin", - base64url: "base64url ile \u015Fifrelenmi\u015F metin", - json_string: "JSON dizesi", - e164: "E.164 say\u0131s\u0131", - jwt: "JWT", - template_literal: "\u015Eablon dizesi" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Ge\xE7ersiz de\u011Fer: beklenen instanceof ${issue3.expected}, al\u0131nan ${received}`; - } - return `Ge\xE7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Ge\xE7ersiz de\u011Fer: beklenen ${stringifyPrimitive2(issue3.values[0])}`; - return `Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ok b\xFCy\xFCk: beklenen ${issue3.origin ?? "de\u011Fer"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\xF6\u011Fe"}`; - return `\xC7ok b\xFCy\xFCk: beklenen ${issue3.origin ?? "de\u011Fer"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Ge\xE7ersiz metin: "${_issue.prefix}" ile ba\u015Flamal\u0131`; - if (_issue.format === "ends_with") - return `Ge\xE7ersiz metin: "${_issue.suffix}" ile bitmeli`; - if (_issue.format === "includes") - return `Ge\xE7ersiz metin: "${_issue.includes}" i\xE7ermeli`; - if (_issue.format === "regex") - return `Ge\xE7ersiz metin: ${_issue.pattern} desenine uymal\u0131`; - return `Ge\xE7ersiz ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Ge\xE7ersiz say\u0131: ${issue3.divisor} ile tam b\xF6l\xFCnebilmeli`; - case "unrecognized_keys": - return `Tan\u0131nmayan anahtar${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} i\xE7inde ge\xE7ersiz anahtar`; - case "invalid_union": - return "Ge\xE7ersiz de\u011Fer"; - case "invalid_element": - return `${issue3.origin} i\xE7inde ge\xE7ersiz de\u011Fer`; - default: - return `Ge\xE7ersiz de\u011Fer`; - } - }; -}; -function tr_default2() { - return { - localeError: error87() - }; -} - -// ../../node_modules/zod/v4/locales/uk.js -var error88 = () => { - const Sizable = { - string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - file: { unit: "\u0431\u0430\u0439\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, - set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456", - email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438", - url: "URL", - emoji: "\u0435\u043C\u043E\u0434\u0437\u0456", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO", - date: "\u0434\u0430\u0442\u0430 ISO", - time: "\u0447\u0430\u0441 ISO", - duration: "\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO", - ipv4: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv4", - ipv6: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv6", - cidrv4: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4", - cidrv6: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6", - base64: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64", - base64url: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url", - json_string: "\u0440\u044F\u0434\u043E\u043A JSON", - e164: "\u043D\u043E\u043C\u0435\u0440 E.164", - jwt: "JWT", - template_literal: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0447\u0438\u0441\u043B\u043E", - array: "\u043C\u0430\u0441\u0438\u0432" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue3.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; - } - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${stringifyPrimitive2(issue3.values[0])}`; - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`; - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue3.origin} \u0431\u0443\u0434\u0435 ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue3.divisor}`; - case "unrecognized_keys": - return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue3.keys.length > 1 ? "\u0456" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue3.origin}`; - case "invalid_union": - return "\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"; - case "invalid_element": - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue3.origin}`; - default: - return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`; - } - }; -}; -function uk_default2() { - return { - localeError: error88() - }; -} - -// ../../node_modules/zod/v4/locales/ua.js -function ua_default2() { - return uk_default2(); -} - -// ../../node_modules/zod/v4/locales/ur.js -var error89 = () => { - const Sizable = { - string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" }, - file: { unit: "\u0628\u0627\u0626\u0679\u0633", verb: "\u06C1\u0648\u0646\u0627" }, - array: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" }, - set: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0627\u0646 \u067E\u0679", - email: "\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633", - url: "\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644", - emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", - uuid: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - uuidv4: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4", - uuidv6: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6", - nanoid: "\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC", - guid: "\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - cuid: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - cuid2: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2", - ulid: "\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC", - xid: "\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC", - ksuid: "\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", - datetime: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645", - date: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E", - time: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A", - duration: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A", - ipv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633", - ipv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633", - cidrv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C", - cidrv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C", - base64: "\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", - base64url: "\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", - json_string: "\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF", - e164: "\u0627\u06CC 164 \u0646\u0645\u0628\u0631", - jwt: "\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC", - template_literal: "\u0627\u0646 \u067E\u0679" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u0646\u0645\u0628\u0631", - array: "\u0622\u0631\u06D2", - null: "\u0646\u0644" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue3.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; - } - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${stringifyPrimitive2(issue3.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${joinValues2(issue3.values, "|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue3.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; - return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue3.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${adj}${issue3.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue3.origin} \u06A9\u06D2 ${adj}${issue3.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; - } - return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue3.origin} \u06A9\u0627 ${adj}${issue3.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - } - if (_issue.format === "ends_with") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - if (_issue.format === "includes") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - if (_issue.format === "regex") - return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue3.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; - case "unrecognized_keys": - return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue3.keys.length > 1 ? "\u0632" : ""}: ${joinValues2(issue3.keys, "\u060C ")}`; - case "invalid_key": - return `${issue3.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`; - case "invalid_union": - return "\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"; - case "invalid_element": - return `${issue3.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`; - default: - return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`; - } - }; -}; -function ur_default2() { - return { - localeError: error89() - }; -} - -// ../../node_modules/zod/v4/locales/uz.js -var error90 = () => { - const Sizable = { - string: { unit: "belgi", verb: "bo\u2018lishi kerak" }, - file: { unit: "bayt", verb: "bo\u2018lishi kerak" }, - array: { unit: "element", verb: "bo\u2018lishi kerak" }, - set: { unit: "element", verb: "bo\u2018lishi kerak" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "kirish", - email: "elektron pochta manzili", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO sana va vaqti", - date: "ISO sana", - time: "ISO vaqt", - duration: "ISO davomiylik", - ipv4: "IPv4 manzil", - ipv6: "IPv6 manzil", - mac: "MAC manzil", - cidrv4: "IPv4 diapazon", - cidrv6: "IPv6 diapazon", - base64: "base64 kodlangan satr", - base64url: "base64url kodlangan satr", - json_string: "JSON satr", - e164: "E.164 raqam", - jwt: "JWT", - template_literal: "kirish" - }; - const TypeDictionary = { - nan: "NaN", - number: "raqam", - array: "massiv" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue3.expected}, qabul qilingan ${received}`; - } - return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `Noto\u2018g\u2018ri kirish: kutilgan ${stringifyPrimitive2(issue3.values[0])}`; - return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Juda katta: kutilgan ${issue3.origin ?? "qiymat"} ${adj}${issue3.maximum.toString()} ${sizing.unit} ${sizing.verb}`; - return `Juda katta: kutilgan ${issue3.origin ?? "qiymat"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Juda kichik: kutilgan ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit} ${sizing.verb}`; - } - return `Juda kichik: kutilgan ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Noto\u2018g\u2018ri satr: "${_issue.prefix}" bilan boshlanishi kerak`; - if (_issue.format === "ends_with") - return `Noto\u2018g\u2018ri satr: "${_issue.suffix}" bilan tugashi kerak`; - if (_issue.format === "includes") - return `Noto\u2018g\u2018ri satr: "${_issue.includes}" ni o\u2018z ichiga olishi kerak`; - if (_issue.format === "regex") - return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`; - return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `Noto\u2018g\u2018ri raqam: ${issue3.divisor} ning karralisi bo\u2018lishi kerak`; - case "unrecognized_keys": - return `Noma\u2019lum kalit${issue3.keys.length > 1 ? "lar" : ""}: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} dagi kalit noto\u2018g\u2018ri`; - case "invalid_union": - return "Noto\u2018g\u2018ri kirish"; - case "invalid_element": - return `${issue3.origin} da noto\u2018g\u2018ri qiymat`; - default: - return `Noto\u2018g\u2018ri kirish`; - } - }; -}; -function uz_default2() { - return { - localeError: error90() - }; -} - -// ../../node_modules/zod/v4/locales/vi.js -var error91 = () => { - const Sizable = { - string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" }, - file: { unit: "byte", verb: "c\xF3" }, - array: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" }, - set: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u0111\u1EA7u v\xE0o", - email: "\u0111\u1ECBa ch\u1EC9 email", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ng\xE0y gi\u1EDD ISO", - date: "ng\xE0y ISO", - time: "gi\u1EDD ISO", - duration: "kho\u1EA3ng th\u1EDDi gian ISO", - ipv4: "\u0111\u1ECBa ch\u1EC9 IPv4", - ipv6: "\u0111\u1ECBa ch\u1EC9 IPv6", - cidrv4: "d\u1EA3i IPv4", - cidrv6: "d\u1EA3i IPv6", - base64: "chu\u1ED7i m\xE3 h\xF3a base64", - base64url: "chu\u1ED7i m\xE3 h\xF3a base64url", - json_string: "chu\u1ED7i JSON", - e164: "s\u1ED1 E.164", - jwt: "JWT", - template_literal: "\u0111\u1EA7u v\xE0o" - }; - const TypeDictionary = { - nan: "NaN", - number: "s\u1ED1", - array: "m\u1EA3ng" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue3.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; - } - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${stringifyPrimitive2(issue3.values[0])}`; - return `T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue3.origin ?? "gi\xE1 tr\u1ECB"} ${sizing.verb} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "ph\u1EA7n t\u1EED"}`; - return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue3.origin ?? "gi\xE1 tr\u1ECB"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${_issue.suffix}"`; - if (_issue.format === "includes") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${_issue.includes}"`; - if (_issue.format === "regex") - return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`; - return `${FormatDictionary[_issue.format] ?? issue3.format} kh\xF4ng h\u1EE3p l\u1EC7`; - } - case "not_multiple_of": - return `S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue3.divisor}`; - case "unrecognized_keys": - return `Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue3.origin}`; - case "invalid_union": - return "\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"; - case "invalid_element": - return `Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue3.origin}`; - default: - return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7`; - } - }; -}; -function vi_default2() { - return { - localeError: error91() - }; -} - -// ../../node_modules/zod/v4/locales/zh-CN.js -var error92 = () => { - const Sizable = { - string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" }, - file: { unit: "\u5B57\u8282", verb: "\u5305\u542B" }, - array: { unit: "\u9879", verb: "\u5305\u542B" }, - set: { unit: "\u9879", verb: "\u5305\u542B" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u8F93\u5165", - email: "\u7535\u5B50\u90AE\u4EF6", - url: "URL", - emoji: "\u8868\u60C5\u7B26\u53F7", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO\u65E5\u671F\u65F6\u95F4", - date: "ISO\u65E5\u671F", - time: "ISO\u65F6\u95F4", - duration: "ISO\u65F6\u957F", - ipv4: "IPv4\u5730\u5740", - ipv6: "IPv6\u5730\u5740", - cidrv4: "IPv4\u7F51\u6BB5", - cidrv6: "IPv6\u7F51\u6BB5", - base64: "base64\u7F16\u7801\u5B57\u7B26\u4E32", - base64url: "base64url\u7F16\u7801\u5B57\u7B26\u4E32", - json_string: "JSON\u5B57\u7B26\u4E32", - e164: "E.164\u53F7\u7801", - jwt: "JWT", - template_literal: "\u8F93\u5165" - }; - const TypeDictionary = { - nan: "NaN", - number: "\u6570\u5B57", - array: "\u6570\u7EC4", - null: "\u7A7A\u503C(null)" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue3.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; - } - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${stringifyPrimitive2(issue3.values[0])}`; - return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue3.origin ?? "\u503C"} ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u4E2A\u5143\u7D20"}`; - return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue3.origin ?? "\u503C"} ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue3.origin} ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue3.origin} ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.prefix}" \u5F00\u5934`; - if (_issue.format === "ends_with") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.suffix}" \u7ED3\u5C3E`; - if (_issue.format === "includes") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`; - return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue3.divisor} \u7684\u500D\u6570`; - case "unrecognized_keys": - return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `${issue3.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`; - case "invalid_union": - return "\u65E0\u6548\u8F93\u5165"; - case "invalid_element": - return `${issue3.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`; - default: - return `\u65E0\u6548\u8F93\u5165`; - } - }; -}; -function zh_CN_default2() { - return { - localeError: error92() - }; -} - -// ../../node_modules/zod/v4/locales/zh-TW.js -var error93 = () => { - const Sizable = { - string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" }, - file: { unit: "\u4F4D\u5143\u7D44", verb: "\u64C1\u6709" }, - array: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" }, - set: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u8F38\u5165", - email: "\u90F5\u4EF6\u5730\u5740", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "ISO \u65E5\u671F\u6642\u9593", - date: "ISO \u65E5\u671F", - time: "ISO \u6642\u9593", - duration: "ISO \u671F\u9593", - ipv4: "IPv4 \u4F4D\u5740", - ipv6: "IPv6 \u4F4D\u5740", - cidrv4: "IPv4 \u7BC4\u570D", - cidrv6: "IPv6 \u7BC4\u570D", - base64: "base64 \u7DE8\u78BC\u5B57\u4E32", - base64url: "base64url \u7DE8\u78BC\u5B57\u4E32", - json_string: "JSON \u5B57\u4E32", - e164: "E.164 \u6578\u503C", - jwt: "JWT", - template_literal: "\u8F38\u5165" - }; - const TypeDictionary = { - nan: "NaN" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue3.expected}\uFF0C\u4F46\u6536\u5230 ${received}`; - } - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${stringifyPrimitive2(issue3.values[0])}`; - return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue3.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue3.maximum.toString()} ${sizing.unit ?? "\u500B\u5143\u7D20"}`; - return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue3.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue3.maximum.toString()}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) { - return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue3.origin} \u61C9\u70BA ${adj}${issue3.minimum.toString()} ${sizing.unit}`; - } - return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue3.origin} \u61C9\u70BA ${adj}${issue3.minimum.toString()}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") { - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.prefix}" \u958B\u982D`; - } - if (_issue.format === "ends_with") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.suffix}" \u7D50\u5C3E`; - if (_issue.format === "includes") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`; - return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue3.divisor} \u7684\u500D\u6578`; - case "unrecognized_keys": - return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue3.keys.length > 1 ? "\u5011" : ""}\uFF1A${joinValues2(issue3.keys, "\u3001")}`; - case "invalid_key": - return `${issue3.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`; - case "invalid_union": - return "\u7121\u6548\u7684\u8F38\u5165\u503C"; - case "invalid_element": - return `${issue3.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`; - default: - return `\u7121\u6548\u7684\u8F38\u5165\u503C`; - } - }; -}; -function zh_TW_default2() { - return { - localeError: error93() - }; -} - -// ../../node_modules/zod/v4/locales/yo.js -var error94 = () => { - const Sizable = { - string: { unit: "\xE0mi", verb: "n\xED" }, - file: { unit: "bytes", verb: "n\xED" }, - array: { unit: "nkan", verb: "n\xED" }, - set: { unit: "nkan", verb: "n\xED" } - }; - function getSizing(origin) { - return Sizable[origin] ?? null; - } - const FormatDictionary = { - regex: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9", - email: "\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC", - url: "URL", - emoji: "emoji", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "\xE0k\xF3k\xF2 ISO", - date: "\u1ECDj\u1ECD\u0301 ISO", - time: "\xE0k\xF3k\xF2 ISO", - duration: "\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO", - ipv4: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv4", - ipv6: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv6", - cidrv4: "\xE0gb\xE8gb\xE8 IPv4", - cidrv6: "\xE0gb\xE8gb\xE8 IPv6", - base64: "\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64", - base64url: "\u1ECD\u0300r\u1ECD\u0300 base64url", - json_string: "\u1ECD\u0300r\u1ECD\u0300 JSON", - e164: "n\u1ECD\u0301mb\xE0 E.164", - jwt: "JWT", - template_literal: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9" - }; - const TypeDictionary = { - nan: "NaN", - number: "n\u1ECD\u0301mb\xE0", - array: "akop\u1ECD" - }; - return (issue3) => { - switch (issue3.code) { - case "invalid_type": { - const expected = TypeDictionary[issue3.expected] ?? issue3.expected; - const receivedType = parsedType2(issue3.input); - const received = TypeDictionary[receivedType] ?? receivedType; - if (/^[A-Z]/.test(issue3.expected)) { - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${issue3.expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; - } - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; - } - case "invalid_value": - if (issue3.values.length === 1) - return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${stringifyPrimitive2(issue3.values[0])}`; - return `\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${joinValues2(issue3.values, "|")}`; - case "too_big": { - const adj = issue3.inclusive ? "<=" : "<"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue3.origin ?? "iye"} ${sizing.verb} ${adj}${issue3.maximum} ${sizing.unit}`; - return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue3.maximum}`; - } - case "too_small": { - const adj = issue3.inclusive ? ">=" : ">"; - const sizing = getSizing(issue3.origin); - if (sizing) - return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue3.origin} ${sizing.verb} ${adj}${issue3.minimum} ${sizing.unit}`; - return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue3.minimum}`; - } - case "invalid_format": { - const _issue = issue3; - if (_issue.format === "starts_with") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${_issue.prefix}"`; - if (_issue.format === "ends_with") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${_issue.suffix}"`; - if (_issue.format === "includes") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${_issue.includes}"`; - if (_issue.format === "regex") - return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`; - return `A\u1E63\xEC\u1E63e: ${FormatDictionary[_issue.format] ?? issue3.format}`; - } - case "not_multiple_of": - return `N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${issue3.divisor}`; - case "unrecognized_keys": - return `B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${joinValues2(issue3.keys, ", ")}`; - case "invalid_key": - return `B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue3.origin}`; - case "invalid_union": - return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; - case "invalid_element": - return `Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue3.origin}`; - default: - return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; - } - }; -}; -function yo_default2() { - return { - localeError: error94() - }; -} - -// ../../node_modules/zod/v4/core/registries.js -var _a2; -var $output2 = /* @__PURE__ */ Symbol("ZodOutput"); -var $input2 = /* @__PURE__ */ Symbol("ZodInput"); -var $ZodRegistry2 = class { - constructor() { - this._map = /* @__PURE__ */ new WeakMap(); - this._idmap = /* @__PURE__ */ new Map(); - } - add(schema, ..._meta) { - const meta5 = _meta[0]; - this._map.set(schema, meta5); - if (meta5 && typeof meta5 === "object" && "id" in meta5) { - this._idmap.set(meta5.id, schema); - } - return this; - } - clear() { - this._map = /* @__PURE__ */ new WeakMap(); - this._idmap = /* @__PURE__ */ new Map(); - return this; - } - remove(schema) { - const meta5 = this._map.get(schema); - if (meta5 && typeof meta5 === "object" && "id" in meta5) { - this._idmap.delete(meta5.id); - } - this._map.delete(schema); - return this; - } - get(schema) { - const p = schema._zod.parent; - if (p) { - const pm = { ...this.get(p) ?? {} }; - delete pm.id; - const f = { ...pm, ...this._map.get(schema) }; - return Object.keys(f).length ? f : void 0; - } - return this._map.get(schema); - } - has(schema) { - return this._map.has(schema); - } -}; -function registry2() { - return new $ZodRegistry2(); -} -(_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry2()); -var globalRegistry2 = globalThis.__zod_globalRegistry; - -// ../../node_modules/zod/v4/core/api.js -// @__NO_SIDE_EFFECTS__ -function _string2(Class3, params) { - return new Class3({ - type: "string", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedString2(Class3, params) { - return new Class3({ - type: "string", - coerce: true, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _email2(Class3, params) { - return new Class3({ - type: "string", - format: "email", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _guid2(Class3, params) { - return new Class3({ - type: "string", - format: "guid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuid2(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv42(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v4", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv62(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v6", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uuidv72(Class3, params) { - return new Class3({ - type: "string", - format: "uuid", - check: "string_format", - abort: false, - version: "v7", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _url2(Class3, params) { - return new Class3({ - type: "string", - format: "url", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _emoji4(Class3, params) { - return new Class3({ - type: "string", - format: "emoji", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nanoid2(Class3, params) { - return new Class3({ - type: "string", - format: "nanoid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cuid3(Class3, params) { - return new Class3({ - type: "string", - format: "cuid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cuid22(Class3, params) { - return new Class3({ - type: "string", - format: "cuid2", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ulid2(Class3, params) { - return new Class3({ - type: "string", - format: "ulid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _xid2(Class3, params) { - return new Class3({ - type: "string", - format: "xid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ksuid2(Class3, params) { - return new Class3({ - type: "string", - format: "ksuid", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ipv42(Class3, params) { - return new Class3({ - type: "string", - format: "ipv4", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _ipv62(Class3, params) { - return new Class3({ - type: "string", - format: "ipv6", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _mac2(Class3, params) { - return new Class3({ - type: "string", - format: "mac", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cidrv42(Class3, params) { - return new Class3({ - type: "string", - format: "cidrv4", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _cidrv62(Class3, params) { - return new Class3({ - type: "string", - format: "cidrv6", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _base642(Class3, params) { - return new Class3({ - type: "string", - format: "base64", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _base64url2(Class3, params) { - return new Class3({ - type: "string", - format: "base64url", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _e1642(Class3, params) { - return new Class3({ - type: "string", - format: "e164", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _jwt2(Class3, params) { - return new Class3({ - type: "string", - format: "jwt", - check: "string_format", - abort: false, - ...normalizeParams2(params) - }); -} -var TimePrecision2 = { - Any: null, - Minute: -1, - Second: 0, - Millisecond: 3, - Microsecond: 6 -}; -// @__NO_SIDE_EFFECTS__ -function _isoDateTime2(Class3, params) { - return new Class3({ - type: "string", - format: "datetime", - check: "string_format", - offset: false, - local: false, - precision: null, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoDate2(Class3, params) { - return new Class3({ - type: "string", - format: "date", - check: "string_format", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoTime2(Class3, params) { - return new Class3({ - type: "string", - format: "time", - check: "string_format", - precision: null, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _isoDuration2(Class3, params) { - return new Class3({ - type: "string", - format: "duration", - check: "string_format", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _number2(Class3, params) { - return new Class3({ - type: "number", - checks: [], - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedNumber2(Class3, params) { - return new Class3({ - type: "number", - coerce: true, - checks: [], - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int2(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "safeint", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _float322(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "float32", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _float642(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "float64", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int322(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "int32", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uint322(Class3, params) { - return new Class3({ - type: "number", - check: "number_format", - abort: false, - format: "uint32", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _boolean2(Class3, params) { - return new Class3({ - type: "boolean", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedBoolean2(Class3, params) { - return new Class3({ - type: "boolean", - coerce: true, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _bigint2(Class3, params) { - return new Class3({ - type: "bigint", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedBigint2(Class3, params) { - return new Class3({ - type: "bigint", - coerce: true, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _int642(Class3, params) { - return new Class3({ - type: "bigint", - check: "bigint_format", - abort: false, - format: "int64", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uint642(Class3, params) { - return new Class3({ - type: "bigint", - check: "bigint_format", - abort: false, - format: "uint64", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _symbol2(Class3, params) { - return new Class3({ - type: "symbol", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _undefined5(Class3, params) { - return new Class3({ - type: "undefined", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _null5(Class3, params) { - return new Class3({ - type: "null", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _any2(Class3) { - return new Class3({ - type: "any" - }); -} -// @__NO_SIDE_EFFECTS__ -function _unknown2(Class3) { - return new Class3({ - type: "unknown" - }); -} -// @__NO_SIDE_EFFECTS__ -function _never2(Class3, params) { - return new Class3({ - type: "never", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _void3(Class3, params) { - return new Class3({ - type: "void", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _date2(Class3, params) { - return new Class3({ - type: "date", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _coercedDate2(Class3, params) { - return new Class3({ - type: "date", - coerce: true, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nan2(Class3, params) { - return new Class3({ - type: "nan", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _lt2(value, params) { - return new $ZodCheckLessThan2({ - check: "less_than", - ...normalizeParams2(params), - value, - inclusive: false - }); -} -// @__NO_SIDE_EFFECTS__ -function _lte2(value, params) { - return new $ZodCheckLessThan2({ - check: "less_than", - ...normalizeParams2(params), - value, - inclusive: true - }); -} -// @__NO_SIDE_EFFECTS__ -function _gt2(value, params) { - return new $ZodCheckGreaterThan2({ - check: "greater_than", - ...normalizeParams2(params), - value, - inclusive: false - }); -} -// @__NO_SIDE_EFFECTS__ -function _gte2(value, params) { - return new $ZodCheckGreaterThan2({ - check: "greater_than", - ...normalizeParams2(params), - value, - inclusive: true - }); -} -// @__NO_SIDE_EFFECTS__ -function _positive2(params) { - return /* @__PURE__ */ _gt2(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _negative2(params) { - return /* @__PURE__ */ _lt2(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _nonpositive2(params) { - return /* @__PURE__ */ _lte2(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _nonnegative2(params) { - return /* @__PURE__ */ _gte2(0, params); -} -// @__NO_SIDE_EFFECTS__ -function _multipleOf2(value, params) { - return new $ZodCheckMultipleOf2({ - check: "multiple_of", - ...normalizeParams2(params), - value - }); -} -// @__NO_SIDE_EFFECTS__ -function _maxSize2(maximum, params) { - return new $ZodCheckMaxSize2({ - check: "max_size", - ...normalizeParams2(params), - maximum - }); -} -// @__NO_SIDE_EFFECTS__ -function _minSize2(minimum, params) { - return new $ZodCheckMinSize2({ - check: "min_size", - ...normalizeParams2(params), - minimum - }); -} -// @__NO_SIDE_EFFECTS__ -function _size2(size, params) { - return new $ZodCheckSizeEquals2({ - check: "size_equals", - ...normalizeParams2(params), - size - }); -} -// @__NO_SIDE_EFFECTS__ -function _maxLength2(maximum, params) { - const ch = new $ZodCheckMaxLength2({ - check: "max_length", - ...normalizeParams2(params), - maximum - }); - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _minLength2(minimum, params) { - return new $ZodCheckMinLength2({ - check: "min_length", - ...normalizeParams2(params), - minimum - }); -} -// @__NO_SIDE_EFFECTS__ -function _length2(length, params) { - return new $ZodCheckLengthEquals2({ - check: "length_equals", - ...normalizeParams2(params), - length - }); -} -// @__NO_SIDE_EFFECTS__ -function _regex2(pattern, params) { - return new $ZodCheckRegex2({ - check: "string_format", - format: "regex", - ...normalizeParams2(params), - pattern - }); -} -// @__NO_SIDE_EFFECTS__ -function _lowercase2(params) { - return new $ZodCheckLowerCase2({ - check: "string_format", - format: "lowercase", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _uppercase2(params) { - return new $ZodCheckUpperCase2({ - check: "string_format", - format: "uppercase", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _includes2(includes, params) { - return new $ZodCheckIncludes2({ - check: "string_format", - format: "includes", - ...normalizeParams2(params), - includes - }); -} -// @__NO_SIDE_EFFECTS__ -function _startsWith2(prefix, params) { - return new $ZodCheckStartsWith2({ - check: "string_format", - format: "starts_with", - ...normalizeParams2(params), - prefix - }); -} -// @__NO_SIDE_EFFECTS__ -function _endsWith2(suffix, params) { - return new $ZodCheckEndsWith2({ - check: "string_format", - format: "ends_with", - ...normalizeParams2(params), - suffix - }); -} -// @__NO_SIDE_EFFECTS__ -function _property2(property, schema, params) { - return new $ZodCheckProperty2({ - check: "property", - property, - schema, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _mime2(types, params) { - return new $ZodCheckMimeType2({ - check: "mime_type", - mime: types, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _overwrite2(tx) { - return new $ZodCheckOverwrite2({ - check: "overwrite", - tx - }); -} -// @__NO_SIDE_EFFECTS__ -function _normalize2(form) { - return /* @__PURE__ */ _overwrite2((input) => input.normalize(form)); -} -// @__NO_SIDE_EFFECTS__ -function _trim2() { - return /* @__PURE__ */ _overwrite2((input) => input.trim()); -} -// @__NO_SIDE_EFFECTS__ -function _toLowerCase2() { - return /* @__PURE__ */ _overwrite2((input) => input.toLowerCase()); -} -// @__NO_SIDE_EFFECTS__ -function _toUpperCase2() { - return /* @__PURE__ */ _overwrite2((input) => input.toUpperCase()); -} -// @__NO_SIDE_EFFECTS__ -function _slugify2() { - return /* @__PURE__ */ _overwrite2((input) => slugify2(input)); -} -// @__NO_SIDE_EFFECTS__ -function _array2(Class3, element, params) { - return new Class3({ - type: "array", - element, - // get element() { - // return element; - // }, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _union2(Class3, options, params) { - return new Class3({ - type: "union", - options, - ...normalizeParams2(params) - }); -} -function _xor2(Class3, options, params) { - return new Class3({ - type: "union", - options, - inclusive: false, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _discriminatedUnion2(Class3, discriminator, options, params) { - return new Class3({ - type: "union", - options, - discriminator, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _intersection2(Class3, left, right) { - return new Class3({ - type: "intersection", - left, - right - }); -} -// @__NO_SIDE_EFFECTS__ -function _tuple2(Class3, items, _paramsOrRest, _params) { - const hasRest = _paramsOrRest instanceof $ZodType2; - const params = hasRest ? _params : _paramsOrRest; - const rest = hasRest ? _paramsOrRest : null; - return new Class3({ - type: "tuple", - items, - rest, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _record2(Class3, keyType, valueType, params) { - return new Class3({ - type: "record", - keyType, - valueType, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _map2(Class3, keyType, valueType, params) { - return new Class3({ - type: "map", - keyType, - valueType, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _set2(Class3, valueType, params) { - return new Class3({ - type: "set", - valueType, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _enum3(Class3, values, params) { - const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; - return new Class3({ - type: "enum", - entries, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _nativeEnum2(Class3, entries, params) { - return new Class3({ - type: "enum", - entries, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _literal2(Class3, value, params) { - return new Class3({ - type: "literal", - values: Array.isArray(value) ? value : [value], - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _file2(Class3, params) { - return new Class3({ - type: "file", - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _transform2(Class3, fn) { - return new Class3({ - type: "transform", - transform: fn - }); -} -// @__NO_SIDE_EFFECTS__ -function _optional2(Class3, innerType) { - return new Class3({ - type: "optional", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _nullable2(Class3, innerType) { - return new Class3({ - type: "nullable", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _default3(Class3, innerType, defaultValue) { - return new Class3({ - type: "default", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : shallowClone2(defaultValue); - } - }); -} -// @__NO_SIDE_EFFECTS__ -function _nonoptional2(Class3, innerType, params) { - return new Class3({ - type: "nonoptional", - innerType, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _success2(Class3, innerType) { - return new Class3({ - type: "success", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _catch3(Class3, innerType, catchValue) { - return new Class3({ - type: "catch", - innerType, - catchValue: typeof catchValue === "function" ? catchValue : () => catchValue - }); -} -// @__NO_SIDE_EFFECTS__ -function _pipe2(Class3, in_, out) { - return new Class3({ - type: "pipe", - in: in_, - out - }); -} -// @__NO_SIDE_EFFECTS__ -function _readonly2(Class3, innerType) { - return new Class3({ - type: "readonly", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _templateLiteral2(Class3, parts, params) { - return new Class3({ - type: "template_literal", - parts, - ...normalizeParams2(params) - }); -} -// @__NO_SIDE_EFFECTS__ -function _lazy2(Class3, getter) { - return new Class3({ - type: "lazy", - getter - }); -} -// @__NO_SIDE_EFFECTS__ -function _promise2(Class3, innerType) { - return new Class3({ - type: "promise", - innerType - }); -} -// @__NO_SIDE_EFFECTS__ -function _custom2(Class3, fn, _params) { - const norm = normalizeParams2(_params); - norm.abort ?? (norm.abort = true); - const schema = new Class3({ - type: "custom", - check: "custom", - fn, - ...norm - }); - return schema; -} -// @__NO_SIDE_EFFECTS__ -function _refine2(Class3, fn, _params) { - const schema = new Class3({ - type: "custom", - check: "custom", - fn, - ...normalizeParams2(_params) - }); - return schema; -} -// @__NO_SIDE_EFFECTS__ -function _superRefine2(fn) { - const ch = /* @__PURE__ */ _check2((payload) => { - payload.addIssue = (issue3) => { - if (typeof issue3 === "string") { - payload.issues.push(issue2(issue3, payload.value, ch._zod.def)); - } else { - const _issue = issue3; - if (_issue.fatal) - _issue.continue = false; - _issue.code ?? (_issue.code = "custom"); - _issue.input ?? (_issue.input = payload.value); - _issue.inst ?? (_issue.inst = ch); - _issue.continue ?? (_issue.continue = !ch._zod.def.abort); - payload.issues.push(issue2(_issue)); - } - }; - return fn(payload.value, payload); - }); - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _check2(fn, params) { - const ch = new $ZodCheck2({ - check: "custom", - ...normalizeParams2(params) - }); - ch._zod.check = fn; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function describe3(description) { - const ch = new $ZodCheck2({ check: "describe" }); - ch._zod.onattach = [ - (inst) => { - const existing = globalRegistry2.get(inst) ?? {}; - globalRegistry2.add(inst, { ...existing, description }); - } - ]; - ch._zod.check = () => { - }; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function meta3(metadata) { - const ch = new $ZodCheck2({ check: "meta" }); - ch._zod.onattach = [ - (inst) => { - const existing = globalRegistry2.get(inst) ?? {}; - globalRegistry2.add(inst, { ...existing, ...metadata }); - } - ]; - ch._zod.check = () => { - }; - return ch; -} -// @__NO_SIDE_EFFECTS__ -function _stringbool2(Classes, _params) { - const params = normalizeParams2(_params); - let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"]; - let falsyArray = params.falsy ?? ["false", "0", "no", "off", "n", "disabled"]; - if (params.case !== "sensitive") { - truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); - falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); - } - const truthySet = new Set(truthyArray); - const falsySet = new Set(falsyArray); - const _Codec = Classes.Codec ?? $ZodCodec2; - const _Boolean = Classes.Boolean ?? $ZodBoolean2; - const _String = Classes.String ?? $ZodString2; - const stringSchema = new _String({ type: "string", error: params.error }); - const booleanSchema = new _Boolean({ type: "boolean", error: params.error }); - const codec3 = new _Codec({ - type: "pipe", - in: stringSchema, - out: booleanSchema, - transform: ((input, payload) => { - let data = input; - if (params.case !== "sensitive") - data = data.toLowerCase(); - if (truthySet.has(data)) { - return true; - } else if (falsySet.has(data)) { - return false; - } else { - payload.issues.push({ - code: "invalid_value", - expected: "stringbool", - values: [...truthySet, ...falsySet], - input: payload.value, - inst: codec3, - continue: false - }); - return {}; - } - }), - reverseTransform: ((input, _payload) => { - if (input === true) { - return truthyArray[0] || "true"; - } else { - return falsyArray[0] || "false"; - } - }), - error: params.error - }); - return codec3; -} -// @__NO_SIDE_EFFECTS__ -function _stringFormat2(Class3, format, fnOrRegex, _params = {}) { - const params = normalizeParams2(_params); - const def = { - ...normalizeParams2(_params), - check: "string_format", - type: "string", - format, - fn: typeof fnOrRegex === "function" ? fnOrRegex : (val) => fnOrRegex.test(val), - ...params - }; - if (fnOrRegex instanceof RegExp) { - def.pattern = fnOrRegex; - } - const inst = new Class3(def); - return inst; -} - -// ../../node_modules/zod/v4/core/to-json-schema.js -function initializeContext2(params) { - let target = params?.target ?? "draft-2020-12"; - if (target === "draft-4") - target = "draft-04"; - if (target === "draft-7") - target = "draft-07"; - return { - processors: params.processors ?? {}, - metadataRegistry: params?.metadata ?? globalRegistry2, - target, - unrepresentable: params?.unrepresentable ?? "throw", - override: params?.override ?? (() => { - }), - io: params?.io ?? "output", - counter: 0, - seen: /* @__PURE__ */ new Map(), - cycles: params?.cycles ?? "ref", - reused: params?.reused ?? "inline", - external: params?.external ?? void 0 - }; -} -function process3(schema, ctx, _params = { path: [], schemaPath: [] }) { - var _a3; - const def = schema._zod.def; - const seen = ctx.seen.get(schema); - if (seen) { - seen.count++; - const isCycle = _params.schemaPath.includes(schema); - if (isCycle) { - seen.cycle = _params.path; - } - return seen.schema; - } - const result = { schema: {}, count: 1, cycle: void 0, path: _params.path }; - ctx.seen.set(schema, result); - const overrideSchema = schema._zod.toJSONSchema?.(); - if (overrideSchema) { - result.schema = overrideSchema; - } else { - const params = { - ..._params, - schemaPath: [..._params.schemaPath, schema], - path: _params.path - }; - if (schema._zod.processJSONSchema) { - schema._zod.processJSONSchema(ctx, result.schema, params); - } else { - const _json = result.schema; - const processor = ctx.processors[def.type]; - if (!processor) { - throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`); - } - processor(schema, ctx, _json, params); - } - const parent = schema._zod.parent; - if (parent) { - if (!result.ref) - result.ref = parent; - process3(parent, ctx, params); - ctx.seen.get(parent).isParent = true; - } - } - const meta5 = ctx.metadataRegistry.get(schema); - if (meta5) - Object.assign(result.schema, meta5); - if (ctx.io === "input" && isTransforming2(schema)) { - delete result.schema.examples; - delete result.schema.default; - } - if (ctx.io === "input" && result.schema._prefault) - (_a3 = result.schema).default ?? (_a3.default = result.schema._prefault); - delete result.schema._prefault; - const _result = ctx.seen.get(schema); - return _result.schema; -} -function extractDefs2(ctx, schema) { - const root = ctx.seen.get(schema); - if (!root) - throw new Error("Unprocessed schema. This is a bug in Zod."); - const idToSchema = /* @__PURE__ */ new Map(); - for (const entry of ctx.seen.entries()) { - const id = ctx.metadataRegistry.get(entry[0])?.id; - if (id) { - const existing = idToSchema.get(id); - if (existing && existing !== entry[0]) { - throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`); - } - idToSchema.set(id, entry[0]); - } - } - const makeURI = (entry) => { - const defsSegment = ctx.target === "draft-2020-12" ? "$defs" : "definitions"; - if (ctx.external) { - const externalId = ctx.external.registry.get(entry[0])?.id; - const uriGenerator = ctx.external.uri ?? ((id2) => id2); - if (externalId) { - return { ref: uriGenerator(externalId) }; - } - const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`; - entry[1].defId = id; - return { defId: id, ref: `${uriGenerator("__shared")}#/${defsSegment}/${id}` }; - } - if (entry[1] === root) { - return { ref: "#" }; - } - const uriPrefix = `#`; - const defUriPrefix = `${uriPrefix}/${defsSegment}/`; - const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`; - return { defId, ref: defUriPrefix + defId }; - }; - const extractToDef = (entry) => { - if (entry[1].schema.$ref) { - return; - } - const seen = entry[1]; - const { ref, defId } = makeURI(entry); - seen.def = { ...seen.schema }; - if (defId) - seen.defId = defId; - const schema2 = seen.schema; - for (const key in schema2) { - delete schema2[key]; - } - schema2.$ref = ref; - }; - if (ctx.cycles === "throw") { - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (seen.cycle) { - throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/ - -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); - } - } - } - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (schema === entry[0]) { - extractToDef(entry); - continue; - } - if (ctx.external) { - const ext = ctx.external.registry.get(entry[0])?.id; - if (schema !== entry[0] && ext) { - extractToDef(entry); - continue; - } - } - const id = ctx.metadataRegistry.get(entry[0])?.id; - if (id) { - extractToDef(entry); - continue; - } - if (seen.cycle) { - extractToDef(entry); - continue; - } - if (seen.count > 1) { - if (ctx.reused === "ref") { - extractToDef(entry); - continue; - } - } - } -} -function finalize2(ctx, schema) { - const root = ctx.seen.get(schema); - if (!root) - throw new Error("Unprocessed schema. This is a bug in Zod."); - const flattenRef = (zodSchema) => { - const seen = ctx.seen.get(zodSchema); - if (seen.ref === null) - return; - const schema2 = seen.def ?? seen.schema; - const _cached = { ...schema2 }; - const ref = seen.ref; - seen.ref = null; - if (ref) { - flattenRef(ref); - const refSeen = ctx.seen.get(ref); - const refSchema = refSeen.schema; - if (refSchema.$ref && (ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0")) { - schema2.allOf = schema2.allOf ?? []; - schema2.allOf.push(refSchema); - } else { - Object.assign(schema2, refSchema); - } - Object.assign(schema2, _cached); - const isParentRef = zodSchema._zod.parent === ref; - if (isParentRef) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (!(key in _cached)) { - delete schema2[key]; - } - } - } - if (refSchema.$ref && refSeen.def) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (key in refSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(refSeen.def[key])) { - delete schema2[key]; - } - } - } - } - const parent = zodSchema._zod.parent; - if (parent && parent !== ref) { - flattenRef(parent); - const parentSeen = ctx.seen.get(parent); - if (parentSeen?.schema.$ref) { - schema2.$ref = parentSeen.schema.$ref; - if (parentSeen.def) { - for (const key in schema2) { - if (key === "$ref" || key === "allOf") - continue; - if (key in parentSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(parentSeen.def[key])) { - delete schema2[key]; - } - } - } - } - } - ctx.override({ - zodSchema, - jsonSchema: schema2, - path: seen.path ?? [] - }); - }; - for (const entry of [...ctx.seen.entries()].reverse()) { - flattenRef(entry[0]); - } - const result = {}; - if (ctx.target === "draft-2020-12") { - result.$schema = "https://json-schema.org/draft/2020-12/schema"; - } else if (ctx.target === "draft-07") { - result.$schema = "http://json-schema.org/draft-07/schema#"; - } else if (ctx.target === "draft-04") { - result.$schema = "http://json-schema.org/draft-04/schema#"; - } else if (ctx.target === "openapi-3.0") { - } else { - } - if (ctx.external?.uri) { - const id = ctx.external.registry.get(schema)?.id; - if (!id) - throw new Error("Schema is missing an `id` property"); - result.$id = ctx.external.uri(id); - } - Object.assign(result, root.def ?? root.schema); - const defs = ctx.external?.defs ?? {}; - for (const entry of ctx.seen.entries()) { - const seen = entry[1]; - if (seen.def && seen.defId) { - defs[seen.defId] = seen.def; - } - } - if (ctx.external) { - } else { - if (Object.keys(defs).length > 0) { - if (ctx.target === "draft-2020-12") { - result.$defs = defs; - } else { - result.definitions = defs; - } - } - } - try { - const finalized = JSON.parse(JSON.stringify(result)); - Object.defineProperty(finalized, "~standard", { - value: { - ...schema["~standard"], - jsonSchema: { - input: createStandardJSONSchemaMethod2(schema, "input", ctx.processors), - output: createStandardJSONSchemaMethod2(schema, "output", ctx.processors) - } - }, - enumerable: false, - writable: false - }); - return finalized; - } catch (_err) { - throw new Error("Error converting schema to JSON."); - } -} -function isTransforming2(_schema, _ctx) { - const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() }; - if (ctx.seen.has(_schema)) - return false; - ctx.seen.add(_schema); - const def = _schema._zod.def; - if (def.type === "transform") - return true; - if (def.type === "array") - return isTransforming2(def.element, ctx); - if (def.type === "set") - return isTransforming2(def.valueType, ctx); - if (def.type === "lazy") - return isTransforming2(def.getter(), ctx); - if (def.type === "promise" || def.type === "optional" || def.type === "nonoptional" || def.type === "nullable" || def.type === "readonly" || def.type === "default" || def.type === "prefault") { - return isTransforming2(def.innerType, ctx); - } - if (def.type === "intersection") { - return isTransforming2(def.left, ctx) || isTransforming2(def.right, ctx); - } - if (def.type === "record" || def.type === "map") { - return isTransforming2(def.keyType, ctx) || isTransforming2(def.valueType, ctx); - } - if (def.type === "pipe") { - return isTransforming2(def.in, ctx) || isTransforming2(def.out, ctx); - } - if (def.type === "object") { - for (const key in def.shape) { - if (isTransforming2(def.shape[key], ctx)) - return true; - } - return false; - } - if (def.type === "union") { - for (const option of def.options) { - if (isTransforming2(option, ctx)) - return true; - } - return false; - } - if (def.type === "tuple") { - for (const item of def.items) { - if (isTransforming2(item, ctx)) - return true; - } - if (def.rest && isTransforming2(def.rest, ctx)) - return true; - return false; - } - return false; -} -var createToJSONSchemaMethod2 = (schema, processors = {}) => (params) => { - const ctx = initializeContext2({ ...params, processors }); - process3(schema, ctx); - extractDefs2(ctx, schema); - return finalize2(ctx, schema); -}; -var createStandardJSONSchemaMethod2 = (schema, io, processors = {}) => (params) => { - const { libraryOptions, target } = params ?? {}; - const ctx = initializeContext2({ ...libraryOptions ?? {}, target, io, processors }); - process3(schema, ctx); - extractDefs2(ctx, schema); - return finalize2(ctx, schema); -}; - -// ../../node_modules/zod/v4/core/json-schema-processors.js -var formatMap2 = { - guid: "uuid", - url: "uri", - datetime: "date-time", - json_string: "json-string", - regex: "" - // do not set -}; -var stringProcessor2 = (schema, ctx, _json, _params) => { - const json3 = _json; - json3.type = "string"; - const { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag; - if (typeof minimum === "number") - json3.minLength = minimum; - if (typeof maximum === "number") - json3.maxLength = maximum; - if (format) { - json3.format = formatMap2[format] ?? format; - if (json3.format === "") - delete json3.format; - if (format === "time") { - delete json3.format; - } - } - if (contentEncoding) - json3.contentEncoding = contentEncoding; - if (patterns && patterns.size > 0) { - const regexes = [...patterns]; - if (regexes.length === 1) - json3.pattern = regexes[0].source; - else if (regexes.length > 1) { - json3.allOf = [ - ...regexes.map((regex) => ({ - ...ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0" ? { type: "string" } : {}, - pattern: regex.source - })) - ]; - } - } -}; -var numberProcessor2 = (schema, ctx, _json, _params) => { - const json3 = _json; - const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag; - if (typeof format === "string" && format.includes("int")) - json3.type = "integer"; - else - json3.type = "number"; - if (typeof exclusiveMinimum === "number") { - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.minimum = exclusiveMinimum; - json3.exclusiveMinimum = true; - } else { - json3.exclusiveMinimum = exclusiveMinimum; - } - } - if (typeof minimum === "number") { - json3.minimum = minimum; - if (typeof exclusiveMinimum === "number" && ctx.target !== "draft-04") { - if (exclusiveMinimum >= minimum) - delete json3.minimum; - else - delete json3.exclusiveMinimum; - } - } - if (typeof exclusiveMaximum === "number") { - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.maximum = exclusiveMaximum; - json3.exclusiveMaximum = true; - } else { - json3.exclusiveMaximum = exclusiveMaximum; - } - } - if (typeof maximum === "number") { - json3.maximum = maximum; - if (typeof exclusiveMaximum === "number" && ctx.target !== "draft-04") { - if (exclusiveMaximum <= maximum) - delete json3.maximum; - else - delete json3.exclusiveMaximum; - } - } - if (typeof multipleOf === "number") - json3.multipleOf = multipleOf; -}; -var booleanProcessor2 = (_schema, _ctx, json3, _params) => { - json3.type = "boolean"; -}; -var bigintProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("BigInt cannot be represented in JSON Schema"); - } -}; -var symbolProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Symbols cannot be represented in JSON Schema"); - } -}; -var nullProcessor2 = (_schema, ctx, json3, _params) => { - if (ctx.target === "openapi-3.0") { - json3.type = "string"; - json3.nullable = true; - json3.enum = [null]; - } else { - json3.type = "null"; - } -}; -var undefinedProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Undefined cannot be represented in JSON Schema"); - } -}; -var voidProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Void cannot be represented in JSON Schema"); - } -}; -var neverProcessor2 = (_schema, _ctx, json3, _params) => { - json3.not = {}; -}; -var anyProcessor2 = (_schema, _ctx, _json, _params) => { -}; -var unknownProcessor2 = (_schema, _ctx, _json, _params) => { -}; -var dateProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Date cannot be represented in JSON Schema"); - } -}; -var enumProcessor2 = (schema, _ctx, json3, _params) => { - const def = schema._zod.def; - const values = getEnumValues2(def.entries); - if (values.every((v) => typeof v === "number")) - json3.type = "number"; - if (values.every((v) => typeof v === "string")) - json3.type = "string"; - json3.enum = values; -}; -var literalProcessor2 = (schema, ctx, json3, _params) => { - const def = schema._zod.def; - const vals = []; - for (const val of def.values) { - if (val === void 0) { - if (ctx.unrepresentable === "throw") { - throw new Error("Literal `undefined` cannot be represented in JSON Schema"); - } else { - } - } else if (typeof val === "bigint") { - if (ctx.unrepresentable === "throw") { - throw new Error("BigInt literals cannot be represented in JSON Schema"); - } else { - vals.push(Number(val)); - } - } else { - vals.push(val); - } - } - if (vals.length === 0) { - } else if (vals.length === 1) { - const val = vals[0]; - json3.type = val === null ? "null" : typeof val; - if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { - json3.enum = [val]; - } else { - json3.const = val; - } - } else { - if (vals.every((v) => typeof v === "number")) - json3.type = "number"; - if (vals.every((v) => typeof v === "string")) - json3.type = "string"; - if (vals.every((v) => typeof v === "boolean")) - json3.type = "boolean"; - if (vals.every((v) => v === null)) - json3.type = "null"; - json3.enum = vals; - } -}; -var nanProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("NaN cannot be represented in JSON Schema"); - } -}; -var templateLiteralProcessor2 = (schema, _ctx, json3, _params) => { - const _json = json3; - const pattern = schema._zod.pattern; - if (!pattern) - throw new Error("Pattern not found in template literal"); - _json.type = "string"; - _json.pattern = pattern.source; -}; -var fileProcessor2 = (schema, _ctx, json3, _params) => { - const _json = json3; - const file3 = { - type: "string", - format: "binary", - contentEncoding: "binary" - }; - const { minimum, maximum, mime } = schema._zod.bag; - if (minimum !== void 0) - file3.minLength = minimum; - if (maximum !== void 0) - file3.maxLength = maximum; - if (mime) { - if (mime.length === 1) { - file3.contentMediaType = mime[0]; - Object.assign(_json, file3); - } else { - Object.assign(_json, file3); - _json.anyOf = mime.map((m) => ({ contentMediaType: m })); - } - } else { - Object.assign(_json, file3); - } -}; -var successProcessor2 = (_schema, _ctx, json3, _params) => { - json3.type = "boolean"; -}; -var customProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Custom types cannot be represented in JSON Schema"); - } -}; -var functionProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Function types cannot be represented in JSON Schema"); - } -}; -var transformProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Transforms cannot be represented in JSON Schema"); - } -}; -var mapProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Map cannot be represented in JSON Schema"); - } -}; -var setProcessor2 = (_schema, ctx, _json, _params) => { - if (ctx.unrepresentable === "throw") { - throw new Error("Set cannot be represented in JSON Schema"); - } -}; -var arrayProcessor2 = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - const { minimum, maximum } = schema._zod.bag; - if (typeof minimum === "number") - json3.minItems = minimum; - if (typeof maximum === "number") - json3.maxItems = maximum; - json3.type = "array"; - json3.items = process3(def.element, ctx, { ...params, path: [...params.path, "items"] }); -}; -var objectProcessor2 = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "object"; - json3.properties = {}; - const shape = def.shape; - for (const key in shape) { - json3.properties[key] = process3(shape[key], ctx, { - ...params, - path: [...params.path, "properties", key] - }); - } - const allKeys = new Set(Object.keys(shape)); - const requiredKeys = new Set([...allKeys].filter((key) => { - const v = def.shape[key]._zod; - if (ctx.io === "input") { - return v.optin === void 0; - } else { - return v.optout === void 0; - } - })); - if (requiredKeys.size > 0) { - json3.required = Array.from(requiredKeys); - } - if (def.catchall?._zod.def.type === "never") { - json3.additionalProperties = false; - } else if (!def.catchall) { - if (ctx.io === "output") - json3.additionalProperties = false; - } else if (def.catchall) { - json3.additionalProperties = process3(def.catchall, ctx, { - ...params, - path: [...params.path, "additionalProperties"] - }); - } -}; -var unionProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const isExclusive = def.inclusive === false; - const options = def.options.map((x, i) => process3(x, ctx, { - ...params, - path: [...params.path, isExclusive ? "oneOf" : "anyOf", i] - })); - if (isExclusive) { - json3.oneOf = options; - } else { - json3.anyOf = options; - } -}; -var intersectionProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const a = process3(def.left, ctx, { - ...params, - path: [...params.path, "allOf", 0] - }); - const b = process3(def.right, ctx, { - ...params, - path: [...params.path, "allOf", 1] - }); - const isSimpleIntersection = (val) => "allOf" in val && Object.keys(val).length === 1; - const allOf = [ - ...isSimpleIntersection(a) ? a.allOf : [a], - ...isSimpleIntersection(b) ? b.allOf : [b] - ]; - json3.allOf = allOf; -}; -var tupleProcessor2 = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "array"; - const prefixPath = ctx.target === "draft-2020-12" ? "prefixItems" : "items"; - const restPath = ctx.target === "draft-2020-12" ? "items" : ctx.target === "openapi-3.0" ? "items" : "additionalItems"; - const prefixItems = def.items.map((x, i) => process3(x, ctx, { - ...params, - path: [...params.path, prefixPath, i] - })); - const rest = def.rest ? process3(def.rest, ctx, { - ...params, - path: [...params.path, restPath, ...ctx.target === "openapi-3.0" ? [def.items.length] : []] - }) : null; - if (ctx.target === "draft-2020-12") { - json3.prefixItems = prefixItems; - if (rest) { - json3.items = rest; - } - } else if (ctx.target === "openapi-3.0") { - json3.items = { - anyOf: prefixItems - }; - if (rest) { - json3.items.anyOf.push(rest); - } - json3.minItems = prefixItems.length; - if (!rest) { - json3.maxItems = prefixItems.length; - } - } else { - json3.items = prefixItems; - if (rest) { - json3.additionalItems = rest; - } - } - const { minimum, maximum } = schema._zod.bag; - if (typeof minimum === "number") - json3.minItems = minimum; - if (typeof maximum === "number") - json3.maxItems = maximum; -}; -var recordProcessor2 = (schema, ctx, _json, params) => { - const json3 = _json; - const def = schema._zod.def; - json3.type = "object"; - const keyType = def.keyType; - const keyBag = keyType._zod.bag; - const patterns = keyBag?.patterns; - if (def.mode === "loose" && patterns && patterns.size > 0) { - const valueSchema = process3(def.valueType, ctx, { - ...params, - path: [...params.path, "patternProperties", "*"] - }); - json3.patternProperties = {}; - for (const pattern of patterns) { - json3.patternProperties[pattern.source] = valueSchema; - } - } else { - if (ctx.target === "draft-07" || ctx.target === "draft-2020-12") { - json3.propertyNames = process3(def.keyType, ctx, { - ...params, - path: [...params.path, "propertyNames"] - }); - } - json3.additionalProperties = process3(def.valueType, ctx, { - ...params, - path: [...params.path, "additionalProperties"] - }); - } - const keyValues = keyType._zod.values; - if (keyValues) { - const validKeyValues = [...keyValues].filter((v) => typeof v === "string" || typeof v === "number"); - if (validKeyValues.length > 0) { - json3.required = validKeyValues; - } - } -}; -var nullableProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - const inner = process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - if (ctx.target === "openapi-3.0") { - seen.ref = def.innerType; - json3.nullable = true; - } else { - json3.anyOf = [inner, { type: "null" }]; - } -}; -var nonoptionalProcessor2 = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var defaultProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - json3.default = JSON.parse(JSON.stringify(def.defaultValue)); -}; -var prefaultProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - if (ctx.io === "input") - json3._prefault = JSON.parse(JSON.stringify(def.defaultValue)); -}; -var catchProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - let catchValue; - try { - catchValue = def.catchValue(void 0); - } catch { - throw new Error("Dynamic catch values are not supported in JSON Schema"); - } - json3.default = catchValue; -}; -var pipeProcessor2 = (schema, ctx, _json, params) => { - const def = schema._zod.def; - const innerType = ctx.io === "input" ? def.in._zod.def.type === "transform" ? def.out : def.in : def.out; - process3(innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = innerType; -}; -var readonlyProcessor2 = (schema, ctx, json3, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; - json3.readOnly = true; -}; -var promiseProcessor2 = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var optionalProcessor2 = (schema, ctx, _json, params) => { - const def = schema._zod.def; - process3(def.innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = def.innerType; -}; -var lazyProcessor2 = (schema, ctx, _json, params) => { - const innerType = schema._zod.innerType; - process3(innerType, ctx, params); - const seen = ctx.seen.get(schema); - seen.ref = innerType; -}; -var allProcessors2 = { - string: stringProcessor2, - number: numberProcessor2, - boolean: booleanProcessor2, - bigint: bigintProcessor2, - symbol: symbolProcessor2, - null: nullProcessor2, - undefined: undefinedProcessor2, - void: voidProcessor2, - never: neverProcessor2, - any: anyProcessor2, - unknown: unknownProcessor2, - date: dateProcessor2, - enum: enumProcessor2, - literal: literalProcessor2, - nan: nanProcessor2, - template_literal: templateLiteralProcessor2, - file: fileProcessor2, - success: successProcessor2, - custom: customProcessor2, - function: functionProcessor2, - transform: transformProcessor2, - map: mapProcessor2, - set: setProcessor2, - array: arrayProcessor2, - object: objectProcessor2, - union: unionProcessor2, - intersection: intersectionProcessor2, - tuple: tupleProcessor2, - record: recordProcessor2, - nullable: nullableProcessor2, - nonoptional: nonoptionalProcessor2, - default: defaultProcessor2, - prefault: prefaultProcessor2, - catch: catchProcessor2, - pipe: pipeProcessor2, - readonly: readonlyProcessor2, - promise: promiseProcessor2, - optional: optionalProcessor2, - lazy: lazyProcessor2 -}; -function toJSONSchema2(input, params) { - if ("_idmap" in input) { - const registry3 = input; - const ctx2 = initializeContext2({ ...params, processors: allProcessors2 }); - const defs = {}; - for (const entry of registry3._idmap.entries()) { - const [_, schema] = entry; - process3(schema, ctx2); - } - const schemas = {}; - const external = { - registry: registry3, - uri: params?.uri, - defs - }; - ctx2.external = external; - for (const entry of registry3._idmap.entries()) { - const [key, schema] = entry; - extractDefs2(ctx2, schema); - schemas[key] = finalize2(ctx2, schema); - } - if (Object.keys(defs).length > 0) { - const defsSegment = ctx2.target === "draft-2020-12" ? "$defs" : "definitions"; - schemas.__shared = { - [defsSegment]: defs - }; - } - return { schemas }; - } - const ctx = initializeContext2({ ...params, processors: allProcessors2 }); - process3(input, ctx); - extractDefs2(ctx, input); - return finalize2(ctx, input); -} - -// ../../node_modules/zod/v4/core/json-schema-generator.js -var JSONSchemaGenerator2 = class { - /** @deprecated Access via ctx instead */ - get metadataRegistry() { - return this.ctx.metadataRegistry; - } - /** @deprecated Access via ctx instead */ - get target() { - return this.ctx.target; - } - /** @deprecated Access via ctx instead */ - get unrepresentable() { - return this.ctx.unrepresentable; - } - /** @deprecated Access via ctx instead */ - get override() { - return this.ctx.override; - } - /** @deprecated Access via ctx instead */ - get io() { - return this.ctx.io; - } - /** @deprecated Access via ctx instead */ - get counter() { - return this.ctx.counter; - } - set counter(value) { - this.ctx.counter = value; - } - /** @deprecated Access via ctx instead */ - get seen() { - return this.ctx.seen; - } - constructor(params) { - let normalizedTarget = params?.target ?? "draft-2020-12"; - if (normalizedTarget === "draft-4") - normalizedTarget = "draft-04"; - if (normalizedTarget === "draft-7") - normalizedTarget = "draft-07"; - this.ctx = initializeContext2({ - processors: allProcessors2, - target: normalizedTarget, - ...params?.metadata && { metadata: params.metadata }, - ...params?.unrepresentable && { unrepresentable: params.unrepresentable }, - ...params?.override && { override: params.override }, - ...params?.io && { io: params.io } - }); - } - /** - * Process a schema to prepare it for JSON Schema generation. - * This must be called before emit(). - */ - process(schema, _params = { path: [], schemaPath: [] }) { - return process3(schema, this.ctx, _params); - } - /** - * Emit the final JSON Schema after processing. - * Must call process() first. - */ - emit(schema, _params) { - if (_params) { - if (_params.cycles) - this.ctx.cycles = _params.cycles; - if (_params.reused) - this.ctx.reused = _params.reused; - if (_params.external) - this.ctx.external = _params.external; - } - extractDefs2(this.ctx, schema); - const result = finalize2(this.ctx, schema); - const { "~standard": _, ...plainResult } = result; - return plainResult; - } -}; - -// ../../node_modules/zod/v4/core/json-schema.js -var json_schema_exports2 = {}; - -// ../../node_modules/zod/v4/classic/schemas.js -var schemas_exports4 = {}; -__export(schemas_exports4, { - ZodAny: () => ZodAny2, - ZodArray: () => ZodArray2, - ZodBase64: () => ZodBase642, - ZodBase64URL: () => ZodBase64URL2, - ZodBigInt: () => ZodBigInt2, - ZodBigIntFormat: () => ZodBigIntFormat2, - ZodBoolean: () => ZodBoolean2, - ZodCIDRv4: () => ZodCIDRv42, - ZodCIDRv6: () => ZodCIDRv62, - ZodCUID: () => ZodCUID3, - ZodCUID2: () => ZodCUID22, - ZodCatch: () => ZodCatch2, - ZodCodec: () => ZodCodec2, - ZodCustom: () => ZodCustom2, - ZodCustomStringFormat: () => ZodCustomStringFormat2, - ZodDate: () => ZodDate2, - ZodDefault: () => ZodDefault2, - ZodDiscriminatedUnion: () => ZodDiscriminatedUnion2, - ZodE164: () => ZodE1642, - ZodEmail: () => ZodEmail2, - ZodEmoji: () => ZodEmoji2, - ZodEnum: () => ZodEnum2, - ZodExactOptional: () => ZodExactOptional2, - ZodFile: () => ZodFile2, - ZodFunction: () => ZodFunction2, - ZodGUID: () => ZodGUID2, - ZodIPv4: () => ZodIPv42, - ZodIPv6: () => ZodIPv62, - ZodIntersection: () => ZodIntersection2, - ZodJWT: () => ZodJWT2, - ZodKSUID: () => ZodKSUID2, - ZodLazy: () => ZodLazy2, - ZodLiteral: () => ZodLiteral2, - ZodMAC: () => ZodMAC2, - ZodMap: () => ZodMap2, - ZodNaN: () => ZodNaN2, - ZodNanoID: () => ZodNanoID2, - ZodNever: () => ZodNever2, - ZodNonOptional: () => ZodNonOptional2, - ZodNull: () => ZodNull2, - ZodNullable: () => ZodNullable2, - ZodNumber: () => ZodNumber2, - ZodNumberFormat: () => ZodNumberFormat2, - ZodObject: () => ZodObject2, - ZodOptional: () => ZodOptional2, - ZodPipe: () => ZodPipe2, - ZodPrefault: () => ZodPrefault2, - ZodPromise: () => ZodPromise2, - ZodReadonly: () => ZodReadonly2, - ZodRecord: () => ZodRecord2, - ZodSet: () => ZodSet2, - ZodString: () => ZodString2, - ZodStringFormat: () => ZodStringFormat2, - ZodSuccess: () => ZodSuccess2, - ZodSymbol: () => ZodSymbol2, - ZodTemplateLiteral: () => ZodTemplateLiteral2, - ZodTransform: () => ZodTransform2, - ZodTuple: () => ZodTuple2, - ZodType: () => ZodType2, - ZodULID: () => ZodULID2, - ZodURL: () => ZodURL2, - ZodUUID: () => ZodUUID2, - ZodUndefined: () => ZodUndefined2, - ZodUnion: () => ZodUnion2, - ZodUnknown: () => ZodUnknown2, - ZodVoid: () => ZodVoid2, - ZodXID: () => ZodXID2, - ZodXor: () => ZodXor2, - _ZodString: () => _ZodString2, - _default: () => _default4, - _function: () => _function2, - any: () => any2, - array: () => array2, - base64: () => base644, - base64url: () => base64url4, - bigint: () => bigint5, - boolean: () => boolean5, - catch: () => _catch4, - check: () => check2, - cidrv4: () => cidrv44, - cidrv6: () => cidrv64, - codec: () => codec2, - cuid: () => cuid5, - cuid2: () => cuid24, - custom: () => custom2, - date: () => date7, - describe: () => describe4, - discriminatedUnion: () => discriminatedUnion2, - e164: () => e1644, - email: () => email4, - emoji: () => emoji4, - enum: () => _enum4, - exactOptional: () => exactOptional2, - file: () => file2, - float32: () => float322, - float64: () => float642, - function: () => _function2, - guid: () => guid4, - hash: () => hash2, - hex: () => hex4, - hostname: () => hostname4, - httpUrl: () => httpUrl2, - instanceof: () => _instanceof2, - int: () => int2, - int32: () => int322, - int64: () => int642, - intersection: () => intersection2, - ipv4: () => ipv44, - ipv6: () => ipv64, - json: () => json2, - jwt: () => jwt2, - keyof: () => keyof2, - ksuid: () => ksuid4, - lazy: () => lazy2, - literal: () => literal2, - looseObject: () => looseObject2, - looseRecord: () => looseRecord2, - mac: () => mac4, - map: () => map2, - meta: () => meta4, - nan: () => nan2, - nanoid: () => nanoid4, - nativeEnum: () => nativeEnum2, - never: () => never2, - nonoptional: () => nonoptional2, - null: () => _null6, - nullable: () => nullable2, - nullish: () => nullish4, - number: () => number5, - object: () => object2, - optional: () => optional2, - partialRecord: () => partialRecord2, - pipe: () => pipe2, - prefault: () => prefault2, - preprocess: () => preprocess2, - promise: () => promise2, - readonly: () => readonly2, - record: () => record2, - refine: () => refine2, - set: () => set2, - strictObject: () => strictObject2, - string: () => string5, - stringFormat: () => stringFormat2, - stringbool: () => stringbool2, - success: () => success2, - superRefine: () => superRefine2, - symbol: () => symbol2, - templateLiteral: () => templateLiteral2, - transform: () => transform2, - tuple: () => tuple2, - uint32: () => uint322, - uint64: () => uint642, - ulid: () => ulid4, - undefined: () => _undefined6, - union: () => union2, - unknown: () => unknown2, - url: () => url2, - uuid: () => uuid5, - uuidv4: () => uuidv42, - uuidv6: () => uuidv62, - uuidv7: () => uuidv72, - void: () => _void4, - xid: () => xid4, - xor: () => xor2 -}); - -// ../../node_modules/zod/v4/classic/checks.js -var checks_exports4 = {}; -__export(checks_exports4, { - endsWith: () => _endsWith2, - gt: () => _gt2, - gte: () => _gte2, - includes: () => _includes2, - length: () => _length2, - lowercase: () => _lowercase2, - lt: () => _lt2, - lte: () => _lte2, - maxLength: () => _maxLength2, - maxSize: () => _maxSize2, - mime: () => _mime2, - minLength: () => _minLength2, - minSize: () => _minSize2, - multipleOf: () => _multipleOf2, - negative: () => _negative2, - nonnegative: () => _nonnegative2, - nonpositive: () => _nonpositive2, - normalize: () => _normalize2, - overwrite: () => _overwrite2, - positive: () => _positive2, - property: () => _property2, - regex: () => _regex2, - size: () => _size2, - slugify: () => _slugify2, - startsWith: () => _startsWith2, - toLowerCase: () => _toLowerCase2, - toUpperCase: () => _toUpperCase2, - trim: () => _trim2, - uppercase: () => _uppercase2 -}); - -// ../../node_modules/zod/v4/classic/iso.js -var iso_exports2 = {}; -__export(iso_exports2, { - ZodISODate: () => ZodISODate2, - ZodISODateTime: () => ZodISODateTime2, - ZodISODuration: () => ZodISODuration2, - ZodISOTime: () => ZodISOTime2, - date: () => date6, - datetime: () => datetime4, - duration: () => duration4, - time: () => time4 -}); -var ZodISODateTime2 = /* @__PURE__ */ $constructor2("ZodISODateTime", (inst, def) => { - $ZodISODateTime2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function datetime4(params) { - return _isoDateTime2(ZodISODateTime2, params); -} -var ZodISODate2 = /* @__PURE__ */ $constructor2("ZodISODate", (inst, def) => { - $ZodISODate2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function date6(params) { - return _isoDate2(ZodISODate2, params); -} -var ZodISOTime2 = /* @__PURE__ */ $constructor2("ZodISOTime", (inst, def) => { - $ZodISOTime2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function time4(params) { - return _isoTime2(ZodISOTime2, params); -} -var ZodISODuration2 = /* @__PURE__ */ $constructor2("ZodISODuration", (inst, def) => { - $ZodISODuration2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function duration4(params) { - return _isoDuration2(ZodISODuration2, params); -} - -// ../../node_modules/zod/v4/classic/errors.js -var initializer4 = (inst, issues) => { - $ZodError2.init(inst, issues); - inst.name = "ZodError"; - Object.defineProperties(inst, { - format: { - value: (mapper) => formatError2(inst, mapper) - // enumerable: false, - }, - flatten: { - value: (mapper) => flattenError2(inst, mapper) - // enumerable: false, - }, - addIssue: { - value: (issue3) => { - inst.issues.push(issue3); - inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer2, 2); - } - // enumerable: false, - }, - addIssues: { - value: (issues2) => { - inst.issues.push(...issues2); - inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer2, 2); - } - // enumerable: false, - }, - isEmpty: { - get() { - return inst.issues.length === 0; - } - // enumerable: false, - } - }); -}; -var ZodError2 = $constructor2("ZodError", initializer4); -var ZodRealError2 = $constructor2("ZodError", initializer4, { - Parent: Error -}); - -// ../../node_modules/zod/v4/classic/parse.js -var parse4 = /* @__PURE__ */ _parse2(ZodRealError2); -var parseAsync4 = /* @__PURE__ */ _parseAsync2(ZodRealError2); -var safeParse4 = /* @__PURE__ */ _safeParse2(ZodRealError2); -var safeParseAsync4 = /* @__PURE__ */ _safeParseAsync2(ZodRealError2); -var encode4 = /* @__PURE__ */ _encode2(ZodRealError2); -var decode4 = /* @__PURE__ */ _decode2(ZodRealError2); -var encodeAsync4 = /* @__PURE__ */ _encodeAsync2(ZodRealError2); -var decodeAsync4 = /* @__PURE__ */ _decodeAsync2(ZodRealError2); -var safeEncode4 = /* @__PURE__ */ _safeEncode2(ZodRealError2); -var safeDecode4 = /* @__PURE__ */ _safeDecode2(ZodRealError2); -var safeEncodeAsync4 = /* @__PURE__ */ _safeEncodeAsync2(ZodRealError2); -var safeDecodeAsync4 = /* @__PURE__ */ _safeDecodeAsync2(ZodRealError2); - -// ../../node_modules/zod/v4/classic/schemas.js -var ZodType2 = /* @__PURE__ */ $constructor2("ZodType", (inst, def) => { - $ZodType2.init(inst, def); - Object.assign(inst["~standard"], { - jsonSchema: { - input: createStandardJSONSchemaMethod2(inst, "input"), - output: createStandardJSONSchemaMethod2(inst, "output") - } - }); - inst.toJSONSchema = createToJSONSchemaMethod2(inst, {}); - inst.def = def; - inst.type = def.type; - Object.defineProperty(inst, "_def", { value: def }); - inst.check = (...checks) => { - return inst.clone(util_exports2.mergeDefs(def, { - checks: [ - ...def.checks ?? [], - ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) - ] - }), { - parent: true - }); - }; - inst.with = inst.check; - inst.clone = (def2, params) => clone2(inst, def2, params); - inst.brand = () => inst; - inst.register = ((reg, meta5) => { - reg.add(inst, meta5); - return inst; - }); - inst.parse = (data, params) => parse4(inst, data, params, { callee: inst.parse }); - inst.safeParse = (data, params) => safeParse4(inst, data, params); - inst.parseAsync = async (data, params) => parseAsync4(inst, data, params, { callee: inst.parseAsync }); - inst.safeParseAsync = async (data, params) => safeParseAsync4(inst, data, params); - inst.spa = inst.safeParseAsync; - inst.encode = (data, params) => encode4(inst, data, params); - inst.decode = (data, params) => decode4(inst, data, params); - inst.encodeAsync = async (data, params) => encodeAsync4(inst, data, params); - inst.decodeAsync = async (data, params) => decodeAsync4(inst, data, params); - inst.safeEncode = (data, params) => safeEncode4(inst, data, params); - inst.safeDecode = (data, params) => safeDecode4(inst, data, params); - inst.safeEncodeAsync = async (data, params) => safeEncodeAsync4(inst, data, params); - inst.safeDecodeAsync = async (data, params) => safeDecodeAsync4(inst, data, params); - inst.refine = (check3, params) => inst.check(refine2(check3, params)); - inst.superRefine = (refinement) => inst.check(superRefine2(refinement)); - inst.overwrite = (fn) => inst.check(_overwrite2(fn)); - inst.optional = () => optional2(inst); - inst.exactOptional = () => exactOptional2(inst); - inst.nullable = () => nullable2(inst); - inst.nullish = () => optional2(nullable2(inst)); - inst.nonoptional = (params) => nonoptional2(inst, params); - inst.array = () => array2(inst); - inst.or = (arg) => union2([inst, arg]); - inst.and = (arg) => intersection2(inst, arg); - inst.transform = (tx) => pipe2(inst, transform2(tx)); - inst.default = (def2) => _default4(inst, def2); - inst.prefault = (def2) => prefault2(inst, def2); - inst.catch = (params) => _catch4(inst, params); - inst.pipe = (target) => pipe2(inst, target); - inst.readonly = () => readonly2(inst); - inst.describe = (description) => { - const cl = inst.clone(); - globalRegistry2.add(cl, { description }); - return cl; - }; - Object.defineProperty(inst, "description", { - get() { - return globalRegistry2.get(inst)?.description; - }, - configurable: true - }); - inst.meta = (...args) => { - if (args.length === 0) { - return globalRegistry2.get(inst); - } - const cl = inst.clone(); - globalRegistry2.add(cl, args[0]); - return cl; - }; - inst.isOptional = () => inst.safeParse(void 0).success; - inst.isNullable = () => inst.safeParse(null).success; - inst.apply = (fn) => fn(inst); - return inst; -}); -var _ZodString2 = /* @__PURE__ */ $constructor2("_ZodString", (inst, def) => { - $ZodString2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => stringProcessor2(inst, ctx, json3, params); - const bag = inst._zod.bag; - inst.format = bag.format ?? null; - inst.minLength = bag.minimum ?? null; - inst.maxLength = bag.maximum ?? null; - inst.regex = (...args) => inst.check(_regex2(...args)); - inst.includes = (...args) => inst.check(_includes2(...args)); - inst.startsWith = (...args) => inst.check(_startsWith2(...args)); - inst.endsWith = (...args) => inst.check(_endsWith2(...args)); - inst.min = (...args) => inst.check(_minLength2(...args)); - inst.max = (...args) => inst.check(_maxLength2(...args)); - inst.length = (...args) => inst.check(_length2(...args)); - inst.nonempty = (...args) => inst.check(_minLength2(1, ...args)); - inst.lowercase = (params) => inst.check(_lowercase2(params)); - inst.uppercase = (params) => inst.check(_uppercase2(params)); - inst.trim = () => inst.check(_trim2()); - inst.normalize = (...args) => inst.check(_normalize2(...args)); - inst.toLowerCase = () => inst.check(_toLowerCase2()); - inst.toUpperCase = () => inst.check(_toUpperCase2()); - inst.slugify = () => inst.check(_slugify2()); -}); -var ZodString2 = /* @__PURE__ */ $constructor2("ZodString", (inst, def) => { - $ZodString2.init(inst, def); - _ZodString2.init(inst, def); - inst.email = (params) => inst.check(_email2(ZodEmail2, params)); - inst.url = (params) => inst.check(_url2(ZodURL2, params)); - inst.jwt = (params) => inst.check(_jwt2(ZodJWT2, params)); - inst.emoji = (params) => inst.check(_emoji4(ZodEmoji2, params)); - inst.guid = (params) => inst.check(_guid2(ZodGUID2, params)); - inst.uuid = (params) => inst.check(_uuid2(ZodUUID2, params)); - inst.uuidv4 = (params) => inst.check(_uuidv42(ZodUUID2, params)); - inst.uuidv6 = (params) => inst.check(_uuidv62(ZodUUID2, params)); - inst.uuidv7 = (params) => inst.check(_uuidv72(ZodUUID2, params)); - inst.nanoid = (params) => inst.check(_nanoid2(ZodNanoID2, params)); - inst.guid = (params) => inst.check(_guid2(ZodGUID2, params)); - inst.cuid = (params) => inst.check(_cuid3(ZodCUID3, params)); - inst.cuid2 = (params) => inst.check(_cuid22(ZodCUID22, params)); - inst.ulid = (params) => inst.check(_ulid2(ZodULID2, params)); - inst.base64 = (params) => inst.check(_base642(ZodBase642, params)); - inst.base64url = (params) => inst.check(_base64url2(ZodBase64URL2, params)); - inst.xid = (params) => inst.check(_xid2(ZodXID2, params)); - inst.ksuid = (params) => inst.check(_ksuid2(ZodKSUID2, params)); - inst.ipv4 = (params) => inst.check(_ipv42(ZodIPv42, params)); - inst.ipv6 = (params) => inst.check(_ipv62(ZodIPv62, params)); - inst.cidrv4 = (params) => inst.check(_cidrv42(ZodCIDRv42, params)); - inst.cidrv6 = (params) => inst.check(_cidrv62(ZodCIDRv62, params)); - inst.e164 = (params) => inst.check(_e1642(ZodE1642, params)); - inst.datetime = (params) => inst.check(datetime4(params)); - inst.date = (params) => inst.check(date6(params)); - inst.time = (params) => inst.check(time4(params)); - inst.duration = (params) => inst.check(duration4(params)); -}); -function string5(params) { - return _string2(ZodString2, params); -} -var ZodStringFormat2 = /* @__PURE__ */ $constructor2("ZodStringFormat", (inst, def) => { - $ZodStringFormat2.init(inst, def); - _ZodString2.init(inst, def); -}); -var ZodEmail2 = /* @__PURE__ */ $constructor2("ZodEmail", (inst, def) => { - $ZodEmail2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function email4(params) { - return _email2(ZodEmail2, params); -} -var ZodGUID2 = /* @__PURE__ */ $constructor2("ZodGUID", (inst, def) => { - $ZodGUID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function guid4(params) { - return _guid2(ZodGUID2, params); -} -var ZodUUID2 = /* @__PURE__ */ $constructor2("ZodUUID", (inst, def) => { - $ZodUUID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function uuid5(params) { - return _uuid2(ZodUUID2, params); -} -function uuidv42(params) { - return _uuidv42(ZodUUID2, params); -} -function uuidv62(params) { - return _uuidv62(ZodUUID2, params); -} -function uuidv72(params) { - return _uuidv72(ZodUUID2, params); -} -var ZodURL2 = /* @__PURE__ */ $constructor2("ZodURL", (inst, def) => { - $ZodURL2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function url2(params) { - return _url2(ZodURL2, params); -} -function httpUrl2(params) { - return _url2(ZodURL2, { - protocol: /^https?$/, - hostname: regexes_exports2.domain, - ...util_exports2.normalizeParams(params) - }); -} -var ZodEmoji2 = /* @__PURE__ */ $constructor2("ZodEmoji", (inst, def) => { - $ZodEmoji2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function emoji4(params) { - return _emoji4(ZodEmoji2, params); -} -var ZodNanoID2 = /* @__PURE__ */ $constructor2("ZodNanoID", (inst, def) => { - $ZodNanoID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function nanoid4(params) { - return _nanoid2(ZodNanoID2, params); -} -var ZodCUID3 = /* @__PURE__ */ $constructor2("ZodCUID", (inst, def) => { - $ZodCUID3.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function cuid5(params) { - return _cuid3(ZodCUID3, params); -} -var ZodCUID22 = /* @__PURE__ */ $constructor2("ZodCUID2", (inst, def) => { - $ZodCUID22.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function cuid24(params) { - return _cuid22(ZodCUID22, params); -} -var ZodULID2 = /* @__PURE__ */ $constructor2("ZodULID", (inst, def) => { - $ZodULID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function ulid4(params) { - return _ulid2(ZodULID2, params); -} -var ZodXID2 = /* @__PURE__ */ $constructor2("ZodXID", (inst, def) => { - $ZodXID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function xid4(params) { - return _xid2(ZodXID2, params); -} -var ZodKSUID2 = /* @__PURE__ */ $constructor2("ZodKSUID", (inst, def) => { - $ZodKSUID2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function ksuid4(params) { - return _ksuid2(ZodKSUID2, params); -} -var ZodIPv42 = /* @__PURE__ */ $constructor2("ZodIPv4", (inst, def) => { - $ZodIPv42.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function ipv44(params) { - return _ipv42(ZodIPv42, params); -} -var ZodMAC2 = /* @__PURE__ */ $constructor2("ZodMAC", (inst, def) => { - $ZodMAC2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function mac4(params) { - return _mac2(ZodMAC2, params); -} -var ZodIPv62 = /* @__PURE__ */ $constructor2("ZodIPv6", (inst, def) => { - $ZodIPv62.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function ipv64(params) { - return _ipv62(ZodIPv62, params); -} -var ZodCIDRv42 = /* @__PURE__ */ $constructor2("ZodCIDRv4", (inst, def) => { - $ZodCIDRv42.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function cidrv44(params) { - return _cidrv42(ZodCIDRv42, params); -} -var ZodCIDRv62 = /* @__PURE__ */ $constructor2("ZodCIDRv6", (inst, def) => { - $ZodCIDRv62.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function cidrv64(params) { - return _cidrv62(ZodCIDRv62, params); -} -var ZodBase642 = /* @__PURE__ */ $constructor2("ZodBase64", (inst, def) => { - $ZodBase642.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function base644(params) { - return _base642(ZodBase642, params); -} -var ZodBase64URL2 = /* @__PURE__ */ $constructor2("ZodBase64URL", (inst, def) => { - $ZodBase64URL2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function base64url4(params) { - return _base64url2(ZodBase64URL2, params); -} -var ZodE1642 = /* @__PURE__ */ $constructor2("ZodE164", (inst, def) => { - $ZodE1642.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function e1644(params) { - return _e1642(ZodE1642, params); -} -var ZodJWT2 = /* @__PURE__ */ $constructor2("ZodJWT", (inst, def) => { - $ZodJWT2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function jwt2(params) { - return _jwt2(ZodJWT2, params); -} -var ZodCustomStringFormat2 = /* @__PURE__ */ $constructor2("ZodCustomStringFormat", (inst, def) => { - $ZodCustomStringFormat2.init(inst, def); - ZodStringFormat2.init(inst, def); -}); -function stringFormat2(format, fnOrRegex, _params = {}) { - return _stringFormat2(ZodCustomStringFormat2, format, fnOrRegex, _params); -} -function hostname4(_params) { - return _stringFormat2(ZodCustomStringFormat2, "hostname", regexes_exports2.hostname, _params); -} -function hex4(_params) { - return _stringFormat2(ZodCustomStringFormat2, "hex", regexes_exports2.hex, _params); -} -function hash2(alg, params) { - const enc = params?.enc ?? "hex"; - const format = `${alg}_${enc}`; - const regex = regexes_exports2[format]; - if (!regex) - throw new Error(`Unrecognized hash format: ${format}`); - return _stringFormat2(ZodCustomStringFormat2, format, regex, params); -} -var ZodNumber2 = /* @__PURE__ */ $constructor2("ZodNumber", (inst, def) => { - $ZodNumber2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => numberProcessor2(inst, ctx, json3, params); - inst.gt = (value, params) => inst.check(_gt2(value, params)); - inst.gte = (value, params) => inst.check(_gte2(value, params)); - inst.min = (value, params) => inst.check(_gte2(value, params)); - inst.lt = (value, params) => inst.check(_lt2(value, params)); - inst.lte = (value, params) => inst.check(_lte2(value, params)); - inst.max = (value, params) => inst.check(_lte2(value, params)); - inst.int = (params) => inst.check(int2(params)); - inst.safe = (params) => inst.check(int2(params)); - inst.positive = (params) => inst.check(_gt2(0, params)); - inst.nonnegative = (params) => inst.check(_gte2(0, params)); - inst.negative = (params) => inst.check(_lt2(0, params)); - inst.nonpositive = (params) => inst.check(_lte2(0, params)); - inst.multipleOf = (value, params) => inst.check(_multipleOf2(value, params)); - inst.step = (value, params) => inst.check(_multipleOf2(value, params)); - inst.finite = () => inst; - const bag = inst._zod.bag; - inst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null; - inst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null; - inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5); - inst.isFinite = true; - inst.format = bag.format ?? null; -}); -function number5(params) { - return _number2(ZodNumber2, params); -} -var ZodNumberFormat2 = /* @__PURE__ */ $constructor2("ZodNumberFormat", (inst, def) => { - $ZodNumberFormat2.init(inst, def); - ZodNumber2.init(inst, def); -}); -function int2(params) { - return _int2(ZodNumberFormat2, params); -} -function float322(params) { - return _float322(ZodNumberFormat2, params); -} -function float642(params) { - return _float642(ZodNumberFormat2, params); -} -function int322(params) { - return _int322(ZodNumberFormat2, params); -} -function uint322(params) { - return _uint322(ZodNumberFormat2, params); -} -var ZodBoolean2 = /* @__PURE__ */ $constructor2("ZodBoolean", (inst, def) => { - $ZodBoolean2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => booleanProcessor2(inst, ctx, json3, params); -}); -function boolean5(params) { - return _boolean2(ZodBoolean2, params); -} -var ZodBigInt2 = /* @__PURE__ */ $constructor2("ZodBigInt", (inst, def) => { - $ZodBigInt2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => bigintProcessor2(inst, ctx, json3, params); - inst.gte = (value, params) => inst.check(_gte2(value, params)); - inst.min = (value, params) => inst.check(_gte2(value, params)); - inst.gt = (value, params) => inst.check(_gt2(value, params)); - inst.gte = (value, params) => inst.check(_gte2(value, params)); - inst.min = (value, params) => inst.check(_gte2(value, params)); - inst.lt = (value, params) => inst.check(_lt2(value, params)); - inst.lte = (value, params) => inst.check(_lte2(value, params)); - inst.max = (value, params) => inst.check(_lte2(value, params)); - inst.positive = (params) => inst.check(_gt2(BigInt(0), params)); - inst.negative = (params) => inst.check(_lt2(BigInt(0), params)); - inst.nonpositive = (params) => inst.check(_lte2(BigInt(0), params)); - inst.nonnegative = (params) => inst.check(_gte2(BigInt(0), params)); - inst.multipleOf = (value, params) => inst.check(_multipleOf2(value, params)); - const bag = inst._zod.bag; - inst.minValue = bag.minimum ?? null; - inst.maxValue = bag.maximum ?? null; - inst.format = bag.format ?? null; -}); -function bigint5(params) { - return _bigint2(ZodBigInt2, params); -} -var ZodBigIntFormat2 = /* @__PURE__ */ $constructor2("ZodBigIntFormat", (inst, def) => { - $ZodBigIntFormat2.init(inst, def); - ZodBigInt2.init(inst, def); -}); -function int642(params) { - return _int642(ZodBigIntFormat2, params); -} -function uint642(params) { - return _uint642(ZodBigIntFormat2, params); -} -var ZodSymbol2 = /* @__PURE__ */ $constructor2("ZodSymbol", (inst, def) => { - $ZodSymbol2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => symbolProcessor2(inst, ctx, json3, params); -}); -function symbol2(params) { - return _symbol2(ZodSymbol2, params); -} -var ZodUndefined2 = /* @__PURE__ */ $constructor2("ZodUndefined", (inst, def) => { - $ZodUndefined2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => undefinedProcessor2(inst, ctx, json3, params); -}); -function _undefined6(params) { - return _undefined5(ZodUndefined2, params); -} -var ZodNull2 = /* @__PURE__ */ $constructor2("ZodNull", (inst, def) => { - $ZodNull2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nullProcessor2(inst, ctx, json3, params); -}); -function _null6(params) { - return _null5(ZodNull2, params); -} -var ZodAny2 = /* @__PURE__ */ $constructor2("ZodAny", (inst, def) => { - $ZodAny2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => anyProcessor2(inst, ctx, json3, params); -}); -function any2() { - return _any2(ZodAny2); -} -var ZodUnknown2 = /* @__PURE__ */ $constructor2("ZodUnknown", (inst, def) => { - $ZodUnknown2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unknownProcessor2(inst, ctx, json3, params); -}); -function unknown2() { - return _unknown2(ZodUnknown2); -} -var ZodNever2 = /* @__PURE__ */ $constructor2("ZodNever", (inst, def) => { - $ZodNever2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => neverProcessor2(inst, ctx, json3, params); -}); -function never2(params) { - return _never2(ZodNever2, params); -} -var ZodVoid2 = /* @__PURE__ */ $constructor2("ZodVoid", (inst, def) => { - $ZodVoid2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => voidProcessor2(inst, ctx, json3, params); -}); -function _void4(params) { - return _void3(ZodVoid2, params); -} -var ZodDate2 = /* @__PURE__ */ $constructor2("ZodDate", (inst, def) => { - $ZodDate2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => dateProcessor2(inst, ctx, json3, params); - inst.min = (value, params) => inst.check(_gte2(value, params)); - inst.max = (value, params) => inst.check(_lte2(value, params)); - const c = inst._zod.bag; - inst.minDate = c.minimum ? new Date(c.minimum) : null; - inst.maxDate = c.maximum ? new Date(c.maximum) : null; -}); -function date7(params) { - return _date2(ZodDate2, params); -} -var ZodArray2 = /* @__PURE__ */ $constructor2("ZodArray", (inst, def) => { - $ZodArray2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => arrayProcessor2(inst, ctx, json3, params); - inst.element = def.element; - inst.min = (minLength, params) => inst.check(_minLength2(minLength, params)); - inst.nonempty = (params) => inst.check(_minLength2(1, params)); - inst.max = (maxLength, params) => inst.check(_maxLength2(maxLength, params)); - inst.length = (len, params) => inst.check(_length2(len, params)); - inst.unwrap = () => inst.element; -}); -function array2(element, params) { - return _array2(ZodArray2, element, params); -} -function keyof2(schema) { - const shape = schema._zod.def.shape; - return _enum4(Object.keys(shape)); -} -var ZodObject2 = /* @__PURE__ */ $constructor2("ZodObject", (inst, def) => { - $ZodObjectJIT2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => objectProcessor2(inst, ctx, json3, params); - util_exports2.defineLazy(inst, "shape", () => { - return def.shape; - }); - inst.keyof = () => _enum4(Object.keys(inst._zod.def.shape)); - inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall }); - inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown2() }); - inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown2() }); - inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never2() }); - inst.strip = () => inst.clone({ ...inst._zod.def, catchall: void 0 }); - inst.extend = (incoming) => { - return util_exports2.extend(inst, incoming); - }; - inst.safeExtend = (incoming) => { - return util_exports2.safeExtend(inst, incoming); - }; - inst.merge = (other) => util_exports2.merge(inst, other); - inst.pick = (mask) => util_exports2.pick(inst, mask); - inst.omit = (mask) => util_exports2.omit(inst, mask); - inst.partial = (...args) => util_exports2.partial(ZodOptional2, inst, args[0]); - inst.required = (...args) => util_exports2.required(ZodNonOptional2, inst, args[0]); -}); -function object2(shape, params) { - const def = { - type: "object", - shape: shape ?? {}, - ...util_exports2.normalizeParams(params) - }; - return new ZodObject2(def); -} -function strictObject2(shape, params) { - return new ZodObject2({ - type: "object", - shape, - catchall: never2(), - ...util_exports2.normalizeParams(params) - }); -} -function looseObject2(shape, params) { - return new ZodObject2({ - type: "object", - shape, - catchall: unknown2(), - ...util_exports2.normalizeParams(params) - }); -} -var ZodUnion2 = /* @__PURE__ */ $constructor2("ZodUnion", (inst, def) => { - $ZodUnion2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unionProcessor2(inst, ctx, json3, params); - inst.options = def.options; -}); -function union2(options, params) { - return new ZodUnion2({ - type: "union", - options, - ...util_exports2.normalizeParams(params) - }); -} -var ZodXor2 = /* @__PURE__ */ $constructor2("ZodXor", (inst, def) => { - ZodUnion2.init(inst, def); - $ZodXor2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => unionProcessor2(inst, ctx, json3, params); - inst.options = def.options; -}); -function xor2(options, params) { - return new ZodXor2({ - type: "union", - options, - inclusive: false, - ...util_exports2.normalizeParams(params) - }); -} -var ZodDiscriminatedUnion2 = /* @__PURE__ */ $constructor2("ZodDiscriminatedUnion", (inst, def) => { - ZodUnion2.init(inst, def); - $ZodDiscriminatedUnion2.init(inst, def); -}); -function discriminatedUnion2(discriminator, options, params) { - return new ZodDiscriminatedUnion2({ - type: "union", - options, - discriminator, - ...util_exports2.normalizeParams(params) - }); -} -var ZodIntersection2 = /* @__PURE__ */ $constructor2("ZodIntersection", (inst, def) => { - $ZodIntersection2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => intersectionProcessor2(inst, ctx, json3, params); -}); -function intersection2(left, right) { - return new ZodIntersection2({ - type: "intersection", - left, - right - }); -} -var ZodTuple2 = /* @__PURE__ */ $constructor2("ZodTuple", (inst, def) => { - $ZodTuple2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => tupleProcessor2(inst, ctx, json3, params); - inst.rest = (rest) => inst.clone({ - ...inst._zod.def, - rest - }); -}); -function tuple2(items, _paramsOrRest, _params) { - const hasRest = _paramsOrRest instanceof $ZodType2; - const params = hasRest ? _params : _paramsOrRest; - const rest = hasRest ? _paramsOrRest : null; - return new ZodTuple2({ - type: "tuple", - items, - rest, - ...util_exports2.normalizeParams(params) - }); -} -var ZodRecord2 = /* @__PURE__ */ $constructor2("ZodRecord", (inst, def) => { - $ZodRecord2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => recordProcessor2(inst, ctx, json3, params); - inst.keyType = def.keyType; - inst.valueType = def.valueType; -}); -function record2(keyType, valueType, params) { - return new ZodRecord2({ - type: "record", - keyType, - valueType, - ...util_exports2.normalizeParams(params) - }); -} -function partialRecord2(keyType, valueType, params) { - const k = clone2(keyType); - k._zod.values = void 0; - return new ZodRecord2({ - type: "record", - keyType: k, - valueType, - ...util_exports2.normalizeParams(params) - }); -} -function looseRecord2(keyType, valueType, params) { - return new ZodRecord2({ - type: "record", - keyType, - valueType, - mode: "loose", - ...util_exports2.normalizeParams(params) - }); -} -var ZodMap2 = /* @__PURE__ */ $constructor2("ZodMap", (inst, def) => { - $ZodMap2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => mapProcessor2(inst, ctx, json3, params); - inst.keyType = def.keyType; - inst.valueType = def.valueType; - inst.min = (...args) => inst.check(_minSize2(...args)); - inst.nonempty = (params) => inst.check(_minSize2(1, params)); - inst.max = (...args) => inst.check(_maxSize2(...args)); - inst.size = (...args) => inst.check(_size2(...args)); -}); -function map2(keyType, valueType, params) { - return new ZodMap2({ - type: "map", - keyType, - valueType, - ...util_exports2.normalizeParams(params) - }); -} -var ZodSet2 = /* @__PURE__ */ $constructor2("ZodSet", (inst, def) => { - $ZodSet2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => setProcessor2(inst, ctx, json3, params); - inst.min = (...args) => inst.check(_minSize2(...args)); - inst.nonempty = (params) => inst.check(_minSize2(1, params)); - inst.max = (...args) => inst.check(_maxSize2(...args)); - inst.size = (...args) => inst.check(_size2(...args)); -}); -function set2(valueType, params) { - return new ZodSet2({ - type: "set", - valueType, - ...util_exports2.normalizeParams(params) - }); -} -var ZodEnum2 = /* @__PURE__ */ $constructor2("ZodEnum", (inst, def) => { - $ZodEnum2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => enumProcessor2(inst, ctx, json3, params); - inst.enum = def.entries; - inst.options = Object.values(def.entries); - const keys = new Set(Object.keys(def.entries)); - inst.extract = (values, params) => { - const newEntries = {}; - for (const value of values) { - if (keys.has(value)) { - newEntries[value] = def.entries[value]; - } else - throw new Error(`Key ${value} not found in enum`); - } - return new ZodEnum2({ - ...def, - checks: [], - ...util_exports2.normalizeParams(params), - entries: newEntries - }); - }; - inst.exclude = (values, params) => { - const newEntries = { ...def.entries }; - for (const value of values) { - if (keys.has(value)) { - delete newEntries[value]; - } else - throw new Error(`Key ${value} not found in enum`); - } - return new ZodEnum2({ - ...def, - checks: [], - ...util_exports2.normalizeParams(params), - entries: newEntries - }); - }; -}); -function _enum4(values, params) { - const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; - return new ZodEnum2({ - type: "enum", - entries, - ...util_exports2.normalizeParams(params) - }); -} -function nativeEnum2(entries, params) { - return new ZodEnum2({ - type: "enum", - entries, - ...util_exports2.normalizeParams(params) - }); -} -var ZodLiteral2 = /* @__PURE__ */ $constructor2("ZodLiteral", (inst, def) => { - $ZodLiteral2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => literalProcessor2(inst, ctx, json3, params); - inst.values = new Set(def.values); - Object.defineProperty(inst, "value", { - get() { - if (def.values.length > 1) { - throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); - } - return def.values[0]; - } - }); -}); -function literal2(value, params) { - return new ZodLiteral2({ - type: "literal", - values: Array.isArray(value) ? value : [value], - ...util_exports2.normalizeParams(params) - }); -} -var ZodFile2 = /* @__PURE__ */ $constructor2("ZodFile", (inst, def) => { - $ZodFile2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => fileProcessor2(inst, ctx, json3, params); - inst.min = (size, params) => inst.check(_minSize2(size, params)); - inst.max = (size, params) => inst.check(_maxSize2(size, params)); - inst.mime = (types, params) => inst.check(_mime2(Array.isArray(types) ? types : [types], params)); -}); -function file2(params) { - return _file2(ZodFile2, params); -} -var ZodTransform2 = /* @__PURE__ */ $constructor2("ZodTransform", (inst, def) => { - $ZodTransform2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => transformProcessor2(inst, ctx, json3, params); - inst._zod.parse = (payload, _ctx) => { - if (_ctx.direction === "backward") { - throw new $ZodEncodeError2(inst.constructor.name); - } - payload.addIssue = (issue3) => { - if (typeof issue3 === "string") { - payload.issues.push(util_exports2.issue(issue3, payload.value, def)); - } else { - const _issue = issue3; - if (_issue.fatal) - _issue.continue = false; - _issue.code ?? (_issue.code = "custom"); - _issue.input ?? (_issue.input = payload.value); - _issue.inst ?? (_issue.inst = inst); - payload.issues.push(util_exports2.issue(_issue)); - } - }; - const output = def.transform(payload.value, payload); - if (output instanceof Promise) { - return output.then((output2) => { - payload.value = output2; - return payload; - }); - } - payload.value = output; - return payload; - }; -}); -function transform2(fn) { - return new ZodTransform2({ - type: "transform", - transform: fn - }); -} -var ZodOptional2 = /* @__PURE__ */ $constructor2("ZodOptional", (inst, def) => { - $ZodOptional2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => optionalProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function optional2(innerType) { - return new ZodOptional2({ - type: "optional", - innerType - }); -} -var ZodExactOptional2 = /* @__PURE__ */ $constructor2("ZodExactOptional", (inst, def) => { - $ZodExactOptional2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => optionalProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function exactOptional2(innerType) { - return new ZodExactOptional2({ - type: "optional", - innerType - }); -} -var ZodNullable2 = /* @__PURE__ */ $constructor2("ZodNullable", (inst, def) => { - $ZodNullable2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nullableProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function nullable2(innerType) { - return new ZodNullable2({ - type: "nullable", - innerType - }); -} -function nullish4(innerType) { - return optional2(nullable2(innerType)); -} -var ZodDefault2 = /* @__PURE__ */ $constructor2("ZodDefault", (inst, def) => { - $ZodDefault2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => defaultProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; - inst.removeDefault = inst.unwrap; -}); -function _default4(innerType, defaultValue) { - return new ZodDefault2({ - type: "default", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : util_exports2.shallowClone(defaultValue); - } - }); -} -var ZodPrefault2 = /* @__PURE__ */ $constructor2("ZodPrefault", (inst, def) => { - $ZodPrefault2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => prefaultProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function prefault2(innerType, defaultValue) { - return new ZodPrefault2({ - type: "prefault", - innerType, - get defaultValue() { - return typeof defaultValue === "function" ? defaultValue() : util_exports2.shallowClone(defaultValue); - } - }); -} -var ZodNonOptional2 = /* @__PURE__ */ $constructor2("ZodNonOptional", (inst, def) => { - $ZodNonOptional2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nonoptionalProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function nonoptional2(innerType, params) { - return new ZodNonOptional2({ - type: "nonoptional", - innerType, - ...util_exports2.normalizeParams(params) - }); -} -var ZodSuccess2 = /* @__PURE__ */ $constructor2("ZodSuccess", (inst, def) => { - $ZodSuccess2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => successProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function success2(innerType) { - return new ZodSuccess2({ - type: "success", - innerType - }); -} -var ZodCatch2 = /* @__PURE__ */ $constructor2("ZodCatch", (inst, def) => { - $ZodCatch2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => catchProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; - inst.removeCatch = inst.unwrap; -}); -function _catch4(innerType, catchValue) { - return new ZodCatch2({ - type: "catch", - innerType, - catchValue: typeof catchValue === "function" ? catchValue : () => catchValue - }); -} -var ZodNaN2 = /* @__PURE__ */ $constructor2("ZodNaN", (inst, def) => { - $ZodNaN2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => nanProcessor2(inst, ctx, json3, params); -}); -function nan2(params) { - return _nan2(ZodNaN2, params); -} -var ZodPipe2 = /* @__PURE__ */ $constructor2("ZodPipe", (inst, def) => { - $ZodPipe2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => pipeProcessor2(inst, ctx, json3, params); - inst.in = def.in; - inst.out = def.out; -}); -function pipe2(in_, out) { - return new ZodPipe2({ - type: "pipe", - in: in_, - out - // ...util.normalizeParams(params), - }); -} -var ZodCodec2 = /* @__PURE__ */ $constructor2("ZodCodec", (inst, def) => { - ZodPipe2.init(inst, def); - $ZodCodec2.init(inst, def); -}); -function codec2(in_, out, params) { - return new ZodCodec2({ - type: "pipe", - in: in_, - out, - transform: params.decode, - reverseTransform: params.encode - }); -} -var ZodReadonly2 = /* @__PURE__ */ $constructor2("ZodReadonly", (inst, def) => { - $ZodReadonly2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => readonlyProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function readonly2(innerType) { - return new ZodReadonly2({ - type: "readonly", - innerType - }); -} -var ZodTemplateLiteral2 = /* @__PURE__ */ $constructor2("ZodTemplateLiteral", (inst, def) => { - $ZodTemplateLiteral2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => templateLiteralProcessor2(inst, ctx, json3, params); -}); -function templateLiteral2(parts, params) { - return new ZodTemplateLiteral2({ - type: "template_literal", - parts, - ...util_exports2.normalizeParams(params) - }); -} -var ZodLazy2 = /* @__PURE__ */ $constructor2("ZodLazy", (inst, def) => { - $ZodLazy2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => lazyProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.getter(); -}); -function lazy2(getter) { - return new ZodLazy2({ - type: "lazy", - getter - }); -} -var ZodPromise2 = /* @__PURE__ */ $constructor2("ZodPromise", (inst, def) => { - $ZodPromise2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => promiseProcessor2(inst, ctx, json3, params); - inst.unwrap = () => inst._zod.def.innerType; -}); -function promise2(innerType) { - return new ZodPromise2({ - type: "promise", - innerType - }); -} -var ZodFunction2 = /* @__PURE__ */ $constructor2("ZodFunction", (inst, def) => { - $ZodFunction2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => functionProcessor2(inst, ctx, json3, params); -}); -function _function2(params) { - return new ZodFunction2({ - type: "function", - input: Array.isArray(params?.input) ? tuple2(params?.input) : params?.input ?? array2(unknown2()), - output: params?.output ?? unknown2() - }); -} -var ZodCustom2 = /* @__PURE__ */ $constructor2("ZodCustom", (inst, def) => { - $ZodCustom2.init(inst, def); - ZodType2.init(inst, def); - inst._zod.processJSONSchema = (ctx, json3, params) => customProcessor2(inst, ctx, json3, params); -}); -function check2(fn) { - const ch = new $ZodCheck2({ - check: "custom" - // ...util.normalizeParams(params), - }); - ch._zod.check = fn; - return ch; -} -function custom2(fn, _params) { - return _custom2(ZodCustom2, fn ?? (() => true), _params); -} -function refine2(fn, _params = {}) { - return _refine2(ZodCustom2, fn, _params); -} -function superRefine2(fn) { - return _superRefine2(fn); -} -var describe4 = describe3; -var meta4 = meta3; -function _instanceof2(cls, params = {}) { - const inst = new ZodCustom2({ - type: "custom", - check: "custom", - fn: (data) => data instanceof cls, - abort: true, - ...util_exports2.normalizeParams(params) - }); - inst._zod.bag.Class = cls; - inst._zod.check = (payload) => { - if (!(payload.value instanceof cls)) { - payload.issues.push({ - code: "invalid_type", - expected: cls.name, - input: payload.value, - inst, - path: [...inst._zod.def.path ?? []] - }); - } - }; - return inst; -} -var stringbool2 = (...args) => _stringbool2({ - Codec: ZodCodec2, - Boolean: ZodBoolean2, - String: ZodString2 -}, ...args); -function json2(params) { - const jsonSchema = lazy2(() => { - return union2([string5(params), number5(), boolean5(), _null6(), array2(jsonSchema), record2(string5(), jsonSchema)]); - }); - return jsonSchema; -} -function preprocess2(fn, schema) { - return pipe2(transform2(fn), schema); -} - -// ../../node_modules/zod/v4/classic/compat.js -var ZodIssueCode2 = { - invalid_type: "invalid_type", - too_big: "too_big", - too_small: "too_small", - invalid_format: "invalid_format", - not_multiple_of: "not_multiple_of", - unrecognized_keys: "unrecognized_keys", - invalid_union: "invalid_union", - invalid_key: "invalid_key", - invalid_element: "invalid_element", - invalid_value: "invalid_value", - custom: "custom" -}; -function setErrorMap2(map3) { - config2({ - customError: map3 - }); -} -function getErrorMap2() { - return config2().customError; -} -var ZodFirstPartyTypeKind2; -/* @__PURE__ */ (function(ZodFirstPartyTypeKind3) { -})(ZodFirstPartyTypeKind2 || (ZodFirstPartyTypeKind2 = {})); - -// ../../node_modules/zod/v4/classic/from-json-schema.js -var z2 = { - ...schemas_exports4, - ...checks_exports4, - iso: iso_exports2 -}; -var RECOGNIZED_KEYS2 = /* @__PURE__ */ new Set([ - // Schema identification - "$schema", - "$ref", - "$defs", - "definitions", - // Core schema keywords - "$id", - "id", - "$comment", - "$anchor", - "$vocabulary", - "$dynamicRef", - "$dynamicAnchor", - // Type - "type", - "enum", - "const", - // Composition - "anyOf", - "oneOf", - "allOf", - "not", - // Object - "properties", - "required", - "additionalProperties", - "patternProperties", - "propertyNames", - "minProperties", - "maxProperties", - // Array - "items", - "prefixItems", - "additionalItems", - "minItems", - "maxItems", - "uniqueItems", - "contains", - "minContains", - "maxContains", - // String - "minLength", - "maxLength", - "pattern", - "format", - // Number - "minimum", - "maximum", - "exclusiveMinimum", - "exclusiveMaximum", - "multipleOf", - // Already handled metadata - "description", - "default", - // Content - "contentEncoding", - "contentMediaType", - "contentSchema", - // Unsupported (error-throwing) - "unevaluatedItems", - "unevaluatedProperties", - "if", - "then", - "else", - "dependentSchemas", - "dependentRequired", - // OpenAPI - "nullable", - "readOnly" -]); -function detectVersion2(schema, defaultTarget) { - const $schema = schema.$schema; - if ($schema === "https://json-schema.org/draft/2020-12/schema") { - return "draft-2020-12"; - } - if ($schema === "http://json-schema.org/draft-07/schema#") { - return "draft-7"; - } - if ($schema === "http://json-schema.org/draft-04/schema#") { - return "draft-4"; - } - return defaultTarget ?? "draft-2020-12"; -} -function resolveRef2(ref, ctx) { - if (!ref.startsWith("#")) { - throw new Error("External $ref is not supported, only local refs (#/...) are allowed"); - } - const path = ref.slice(1).split("/").filter(Boolean); - if (path.length === 0) { - return ctx.rootSchema; - } - const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions"; - if (path[0] === defsKey) { - const key = path[1]; - if (!key || !ctx.defs[key]) { - throw new Error(`Reference not found: ${ref}`); - } - return ctx.defs[key]; - } - throw new Error(`Reference not found: ${ref}`); -} -function convertBaseSchema2(schema, ctx) { - if (schema.not !== void 0) { - if (typeof schema.not === "object" && Object.keys(schema.not).length === 0) { - return z2.never(); - } - throw new Error("not is not supported in Zod (except { not: {} } for never)"); - } - if (schema.unevaluatedItems !== void 0) { - throw new Error("unevaluatedItems is not supported"); - } - if (schema.unevaluatedProperties !== void 0) { - throw new Error("unevaluatedProperties is not supported"); - } - if (schema.if !== void 0 || schema.then !== void 0 || schema.else !== void 0) { - throw new Error("Conditional schemas (if/then/else) are not supported"); - } - if (schema.dependentSchemas !== void 0 || schema.dependentRequired !== void 0) { - throw new Error("dependentSchemas and dependentRequired are not supported"); - } - if (schema.$ref) { - const refPath = schema.$ref; - if (ctx.refs.has(refPath)) { - return ctx.refs.get(refPath); - } - if (ctx.processing.has(refPath)) { - return z2.lazy(() => { - if (!ctx.refs.has(refPath)) { - throw new Error(`Circular reference not resolved: ${refPath}`); - } - return ctx.refs.get(refPath); - }); - } - ctx.processing.add(refPath); - const resolved = resolveRef2(refPath, ctx); - const zodSchema2 = convertSchema2(resolved, ctx); - ctx.refs.set(refPath, zodSchema2); - ctx.processing.delete(refPath); - return zodSchema2; - } - if (schema.enum !== void 0) { - const enumValues = schema.enum; - if (ctx.version === "openapi-3.0" && schema.nullable === true && enumValues.length === 1 && enumValues[0] === null) { - return z2.null(); - } - if (enumValues.length === 0) { - return z2.never(); - } - if (enumValues.length === 1) { - return z2.literal(enumValues[0]); - } - if (enumValues.every((v) => typeof v === "string")) { - return z2.enum(enumValues); - } - const literalSchemas = enumValues.map((v) => z2.literal(v)); - if (literalSchemas.length < 2) { - return literalSchemas[0]; - } - return z2.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]); - } - if (schema.const !== void 0) { - return z2.literal(schema.const); - } - const type = schema.type; - if (Array.isArray(type)) { - const typeSchemas = type.map((t) => { - const typeSchema = { ...schema, type: t }; - return convertBaseSchema2(typeSchema, ctx); - }); - if (typeSchemas.length === 0) { - return z2.never(); - } - if (typeSchemas.length === 1) { - return typeSchemas[0]; - } - return z2.union(typeSchemas); - } - if (!type) { - return z2.any(); - } - let zodSchema; - switch (type) { - case "string": { - let stringSchema = z2.string(); - if (schema.format) { - const format = schema.format; - if (format === "email") { - stringSchema = stringSchema.check(z2.email()); - } else if (format === "uri" || format === "uri-reference") { - stringSchema = stringSchema.check(z2.url()); - } else if (format === "uuid" || format === "guid") { - stringSchema = stringSchema.check(z2.uuid()); - } else if (format === "date-time") { - stringSchema = stringSchema.check(z2.iso.datetime()); - } else if (format === "date") { - stringSchema = stringSchema.check(z2.iso.date()); - } else if (format === "time") { - stringSchema = stringSchema.check(z2.iso.time()); - } else if (format === "duration") { - stringSchema = stringSchema.check(z2.iso.duration()); - } else if (format === "ipv4") { - stringSchema = stringSchema.check(z2.ipv4()); - } else if (format === "ipv6") { - stringSchema = stringSchema.check(z2.ipv6()); - } else if (format === "mac") { - stringSchema = stringSchema.check(z2.mac()); - } else if (format === "cidr") { - stringSchema = stringSchema.check(z2.cidrv4()); - } else if (format === "cidr-v6") { - stringSchema = stringSchema.check(z2.cidrv6()); - } else if (format === "base64") { - stringSchema = stringSchema.check(z2.base64()); - } else if (format === "base64url") { - stringSchema = stringSchema.check(z2.base64url()); - } else if (format === "e164") { - stringSchema = stringSchema.check(z2.e164()); - } else if (format === "jwt") { - stringSchema = stringSchema.check(z2.jwt()); - } else if (format === "emoji") { - stringSchema = stringSchema.check(z2.emoji()); - } else if (format === "nanoid") { - stringSchema = stringSchema.check(z2.nanoid()); - } else if (format === "cuid") { - stringSchema = stringSchema.check(z2.cuid()); - } else if (format === "cuid2") { - stringSchema = stringSchema.check(z2.cuid2()); - } else if (format === "ulid") { - stringSchema = stringSchema.check(z2.ulid()); - } else if (format === "xid") { - stringSchema = stringSchema.check(z2.xid()); - } else if (format === "ksuid") { - stringSchema = stringSchema.check(z2.ksuid()); - } - } - if (typeof schema.minLength === "number") { - stringSchema = stringSchema.min(schema.minLength); - } - if (typeof schema.maxLength === "number") { - stringSchema = stringSchema.max(schema.maxLength); - } - if (schema.pattern) { - stringSchema = stringSchema.regex(new RegExp(schema.pattern)); - } - zodSchema = stringSchema; - break; - } - case "number": - case "integer": { - let numberSchema = type === "integer" ? z2.number().int() : z2.number(); - if (typeof schema.minimum === "number") { - numberSchema = numberSchema.min(schema.minimum); - } - if (typeof schema.maximum === "number") { - numberSchema = numberSchema.max(schema.maximum); - } - if (typeof schema.exclusiveMinimum === "number") { - numberSchema = numberSchema.gt(schema.exclusiveMinimum); - } else if (schema.exclusiveMinimum === true && typeof schema.minimum === "number") { - numberSchema = numberSchema.gt(schema.minimum); - } - if (typeof schema.exclusiveMaximum === "number") { - numberSchema = numberSchema.lt(schema.exclusiveMaximum); - } else if (schema.exclusiveMaximum === true && typeof schema.maximum === "number") { - numberSchema = numberSchema.lt(schema.maximum); - } - if (typeof schema.multipleOf === "number") { - numberSchema = numberSchema.multipleOf(schema.multipleOf); - } - zodSchema = numberSchema; - break; - } - case "boolean": { - zodSchema = z2.boolean(); - break; - } - case "null": { - zodSchema = z2.null(); - break; - } - case "object": { - const shape = {}; - const properties = schema.properties || {}; - const requiredSet = new Set(schema.required || []); - for (const [key, propSchema] of Object.entries(properties)) { - const propZodSchema = convertSchema2(propSchema, ctx); - shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional(); - } - if (schema.propertyNames) { - const keySchema = convertSchema2(schema.propertyNames, ctx); - const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === "object" ? convertSchema2(schema.additionalProperties, ctx) : z2.any(); - if (Object.keys(shape).length === 0) { - zodSchema = z2.record(keySchema, valueSchema); - break; - } - const objectSchema2 = z2.object(shape).passthrough(); - const recordSchema = z2.looseRecord(keySchema, valueSchema); - zodSchema = z2.intersection(objectSchema2, recordSchema); - break; - } - if (schema.patternProperties) { - const patternProps = schema.patternProperties; - const patternKeys = Object.keys(patternProps); - const looseRecords = []; - for (const pattern of patternKeys) { - const patternValue = convertSchema2(patternProps[pattern], ctx); - const keySchema = z2.string().regex(new RegExp(pattern)); - looseRecords.push(z2.looseRecord(keySchema, patternValue)); - } - const schemasToIntersect = []; - if (Object.keys(shape).length > 0) { - schemasToIntersect.push(z2.object(shape).passthrough()); - } - schemasToIntersect.push(...looseRecords); - if (schemasToIntersect.length === 0) { - zodSchema = z2.object({}).passthrough(); - } else if (schemasToIntersect.length === 1) { - zodSchema = schemasToIntersect[0]; - } else { - let result = z2.intersection(schemasToIntersect[0], schemasToIntersect[1]); - for (let i = 2; i < schemasToIntersect.length; i++) { - result = z2.intersection(result, schemasToIntersect[i]); - } - zodSchema = result; - } - break; - } - const objectSchema = z2.object(shape); - if (schema.additionalProperties === false) { - zodSchema = objectSchema.strict(); - } else if (typeof schema.additionalProperties === "object") { - zodSchema = objectSchema.catchall(convertSchema2(schema.additionalProperties, ctx)); - } else { - zodSchema = objectSchema.passthrough(); - } - break; - } - case "array": { - const prefixItems = schema.prefixItems; - const items = schema.items; - if (prefixItems && Array.isArray(prefixItems)) { - const tupleItems = prefixItems.map((item) => convertSchema2(item, ctx)); - const rest = items && typeof items === "object" && !Array.isArray(items) ? convertSchema2(items, ctx) : void 0; - if (rest) { - zodSchema = z2.tuple(tupleItems).rest(rest); - } else { - zodSchema = z2.tuple(tupleItems); - } - if (typeof schema.minItems === "number") { - zodSchema = zodSchema.check(z2.minLength(schema.minItems)); - } - if (typeof schema.maxItems === "number") { - zodSchema = zodSchema.check(z2.maxLength(schema.maxItems)); - } - } else if (Array.isArray(items)) { - const tupleItems = items.map((item) => convertSchema2(item, ctx)); - const rest = schema.additionalItems && typeof schema.additionalItems === "object" ? convertSchema2(schema.additionalItems, ctx) : void 0; - if (rest) { - zodSchema = z2.tuple(tupleItems).rest(rest); - } else { - zodSchema = z2.tuple(tupleItems); - } - if (typeof schema.minItems === "number") { - zodSchema = zodSchema.check(z2.minLength(schema.minItems)); - } - if (typeof schema.maxItems === "number") { - zodSchema = zodSchema.check(z2.maxLength(schema.maxItems)); - } - } else if (items !== void 0) { - const element = convertSchema2(items, ctx); - let arraySchema = z2.array(element); - if (typeof schema.minItems === "number") { - arraySchema = arraySchema.min(schema.minItems); - } - if (typeof schema.maxItems === "number") { - arraySchema = arraySchema.max(schema.maxItems); - } - zodSchema = arraySchema; - } else { - zodSchema = z2.array(z2.any()); - } - break; - } - default: - throw new Error(`Unsupported type: ${type}`); - } - if (schema.description) { - zodSchema = zodSchema.describe(schema.description); - } - if (schema.default !== void 0) { - zodSchema = zodSchema.default(schema.default); - } - return zodSchema; -} -function convertSchema2(schema, ctx) { - if (typeof schema === "boolean") { - return schema ? z2.any() : z2.never(); - } - let baseSchema = convertBaseSchema2(schema, ctx); - const hasExplicitType = schema.type || schema.enum !== void 0 || schema.const !== void 0; - if (schema.anyOf && Array.isArray(schema.anyOf)) { - const options = schema.anyOf.map((s) => convertSchema2(s, ctx)); - const anyOfUnion = z2.union(options); - baseSchema = hasExplicitType ? z2.intersection(baseSchema, anyOfUnion) : anyOfUnion; - } - if (schema.oneOf && Array.isArray(schema.oneOf)) { - const options = schema.oneOf.map((s) => convertSchema2(s, ctx)); - const oneOfUnion = z2.xor(options); - baseSchema = hasExplicitType ? z2.intersection(baseSchema, oneOfUnion) : oneOfUnion; - } - if (schema.allOf && Array.isArray(schema.allOf)) { - if (schema.allOf.length === 0) { - baseSchema = hasExplicitType ? baseSchema : z2.any(); - } else { - let result = hasExplicitType ? baseSchema : convertSchema2(schema.allOf[0], ctx); - const startIdx = hasExplicitType ? 0 : 1; - for (let i = startIdx; i < schema.allOf.length; i++) { - result = z2.intersection(result, convertSchema2(schema.allOf[i], ctx)); - } - baseSchema = result; - } - } - if (schema.nullable === true && ctx.version === "openapi-3.0") { - baseSchema = z2.nullable(baseSchema); - } - if (schema.readOnly === true) { - baseSchema = z2.readonly(baseSchema); - } - const extraMeta = {}; - const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"]; - for (const key of coreMetadataKeys) { - if (key in schema) { - extraMeta[key] = schema[key]; - } - } - const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"]; - for (const key of contentMetadataKeys) { - if (key in schema) { - extraMeta[key] = schema[key]; - } - } - for (const key of Object.keys(schema)) { - if (!RECOGNIZED_KEYS2.has(key)) { - extraMeta[key] = schema[key]; - } - } - if (Object.keys(extraMeta).length > 0) { - ctx.registry.add(baseSchema, extraMeta); - } - return baseSchema; -} -function fromJSONSchema2(schema, params) { - if (typeof schema === "boolean") { - return schema ? z2.any() : z2.never(); - } - const version3 = detectVersion2(schema, params?.defaultTarget); - const defs = schema.$defs || schema.definitions || {}; - const ctx = { - version: version3, - defs, - refs: /* @__PURE__ */ new Map(), - processing: /* @__PURE__ */ new Set(), - rootSchema: schema, - registry: params?.registry ?? globalRegistry2 - }; - return convertSchema2(schema, ctx); -} - -// ../../node_modules/zod/v4/classic/coerce.js -var coerce_exports2 = {}; -__export(coerce_exports2, { - bigint: () => bigint6, - boolean: () => boolean6, - date: () => date8, - number: () => number6, - string: () => string6 -}); -function string6(params) { - return _coercedString2(ZodString2, params); -} -function number6(params) { - return _coercedNumber2(ZodNumber2, params); -} -function boolean6(params) { - return _coercedBoolean2(ZodBoolean2, params); -} -function bigint6(params) { - return _coercedBigint2(ZodBigInt2, params); -} -function date8(params) { - return _coercedDate2(ZodDate2, params); -} - -// ../../node_modules/zod/v4/classic/external.js -config2(en_default2()); - -// ../shared/dist/schemas/session.js -var ToolCallSchema = external_exports2.object({ - id: external_exports2.string(), - name: external_exports2.string(), - input: external_exports2.record(external_exports2.string(), external_exports2.unknown()), - result: external_exports2.string().optional(), - isError: external_exports2.boolean().optional() -}); -var ParsedMessageSchema = external_exports2.object({ - uuid: external_exports2.string(), - role: external_exports2.enum(["user", "assistant"]), - timestamp: external_exports2.string(), - content: external_exports2.string(), - isMeta: external_exports2.boolean().optional(), - sourceToolUseID: external_exports2.string().optional(), - toolUseResult: external_exports2.unknown().optional(), - toolCalls: external_exports2.array(ToolCallSchema).optional(), - tokenUsage: external_exports2.object({ - input: external_exports2.number().int().min(0), - output: external_exports2.number().int().min(0) - }).optional() -}); -var SessionStatsSchema = external_exports2.object({ - userMessageCount: external_exports2.number().int().min(0), - assistantMessageCount: external_exports2.number().int().min(0), - toolCallCount: external_exports2.number().int().min(0), - uniqueToolsUsed: external_exports2.array(external_exports2.string()), - totalInputTokens: external_exports2.number().int().min(0), - totalOutputTokens: external_exports2.number().int().min(0) -}); -var SessionSourceTypeSchema = external_exports2.enum([ - "claude-code", - "cursor", - "cursor-composer" -]); -var ParsedSessionSchema = external_exports2.object({ - sessionId: external_exports2.string(), - projectPath: external_exports2.string(), - projectName: external_exports2.string().optional(), - startTime: external_exports2.string(), - endTime: external_exports2.string(), - durationSeconds: external_exports2.number().min(0), - claudeCodeVersion: external_exports2.string(), - messages: external_exports2.array(ParsedMessageSchema), - stats: SessionStatsSchema, - source: SessionSourceTypeSchema.optional() -}); - -// ../shared/dist/schemas/phase1-output.js -var AIInsightBlockSchema = external_exports2.object({ - sessionId: external_exports2.string(), - turnIndex: external_exports2.number().int().min(0), - content: external_exports2.string(), - triggeringUtteranceId: external_exports2.string().optional() -}); -var NaturalLanguageSegmentSchema = external_exports2.object({ - start: external_exports2.number().int().min(0), - end: external_exports2.number().int().min(0), - text: external_exports2.string() -}); -var UserUtteranceSchema = external_exports2.object({ - id: external_exports2.string(), - text: external_exports2.string(), - displayText: external_exports2.string().optional(), - naturalLanguageSegments: external_exports2.array(NaturalLanguageSegmentSchema).optional(), - timestamp: external_exports2.string(), - sessionId: external_exports2.string(), - turnIndex: external_exports2.number().int().min(0), - characterCount: external_exports2.number().int().min(0), - wordCount: external_exports2.number().int().min(0), - hasCodeBlock: external_exports2.boolean(), - hasQuestion: external_exports2.boolean(), - isSessionStart: external_exports2.boolean().optional(), - isContinuation: external_exports2.boolean().optional(), - machineContentRatio: external_exports2.number().min(0).max(1).optional(), - precedingAIToolCalls: external_exports2.array(external_exports2.string()).optional(), - precedingAIHadError: external_exports2.boolean().optional() -}); -var FrictionSignalsSchema = external_exports2.object({ - toolFailureCount: external_exports2.number().int().min(0), - userRejectionSignals: external_exports2.number().int().min(0), - excessiveIterationSessions: external_exports2.number().int().min(0), - contextOverflowSessions: external_exports2.number().int().min(0), - frustrationExpressionCount: external_exports2.number().int().min(0), - repeatedToolErrorPatterns: external_exports2.number().int().min(0), - bareRetryAfterErrorCount: external_exports2.number().int().min(0), - errorChainMaxLength: external_exports2.number().int().min(0) -}); -var SessionHintsSchema = external_exports2.object({ - avgTurnsPerSession: external_exports2.number().min(0), - shortSessions: external_exports2.number().int().min(0), - mediumSessions: external_exports2.number().int().min(0), - longSessions: external_exports2.number().int().min(0) -}); -var Phase1SessionMetricsSchema = external_exports2.object({ - totalSessions: external_exports2.number().int().min(0), - totalMessages: external_exports2.number().int().min(0), - totalDeveloperUtterances: external_exports2.number().int().min(0), - totalAIResponses: external_exports2.number().int().min(0), - avgMessagesPerSession: external_exports2.number(), - avgDeveloperMessageLength: external_exports2.number(), - questionRatio: external_exports2.number().min(0).max(1), - codeBlockRatio: external_exports2.number().min(0).max(1), - dateRange: external_exports2.object({ - earliest: external_exports2.string(), - latest: external_exports2.string() - }), - slashCommandCounts: external_exports2.record(external_exports2.string(), external_exports2.number()).optional(), - avgContextFillPercent: external_exports2.number().min(0).max(100).optional(), - maxContextFillPercent: external_exports2.number().min(0).max(100).optional(), - contextFillExceeded90Count: external_exports2.number().int().min(0).optional(), - frictionSignals: FrictionSignalsSchema.optional(), - sessionHints: SessionHintsSchema.optional(), - aiInsightBlockCount: external_exports2.number().int().min(0).optional() -}); -var ActivitySessionSchema = external_exports2.object({ - sessionId: external_exports2.string(), - projectName: external_exports2.string(), - projectPath: external_exports2.string().optional(), - startTime: external_exports2.string(), - durationSeconds: external_exports2.number().min(0), - messageCount: external_exports2.number().int().min(0), - userMessageCount: external_exports2.number().int().min(0), - assistantMessageCount: external_exports2.number().int().min(0), - totalInputTokens: external_exports2.number().int().min(0), - totalOutputTokens: external_exports2.number().int().min(0), - /** First user message text (truncated to 200 chars) for summary context */ - firstUserMessage: external_exports2.string().optional() -}); -var Phase1OutputSchema = external_exports2.object({ - developerUtterances: external_exports2.array(UserUtteranceSchema), - sessionMetrics: Phase1SessionMetricsSchema, - aiInsightBlocks: external_exports2.array(AIInsightBlockSchema).optional(), - /** Per-session metadata for Phase 1.5/2 stages */ - activitySessions: external_exports2.array(ActivitySessionSchema).optional(), - /** Full parsed sessions preserved for downstream evidence and parity needs */ - sessions: external_exports2.array(ParsedSessionSchema).optional(), - skippedFiles: external_exports2.number().optional() -}); - -// ../shared/dist/schemas/deterministic-scores.js -var DeterministicScoresSchema = external_exports2.object({ - aiPartnership: external_exports2.number().min(0).max(100), - sessionCraft: external_exports2.number().min(0).max(100), - toolMastery: external_exports2.number().min(0).max(100), - skillResilience: external_exports2.number().min(0).max(100), - sessionMastery: external_exports2.number().min(0).max(100), - controlScore: external_exports2.number().min(0).max(100), - // Legacy fields — present on old runs, not computed for new - contextEfficiency: external_exports2.number().min(0).max(100).optional(), - sessionOutcome: external_exports2.number().min(0).max(100).optional(), - thinkingQuality: external_exports2.number().min(0).max(100).optional(), - learningBehavior: external_exports2.number().min(0).max(100).optional(), - communicationPatterns: external_exports2.number().min(0).max(100).optional() -}); -var CodingStyleTypeSchema = external_exports2.enum([ - "architect", - "analyst", - "conductor", - "speedrunner", - "trendsetter" -]); -var AIControlLevelSchema = external_exports2.enum([ - "explorer", - "navigator", - "cartographer" -]); -var DeterministicTypeResultSchema = external_exports2.object({ - primaryType: CodingStyleTypeSchema, - distribution: external_exports2.object({ - architect: external_exports2.number(), - analyst: external_exports2.number(), - conductor: external_exports2.number(), - speedrunner: external_exports2.number(), - trendsetter: external_exports2.number() - }), - controlLevel: AIControlLevelSchema, - controlScore: external_exports2.number().min(0).max(100), - matrixName: external_exports2.string(), - matrixEmoji: external_exports2.string() -}); - -// ../shared/dist/schemas/domain-result.js -var EvidenceSchema = external_exports2.object({ - utteranceId: external_exports2.string(), - quote: external_exports2.string(), - context: external_exports2.string().optional() -}); -var DomainStrengthSchema = external_exports2.object({ - title: external_exports2.string(), - description: external_exports2.string().min(100), - evidence: external_exports2.array(EvidenceSchema).min(1) -}); -var DomainGrowthAreaSchema = external_exports2.object({ - title: external_exports2.string(), - description: external_exports2.string().min(100), - severity: external_exports2.enum(["critical", "high", "medium", "low"]), - recommendation: external_exports2.string().min(50), - evidence: external_exports2.array(EvidenceSchema).min(1) -}); -var DomainResultSchema = external_exports2.object({ - domain: external_exports2.enum([ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery", - // Legacy domains accepted for backward compat with old runs - "thinkingQuality", - "communicationPatterns", - "learningBehavior", - "contextEfficiency", - "sessionOutcome", - "content" - ]), - overallScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - strengths: external_exports2.array(DomainStrengthSchema), - growthAreas: external_exports2.array(DomainGrowthAreaSchema), - /** Domain-specific typed data. Validated per domain when available. */ - data: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional(), - analyzedAt: external_exports2.string() -}); -var AnalysisReportSchema = external_exports2.object({ - userId: external_exports2.string(), - analyzedAt: external_exports2.string(), - phase1Metrics: Phase1SessionMetricsSchema, - deterministicScores: DeterministicScoresSchema, - typeResult: DeterministicTypeResultSchema.nullable(), - domainResults: external_exports2.array(DomainResultSchema), - content: external_exports2.object({ - topFocusAreas: external_exports2.array(external_exports2.object({ - title: external_exports2.string(), - narrative: external_exports2.string().optional(), - description: external_exports2.string().optional(), - actions: external_exports2.object({ - start: external_exports2.string(), - stop: external_exports2.string(), - continue: external_exports2.string() - }).optional() - })).optional(), - personalitySummary: external_exports2.array(external_exports2.string()).optional() - }).optional() -}); - -// ../shared/dist/schemas/stage-outputs.js -var SessionSummarySchema = external_exports2.object({ - sessionId: external_exports2.string(), - summary: external_exports2.string() -}); -var SessionSummaryBatchSchema = external_exports2.object({ - summaries: external_exports2.array(SessionSummarySchema) -}); -var ProjectSummarySchema = external_exports2.object({ - projectName: external_exports2.string(), - summaryLines: external_exports2.array(external_exports2.string()), - sessionCount: external_exports2.number().int().min(0) -}); -var ProjectSummaryBatchSchema = external_exports2.object({ - projects: external_exports2.array(ProjectSummarySchema) -}); -var WeeklyProjectBreakdownSchema = external_exports2.object({ - projectName: external_exports2.string(), - sessionCount: external_exports2.number().int().min(0), - percentage: external_exports2.number().min(0).max(100) -}); -var WeeklyTopSessionSchema = external_exports2.object({ - sessionId: external_exports2.string(), - summary: external_exports2.string() -}); -var WeeklyInsightsSchema = external_exports2.object({ - stats: external_exports2.object({ - sessionCount: external_exports2.number().int().min(0), - totalMinutes: external_exports2.number().min(0), - totalTokens: external_exports2.number().int().min(0), - activeDays: external_exports2.number().int().min(0).max(7), - deltaSessionCount: external_exports2.number().optional(), - deltaMinutes: external_exports2.number().optional(), - deltaTokens: external_exports2.number().optional() - }), - projects: external_exports2.array(WeeklyProjectBreakdownSchema), - topSessions: external_exports2.array(WeeklyTopSessionSchema), - narrative: external_exports2.string(), - highlights: external_exports2.array(external_exports2.string()) -}); -var EvidenceVerificationResultSchema = external_exports2.object({ - utteranceId: external_exports2.string(), - quote: external_exports2.string(), - relevanceScore: external_exports2.number().min(0).max(100), - verified: external_exports2.boolean() -}); -var DomainVerificationStatsSchema = external_exports2.object({ - domain: external_exports2.string(), - totalEvidence: external_exports2.number().int().min(0), - keptCount: external_exports2.number().int().min(0), - filteredCount: external_exports2.number().int().min(0) -}); -var EvidenceVerificationOutputSchema = external_exports2.object({ - verifiedResults: external_exports2.array(EvidenceVerificationResultSchema), - domainStats: external_exports2.array(DomainVerificationStatsSchema), - threshold: external_exports2.number().min(0).max(100) -}); -var TopFocusAreaSchema = external_exports2.object({ - title: external_exports2.string(), - description: external_exports2.string(), - relatedQualities: external_exports2.array(external_exports2.string()), - actions: external_exports2.object({ - start: external_exports2.string(), - stop: external_exports2.string(), - continue: external_exports2.string() - }) -}); -var ContentWriterOutputSchema = external_exports2.object({ - topFocusAreas: external_exports2.array(TopFocusAreaSchema), - personalitySummary: external_exports2.array(external_exports2.string()).optional() -}); -var TypeClassificationStageOutputSchema = external_exports2.object({ - reasoning: external_exports2.array(external_exports2.string()), - personalityNarrative: external_exports2.array(external_exports2.string()), - collaborationMaturity: external_exports2.string().optional() -}); -var TranslatorOutputSchema = external_exports2.object({ - targetLanguage: external_exports2.string(), - translatedFields: external_exports2.record(external_exports2.string(), external_exports2.unknown()) -}); -var DimensionExtractionSchema = external_exports2.object({ - dimension: external_exports2.string(), - quotes: external_exports2.array(external_exports2.object({ - text: external_exports2.string(), - utteranceId: external_exports2.string().optional(), - sessionId: external_exports2.string().optional(), - behavioralMarker: external_exports2.string().optional(), - signalType: external_exports2.enum(["strength", "growth"]).optional(), - confidence: external_exports2.number().min(0).max(1).optional() - }).passthrough()), - patterns: external_exports2.array(external_exports2.object({ - name: external_exports2.string(), - category: external_exports2.string().optional(), - examples: external_exports2.array(external_exports2.string()).optional(), - frequency: external_exports2.string().optional() - }).passthrough()).optional(), - signals: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional(), - score: external_exports2.number().min(0).max(100).optional(), - metadata: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional() -}).passthrough(); -var STAGE_NAMES = [ - "sessionSummaries", - "projectSummaries", - "weeklyInsights", - "typeClassification", - "evidenceVerification", - "contentWriter", - "translator", - // 5-dimension extractors (v2) - "extractAiPartnership", - "extractSessionCraft", - "extractToolMastery", - "extractSkillResilience", - "extractSessionMastery", - // Legacy extractors (old runs only) - "extractAiCollaboration", - "extractContextEngineering", - "extractBurnoutRisk", - "extractAiControl" -]; -var STAGE_SCHEMAS = { - sessionSummaries: SessionSummaryBatchSchema, - projectSummaries: ProjectSummaryBatchSchema, - weeklyInsights: WeeklyInsightsSchema, - typeClassification: TypeClassificationStageOutputSchema, - evidenceVerification: EvidenceVerificationOutputSchema, - contentWriter: ContentWriterOutputSchema, - translator: TranslatorOutputSchema, - // 5-dimension extractors (v2) - extractAiPartnership: DimensionExtractionSchema, - extractSessionCraft: DimensionExtractionSchema, - extractToolMastery: DimensionExtractionSchema, - extractSkillResilience: DimensionExtractionSchema, - extractSessionMastery: DimensionExtractionSchema, - // Legacy extractors (old runs) - extractAiCollaboration: DimensionExtractionSchema, - extractContextEngineering: DimensionExtractionSchema, - extractBurnoutRisk: DimensionExtractionSchema, - extractAiControl: DimensionExtractionSchema -}; - -// ../shared/dist/schemas/analysis-run.js -var ReportActivitySessionSchema = external_exports2.object({ - sessionId: external_exports2.string(), - projectName: external_exports2.string(), - startTime: external_exports2.string(), - durationMinutes: external_exports2.number().min(0), - messageCount: external_exports2.number().int().min(0), - summary: external_exports2.string(), - totalInputTokens: external_exports2.number().int().min(0).optional(), - totalOutputTokens: external_exports2.number().int().min(0).optional() -}); -var CanonicalStageOutputsSchema = external_exports2.object({ - sessionSummaries: SessionSummaryBatchSchema.optional(), - projectSummaries: ProjectSummaryBatchSchema.optional(), - weeklyInsights: WeeklyInsightsSchema.optional(), - typeClassification: TypeClassificationStageOutputSchema.optional(), - evidenceVerification: EvidenceVerificationOutputSchema.optional(), - contentWriter: ContentWriterOutputSchema.optional(), - translator: TranslatorOutputSchema.optional() -}); -var CanonicalEvaluationPayloadSchema = external_exports2.record(external_exports2.string(), external_exports2.unknown()); -var CanonicalAnalysisRunSchema = external_exports2.object({ - runId: external_exports2.number().int().min(1), - analyzedAt: external_exports2.string(), - phase1Output: Phase1OutputSchema, - activitySessions: external_exports2.array(ReportActivitySessionSchema), - deterministicScores: DeterministicScoresSchema, - typeResult: DeterministicTypeResultSchema.nullable(), - domainResults: external_exports2.array(DomainResultSchema), - stageOutputs: CanonicalStageOutputsSchema, - evaluation: CanonicalEvaluationPayloadSchema, - translation: TranslatorOutputSchema.optional(), - debug: external_exports2.record(external_exports2.string(), external_exports2.unknown()).optional() -}); - -// ../shared/dist/schemas/worker-outputs.js -var InsightEvidenceSchema = external_exports2.object({ - /** Utterance ID from Phase 1 (format: {sessionId}_{turnIndex}) */ - utteranceId: external_exports2.string(), - /** Direct quote or paraphrase from the developer's message */ - quote: external_exports2.string(), - /** Brief context description */ - context: external_exports2.string().optional() -}); -var EvidenceItemSchema = external_exports2.union([ - external_exports2.string(), - InsightEvidenceSchema -]); -var WorkerStrengthSchema = external_exports2.object({ - /** Clear, specific title (e.g., "Systematic Output Verification") */ - title: external_exports2.string(), - /** 6-10 sentences providing comprehensive analysis */ - description: external_exports2.string(), - /** - * Direct quotes from developer messages demonstrating this (1-8 items). - * Can be simple strings (legacy) or structured with utterance linking. - */ - evidence: external_exports2.array(EvidenceItemSchema).min(1).max(8), - /** Truncated description preview for free tier blur teaser (set by ContentGateway) */ - descriptionPreview: external_exports2.string().optional() -}); -var WorkerGrowthSeveritySchema = external_exports2.enum(["critical", "high", "medium", "low"]); -var WorkerGrowthSchema = external_exports2.object({ - /** Clear, specific title (e.g., "Error Loop Pattern") */ - title: external_exports2.string(), - /** 6-10 sentences providing comprehensive analysis */ - description: external_exports2.string(), - /** - * Direct quotes from developer messages showing this pattern (1-8 items). - * Can be simple strings (legacy) or structured with utterance linking. - */ - evidence: external_exports2.array(EvidenceItemSchema).min(1).max(8), - /** 4-6 sentences with step-by-step actionable advice */ - recommendation: external_exports2.string(), - /** How critical this growth area is to address */ - severity: WorkerGrowthSeveritySchema.optional(), - /** Truncated description preview for free tier blur teaser (set by ContentGateway) */ - descriptionPreview: external_exports2.string().optional(), - /** Truncated recommendation preview for free tier blur teaser (set by ContentGateway) */ - recommendationPreview: external_exports2.string().optional() -}); -var ReferencedInsightSchema = external_exports2.object({ - /** Insight ID (e.g., "pi-001") */ - id: external_exports2.string(), - /** Human-readable title */ - title: external_exports2.string(), - /** Source URL for the insight */ - url: external_exports2.string(), - /** Main insight text */ - keyTakeaway: external_exports2.string(), - /** Actionable tips array */ - actionableAdvice: external_exports2.array(external_exports2.string()), - /** Insight category: diagnosis | trend | tool | type-specific */ - category: external_exports2.string(), - /** Author name from source */ - sourceAuthor: external_exports2.string() -}); -var PlanningHabitTypeSchema = external_exports2.enum([ - "uses_plan_command", - "plan_mode_usage", - "task_decomposition", - "structure_first", - "todowrite_usage", - "no_planning" -]); -var HabitFrequencySchema = external_exports2.enum(["always", "often", "sometimes", "rarely", "never"]); -var PlanningHabitSchema = external_exports2.object({ - type: PlanningHabitTypeSchema, - frequency: HabitFrequencySchema, - examples: external_exports2.array(external_exports2.string()), - effectiveness: external_exports2.enum(["high", "medium", "low"]).optional() -}); -var CriticalThinkingTypeSchema = external_exports2.enum([ - "verification_request", - "output_validation", - "assumption_questioning", - "alternative_exploration", - "edge_case_consideration", - "security_check", - "ai_output_correction" -]); -var CriticalThinkingMomentSchema = external_exports2.object({ - type: CriticalThinkingTypeSchema, - quote: external_exports2.string(), - result: external_exports2.string(), - utteranceId: external_exports2.string().optional() -}); -var VerificationLevelSchema = external_exports2.enum([ - "blind_trust", - "occasional_review", - "systematic_verification", - "skeptical" -]); -var VerificationBehaviorSchema = external_exports2.object({ - level: VerificationLevelSchema, - examples: external_exports2.array(external_exports2.string()), - recommendation: external_exports2.string(), - confidence: external_exports2.number().min(0).max(1).optional() -}); -var PatternSeveritySchema = external_exports2.enum(["critical", "significant", "moderate", "mild"]); -var AntiPatternExampleSchema = external_exports2.object({ - utteranceId: external_exports2.string(), - quote: external_exports2.string(), - context: external_exports2.string().optional() -}); -var DetectedAntiPatternSchema = external_exports2.object({ - type: external_exports2.string(), - frequency: external_exports2.number().int().min(1), - examples: external_exports2.array(AntiPatternExampleSchema), - severity: PatternSeveritySchema, - improvement: external_exports2.string().optional(), - sessionPercentage: external_exports2.number().min(0).max(100).optional() -}); -var ContextPollutionSchema = external_exports2.object({ - description: external_exports2.string(), - impact: external_exports2.enum(["high", "medium", "low"]) -}); -var MultitaskingPatternSchema = external_exports2.object({ - mixesTopicsInSessions: external_exports2.boolean(), - contextPollutionInstances: external_exports2.array(ContextPollutionSchema), - focusScore: external_exports2.number().min(0).max(100).optional(), - recommendation: external_exports2.string().optional() -}); -var ThinkingQualityOutputSchema = external_exports2.object({ - // Planning Dimension - planningHabits: external_exports2.array(PlanningHabitSchema), - planQualityScore: external_exports2.number().min(0).max(100), - multitaskingPattern: MultitaskingPatternSchema.optional(), - // Critical Thinking Dimension - verificationBehavior: VerificationBehaviorSchema, - criticalThinkingMoments: external_exports2.array(CriticalThinkingMomentSchema), - verificationAntiPatterns: external_exports2.array(DetectedAntiPatternSchema), - // Overall Scores - overallThinkingQualityScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var PatternFrequencySchema = external_exports2.enum(["frequent", "occasional", "rare"]); -var PatternEffectivenessSchema = external_exports2.enum(["highly_effective", "effective", "could_improve"]); -var PatternExampleSchema = external_exports2.object({ - utteranceId: external_exports2.string(), - analysis: external_exports2.string() -}); -var CommunicationPatternSchema = external_exports2.object({ - patternName: external_exports2.string(), - description: external_exports2.string(), - frequency: PatternFrequencySchema, - examples: external_exports2.array(PatternExampleSchema).min(1).max(5), - effectiveness: PatternEffectivenessSchema, - tip: external_exports2.string().optional() -}); -var SignatureQuoteSchema = external_exports2.object({ - utteranceId: external_exports2.string(), - significance: external_exports2.string(), - representedStrength: external_exports2.string() -}); -var CommunicationPatternsOutputSchema = external_exports2.object({ - // Communication Patterns - communicationPatterns: external_exports2.array(CommunicationPatternSchema), - signatureQuotes: external_exports2.array(SignatureQuoteSchema).optional(), - // Overall Scores - overallCommunicationScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var KnowledgeGapItemSchema = external_exports2.object({ - topic: external_exports2.string(), - description: external_exports2.string(), - questionCount: external_exports2.number().int().min(1), - depth: external_exports2.enum(["shallow", "moderate", "deep"]), - example: external_exports2.string() -}); -var LearningProgressSchema = external_exports2.object({ - topic: external_exports2.string(), - description: external_exports2.string(), - startLevel: external_exports2.enum(["novice", "shallow", "moderate", "deep", "expert"]), - currentLevel: external_exports2.enum(["novice", "shallow", "moderate", "deep", "expert"]), - evidence: external_exports2.string() -}); -var ResourceSchema = external_exports2.object({ - topic: external_exports2.string(), - resourceType: external_exports2.enum(["docs", "tutorial", "course", "article", "video"]), - url: external_exports2.string() -}); -var RepeatedMistakePatternSchema = external_exports2.object({ - category: external_exports2.string(), - mistakeType: external_exports2.string(), - description: external_exports2.string(), - occurrenceCount: external_exports2.number().int().min(2), - sessionPercentage: external_exports2.number().min(0).max(100).optional(), - exampleUtteranceIds: external_exports2.array(external_exports2.string()).max(5), - recommendation: external_exports2.string() -}); -var LearningBehaviorOutputSchema = external_exports2.object({ - // Knowledge Gap Dimension - knowledgeGaps: external_exports2.array(KnowledgeGapItemSchema), - learningProgress: external_exports2.array(LearningProgressSchema), - recommendedResources: external_exports2.array(ResourceSchema), - // Repeated Mistakes Dimension - repeatedMistakePatterns: external_exports2.array(RepeatedMistakePatternSchema), - // Insights - topInsights: external_exports2.array(external_exports2.string()).max(3), - kptKeep: external_exports2.array(external_exports2.string()).max(2).optional(), - kptProblem: external_exports2.array(external_exports2.string()).max(2).optional(), - kptTry: external_exports2.array(external_exports2.string()).max(2).optional(), - // Overall Scores - overallLearningScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var ContextUsagePatternSchema = external_exports2.object({ - sessionId: external_exports2.string(), - avgFillPercent: external_exports2.number().min(0).max(100), - compactTriggerPercent: external_exports2.number().min(0).max(100).optional() -}); -var InefficiencyPatternEnum = external_exports2.enum([ - "late_compact", - "context_bloat", - "redundant_info", - "prompt_length_inflation", - "no_session_separation", - "verbose_error_pasting", - "no_knowledge_persistence" -]); -var InefficiencySchema = external_exports2.object({ - pattern: InefficiencyPatternEnum, - frequency: external_exports2.number().int().min(1), - impact: external_exports2.enum(["high", "medium", "low"]), - description: external_exports2.string() -}); -var PromptLengthTrendSchema = external_exports2.object({ - phase: external_exports2.enum(["early", "mid", "late"]), - avgLength: external_exports2.number().int().min(0) -}); -var RedundantInfoSchema = external_exports2.object({ - infoType: external_exports2.string(), - repeatCount: external_exports2.number().int().min(1) -}); -var IterationSummarySchema = external_exports2.object({ - sessionId: external_exports2.string(), - iterationCount: external_exports2.number().int().min(0), - avgTurnsPerIteration: external_exports2.number().min(0) -}); -var ContextEfficiencyOutputSchema = external_exports2.object({ - // Context usage patterns - contextUsagePatterns: external_exports2.array(ContextUsagePatternSchema), - inefficiencyPatterns: external_exports2.array(InefficiencySchema), - promptLengthTrends: external_exports2.array(PromptLengthTrendSchema), - redundantInfo: external_exports2.array(RedundantInfoSchema), - // Insights - topInsights: external_exports2.array(external_exports2.string()).max(3), - kptKeep: external_exports2.array(external_exports2.string()).max(2).optional(), - kptProblem: external_exports2.array(external_exports2.string()).max(2).optional(), - kptTry: external_exports2.array(external_exports2.string()).max(2).optional(), - // Overall Scores - overallEfficiencyScore: external_exports2.number().min(0).max(100), - avgContextFillPercent: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional(), - // Productivity metrics (consolidated from ProductivityAnalyst) - iterationSummaries: external_exports2.array(IterationSummarySchema).optional(), - collaborationEfficiencyScore: external_exports2.number().min(0).max(100).optional(), - overallProductivityScore: external_exports2.number().min(0).max(100).optional(), - productivitySummary: external_exports2.string().optional() -}); -var GoalCategoryEnum = external_exports2.enum([ - "debug_investigate", - "implement_feature", - "fix_bug", - "refactor", - "write_tests", - "setup_config", - "documentation", - "review_feedback", - "exploration", - "quick_question", - "deploy_infra", - "dependency_management", - "performance_optimization", - "security_audit" -]); -var SessionTypeEnum = external_exports2.enum([ - "single_task", - "multi_task", - "iterative_refinement", - "exploration", - "quick_question" -]); -var FrictionTypeEnum = external_exports2.enum([ - "misunderstood_request", - "wrong_approach", - "buggy_code_generated", - "user_rejection", - "blocked_state", - "tool_failure", - "context_overflow", - "hallucination", - "incomplete_solution", - "excessive_iterations", - "permission_error", - "environment_mismatch" -]); -var OutcomeEnum = external_exports2.enum([ - "fully_achieved", - "mostly_achieved", - "partially_achieved", - "not_achieved", - "unclear" -]); -var SatisfactionEnum = external_exports2.enum([ - "frustrated", - "dissatisfied", - "neutral", - "satisfied", - "happy" -]); -var SessionAnalysisSchema = external_exports2.object({ - sessionId: external_exports2.string(), - primaryGoal: GoalCategoryEnum, - secondaryGoals: external_exports2.array(GoalCategoryEnum).max(2).optional(), - sessionType: SessionTypeEnum, - outcome: OutcomeEnum, - satisfaction: SatisfactionEnum, - frictionTypes: external_exports2.array(FrictionTypeEnum).max(3), - keyMoment: external_exports2.string().optional() -}); -var GoalDistributionItemSchema = external_exports2.object({ - goal: GoalCategoryEnum, - count: external_exports2.number().int().min(1), - successRate: external_exports2.number().min(0).max(100) -}); -var SessionTypeDistributionItemSchema = external_exports2.object({ - type: SessionTypeEnum, - count: external_exports2.number().int().min(1), - avgOutcomeScore: external_exports2.number().min(0).max(100) -}); -var FrictionSummaryItemSchema = external_exports2.object({ - type: FrictionTypeEnum, - count: external_exports2.number().int().min(1), - impactLevel: external_exports2.enum(["high", "medium", "low"]), - commonCause: external_exports2.string(), - recommendation: external_exports2.string() -}); -var SuccessPatternSchema = external_exports2.object({ - pattern: external_exports2.string(), - associatedGoals: external_exports2.array(GoalCategoryEnum), - frequency: external_exports2.number().min(0).max(100) -}); -var FailurePatternSchema = external_exports2.object({ - pattern: external_exports2.string(), - associatedFrictions: external_exports2.array(FrictionTypeEnum), - frequency: external_exports2.number().min(0).max(100) -}); -var SessionOutcomeOutputSchema = external_exports2.object({ - // Per-Session Analysis - sessionAnalyses: external_exports2.array(SessionAnalysisSchema), - // Aggregated Statistics - overallSuccessRate: external_exports2.number().min(0).max(100), - goalDistribution: external_exports2.array(GoalDistributionItemSchema), - sessionTypeDistribution: external_exports2.array(SessionTypeDistributionItemSchema), - frictionSummary: external_exports2.array(FrictionSummaryItemSchema), - // Pattern Analysis - successPatterns: external_exports2.array(SuccessPatternSchema), - failurePatterns: external_exports2.array(FailurePatternSchema), - // Overall Scores - overallOutcomeScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var AiPartnershipOutputSchema = external_exports2.object({ - // Planning Dimension (from ThinkingQuality) - planningHabits: external_exports2.array(PlanningHabitSchema), - planQualityScore: external_exports2.number().min(0).max(100), - multitaskingPattern: MultitaskingPatternSchema.optional(), - // Critical Thinking Dimension (from ThinkingQuality) - verificationBehavior: VerificationBehaviorSchema, - criticalThinkingMoments: external_exports2.array(CriticalThinkingMomentSchema), - verificationAntiPatterns: external_exports2.array(DetectedAntiPatternSchema), - // AI Control Dimension (from SessionOutcome) - sessionAnalyses: external_exports2.array(SessionAnalysisSchema), - overallSuccessRate: external_exports2.number().min(0).max(100), - goalDistribution: external_exports2.array(GoalDistributionItemSchema), - frictionSummary: external_exports2.array(FrictionSummaryItemSchema), - // Overall Scores - overallAiPartnershipScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var SessionCraftOutputSchema = external_exports2.object({ - // Context Efficiency Dimension - contextUsagePatterns: external_exports2.array(ContextUsagePatternSchema), - inefficiencyPatterns: external_exports2.array(InefficiencySchema), - promptLengthTrends: external_exports2.array(PromptLengthTrendSchema), - avgContextFillPercent: external_exports2.number().min(0).max(100), - // Burnout / Learning Dimension - repeatedMistakePatterns: external_exports2.array(RepeatedMistakePatternSchema), - knowledgeGaps: external_exports2.array(KnowledgeGapItemSchema), - // Insights - topInsights: external_exports2.array(external_exports2.string()).max(3), - // Overall Scores - overallSessionCraftScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); -var AbsenceIndicatorSchema = external_exports2.object({ - /** Name of the anti-pattern being checked */ - pattern: external_exports2.string(), - /** Whether the anti-pattern was observed */ - present: external_exports2.boolean(), - /** Number of occurrences (0 = absent) */ - occurrenceCount: external_exports2.number().int().min(0), - /** Total sessions checked */ - sessionsChecked: external_exports2.number().int().min(1), - /** Score contribution: 0 (always present) to 100 (always absent) */ - absenceScore: external_exports2.number().min(0).max(100), - /** Evidence of presence (empty if absent — which is good) */ - evidence: external_exports2.array(EvidenceItemSchema), - /** - * Expert interpretation: - * - 'internalized': absence indicates mastery (skill no longer needs scaffolding) - * - 'not_applicable': pattern not relevant for this developer's workflow - * - 'concerning': absence may indicate gap (e.g., never verifies output) - */ - interpretation: external_exports2.enum(["internalized", "not_applicable", "concerning"]) -}); -var SessionCleanlinessSchema = external_exports2.object({ - sessionId: external_exports2.string(), - cleanlinessScore: external_exports2.number().min(0).max(100), - antiPatternCount: external_exports2.number().int().min(0), - /** Indicates expert-level session control */ - isCleanSession: external_exports2.boolean() -}); -var SessionMasteryOutputSchema = external_exports2.object({ - // Absence Indicators - absenceIndicators: external_exports2.array(AbsenceIndicatorSchema), - // Session Cleanliness - sessionCleanliness: external_exports2.array(SessionCleanlinessSchema), - cleanSessionPercentage: external_exports2.number().min(0).max(100), - // Expert Differentiation - scaffoldingDependencyScore: external_exports2.number().min(0).max(100), - internalizedSkillSignals: external_exports2.array(external_exports2.string()), - expertBehaviorIndicators: external_exports2.array(external_exports2.string()), - // Overall Scores - overallSessionMasteryScore: external_exports2.number().min(0).max(100), - confidenceScore: external_exports2.number().min(0).max(1), - summary: external_exports2.string().optional(), - // Domain-specific Strengths & Growth Areas - strengths: external_exports2.array(WorkerStrengthSchema).optional(), - growthAreas: external_exports2.array(WorkerGrowthSchema).optional(), - referencedInsights: external_exports2.array(ReferencedInsightSchema).optional() -}); - -// ../shared/dist/evaluation/canonical-analysis.js -var DOMAIN_TO_EVALUATION_DIMENSION = { - thinkingQuality: "aiControl", - communicationPatterns: "aiCollaboration", - learningBehavior: "skillResilience", - contextEfficiency: "contextEngineering", - sessionOutcome: "burnoutRisk" -}; -function normalizeQuote(text) { - return text.replace(/\s+/g, " ").trim(); -} -function buildVerificationKey(utteranceId, quote) { - return `${utteranceId}::${normalizeQuote(quote)}`; -} -function isRecord(value) { - return !!value && typeof value === "object" && !Array.isArray(value); -} -function filterEvidence(evidence, verification) { - if (!verification?.verifiedResults?.length) { - return evidence; - } - const verifiedKeys = new Set(verification.verifiedResults.filter((item) => item.verified).map((item) => buildVerificationKey(item.utteranceId, item.quote))); - return evidence.filter((item) => { - if (!item || typeof item === "string") { - return false; - } - return verifiedKeys.has(buildVerificationKey(item.utteranceId, item.quote)); - }); -} -function applyEvidenceVerification(domainResults, verification) { - if (!verification?.verifiedResults?.length) { - return domainResults; - } - return domainResults.map((result) => ({ - ...result, - strengths: result.strengths.map((strength) => ({ - ...strength, - evidence: filterEvidence(strength.evidence, verification) - })).filter((strength) => strength.evidence.length > 0), - growthAreas: result.growthAreas.map((area) => ({ - ...area, - evidence: filterEvidence(area.evidence, verification) - })).filter((area) => area.evidence.length > 0) - })); -} -function buildSessionSummaryLookup(sessionSummaries) { - const lookup = /* @__PURE__ */ new Map(); - for (const item of sessionSummaries?.summaries ?? []) { - lookup.set(item.sessionId, item.summary); - } - return lookup; -} -function buildReportActivitySessions(phase1Output, sessionSummaries) { - const summaryLookup = buildSessionSummaryLookup(sessionSummaries); - return (phase1Output.activitySessions ?? []).map((session) => ({ - sessionId: session.sessionId, - projectName: session.projectName, - startTime: session.startTime, - durationMinutes: Math.round((session.durationSeconds ?? 0) / 60 * 10) / 10, - messageCount: session.messageCount, - summary: summaryLookup.get(session.sessionId) ?? session.firstUserMessage ?? "Session activity", - ...typeof session.totalInputTokens === "number" ? { totalInputTokens: session.totalInputTokens } : {}, - ...typeof session.totalOutputTokens === "number" ? { totalOutputTokens: session.totalOutputTokens } : {} - })); -} -function assembleFinalEvaluationEnvelope(args) { - const evaluation = { - sessionId: args.sessionId, - analyzedAt: args.analyzedAt, - sessionsAnalyzed: args.sessionsAnalyzed, - avgPromptLength: args.avgPromptLength, - avgTurnsPerSession: args.avgTurnsPerSession, - ...args.activitySessions !== void 0 ? { activitySessions: args.activitySessions } : {}, - ...args.sessionSummaries !== void 0 ? { sessionSummaries: args.sessionSummaries } : {}, - ...args.projectSummaries !== void 0 ? { projectSummaries: args.projectSummaries } : {}, - ...args.weeklyInsights !== void 0 ? { weeklyInsights: args.weeklyInsights } : {}, - ...args.assembledSections ?? {}, - ...args.agentOutputs !== void 0 ? { agentOutputs: args.agentOutputs } : {}, - ...args.translatedAgentInsights !== void 0 ? { translatedAgentInsights: args.translatedAgentInsights } : {}, - ...args.knowledgeResources !== void 0 ? { knowledgeResources: args.knowledgeResources } : {}, - ...args.pipelineTokenUsage !== void 0 ? { pipelineTokenUsage: args.pipelineTokenUsage } : {}, - ...args.analysisMetadata !== void 0 ? { analysisMetadata: args.analysisMetadata } : {} - }; - return evaluation; -} -function toPromptPatternFrequency(value) { - if (typeof value === "number") { - if (value >= 0.34) - return "frequent"; - if (value >= 0.12) - return "occasional"; - return "rare"; - } - if (typeof value === "string") { - if (value === "frequent" || value === "occasional" || value === "rare") { - return value; - } - if (value === "often" || value === "high") - return "frequent"; - if (value === "sometimes" || value === "medium") - return "occasional"; - } - return "occasional"; -} -function toPromptPatternEffectiveness(value) { - if (typeof value === "string") { - if (value === "highly_effective" || value === "effective" || value === "could_improve") { - return value; - } - if (value === "very_effective" || value === "high") - return "highly_effective"; - if (value === "medium" || value === "moderate") - return "effective"; - } - return "effective"; -} -function buildPromptPatterns(domainResults) { - const communication = domainResults.find((result) => result.domain === "communicationPatterns"); - const rawPatterns = communication?.data && typeof communication.data === "object" ? communication.data.communicationPatterns : void 0; - if (!Array.isArray(rawPatterns)) { - return []; - } - return rawPatterns.filter((pattern) => !!pattern && typeof pattern === "object").map((pattern, index) => { - const evidence = Array.isArray(pattern.evidence) ? pattern.evidence : []; - return { - patternName: typeof pattern.title === "string" ? pattern.title : typeof pattern.patternId === "string" ? pattern.patternId : `Pattern ${index + 1}`, - description: typeof pattern.description === "string" ? pattern.description : "", - frequency: toPromptPatternFrequency(pattern.frequency), - examples: evidence.filter((item) => !!item && typeof item === "object").map((item) => ({ - quote: typeof item.quote === "string" ? item.quote : "", - analysis: typeof item.context === "string" ? item.context : "Observed in communication behavior" - })).filter((item) => item.quote).slice(0, 3), - effectiveness: toPromptPatternEffectiveness(pattern.effectiveness) - }; - }).filter((pattern) => typeof pattern.description === "string" && pattern.description.length > 0); -} -function buildTopFocusAreas(contentWriter) { - if (!contentWriter?.topFocusAreas?.length) { - return void 0; - } - return { - summary: "Highest-leverage collaboration habits surfaced in this analysis.", - areas: contentWriter.topFocusAreas.slice(0, 3).map((area, index) => ({ - rank: index + 1, - dimension: DOMAIN_TO_EVALUATION_DIMENSION[area.relatedQualities[0] ?? ""] ?? "aiCollaboration", - title: area.title, - narrative: area.description, - expectedImpact: `Improves ${area.relatedQualities.join(", ") || "overall collaboration quality"}.`, - priorityScore: Math.max(100 - index * 10, 70), - ...area.actions ? { actions: area.actions } : {} - })) - }; -} -function inferWeekRange(activitySessions, analyzedAt) { - const end = activitySessions[0]?.startTime ?? analyzedAt; - const startDate = new Date(end); - startDate.setDate(startDate.getDate() - 6); - return { - start: startDate.toISOString(), - end - }; -} -function buildWeeklyInsights(weeklyInsights, activitySessions, analyzedAt) { - if (!weeklyInsights) { - return void 0; - } - const totalMinutes = weeklyInsights.stats.totalMinutes; - return { - weekRange: inferWeekRange(activitySessions, analyzedAt), - stats: { - totalSessions: weeklyInsights.stats.sessionCount, - totalMinutes, - totalTokens: weeklyInsights.stats.totalTokens, - activeDays: weeklyInsights.stats.activeDays, - avgSessionMinutes: weeklyInsights.stats.sessionCount > 0 ? Math.round(totalMinutes / weeklyInsights.stats.sessionCount * 10) / 10 : 0 - }, - ...typeof weeklyInsights.stats.deltaSessionCount === "number" || typeof weeklyInsights.stats.deltaMinutes === "number" || typeof weeklyInsights.stats.deltaTokens === "number" ? { - comparison: { - sessionsDelta: weeklyInsights.stats.deltaSessionCount ?? 0, - minutesDelta: weeklyInsights.stats.deltaMinutes ?? 0, - tokensDelta: weeklyInsights.stats.deltaTokens ?? 0, - activeDaysDelta: 0 - } - } : {}, - projects: weeklyInsights.projects.map((project) => ({ - projectName: project.projectName, - sessionCount: project.sessionCount, - totalMinutes: Math.round(totalMinutes * project.percentage / 100), - percentage: project.percentage - })), - topProjectSessions: weeklyInsights.topSessions.map((session) => { - const activity = activitySessions.find((item) => item.sessionId === session.sessionId); - return { - summary: session.summary, - durationMinutes: activity?.durationMinutes ?? 0, - date: activity?.startTime ? new Date(activity.startTime).toLocaleDateString("en-US", { month: "short", day: "numeric" }) : "" - }; - }), - narrative: weeklyInsights.narrative, - highlights: weeklyInsights.highlights - }; -} -function buildWorkerInsights(domainResults) { - const workerInsights = {}; - for (const result of domainResults) { - if (result.domain === "content") - continue; - workerInsights[result.domain] = { - strengths: result.strengths, - growthAreas: result.growthAreas, - domainScore: result.overallScore - }; - } - return workerInsights; -} -function formatDisplayName(type) { - return type.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" "); -} -function mapAntiPatternSeverity(severity) { - if (severity === "critical" || severity === "significant") - return "significant"; - if (severity === "mild") - return "mild"; - return "moderate"; -} -function buildAntiPatternsAnalysis(domainResults) { - const tq = domainResults.find((r) => r.domain === "thinkingQuality"); - const data = tq?.data; - const antiPatterns = data?.verificationAntiPatterns; - if (!Array.isArray(antiPatterns) || antiPatterns.length === 0) { - return void 0; - } - const detected = antiPatterns.filter((ap) => isRecord(ap)).map((ap) => { - const type = String(ap.type ?? "unknown"); - return { - antiPatternType: type, - displayName: formatDisplayName(type), - description: typeof ap.improvement === "string" ? ap.improvement : `Detected ${type.replace(/_/g, " ")} pattern`, - occurrences: typeof ap.frequency === "number" ? ap.frequency : 1, - severity: mapAntiPatternSeverity(ap.severity), - evidence: Array.isArray(ap.examples) ? ap.examples.filter((e) => isRecord(e)).map((e) => typeof e.quote === "string" ? e.quote : "").filter(Boolean) : [], - growthOpportunity: typeof ap.improvement === "string" ? ap.improvement : `Consider addressing the ${type.replace(/_/g, " ")} pattern`, - actionableTip: typeof ap.improvement === "string" ? ap.improvement : `Try to be more mindful of ${type.replace(/_/g, " ")} patterns` - }; - }); - return { - detected, - summary: typeof data?.summary === "string" ? data.summary : "Some growth opportunities were identified. These are common learning patterns that every developer experiences.", - overallHealthScore: tq?.overallScore ?? 80 - }; -} -function buildCriticalThinkingAnalysis(domainResults) { - const tq = domainResults.find((r) => r.domain === "thinkingQuality"); - const data = tq?.data; - const moments = data?.criticalThinkingMoments; - if (!Array.isArray(moments) || moments.length === 0) { - return void 0; - } - const strengths = moments.filter((ct) => isRecord(ct)).map((ct) => ({ - indicatorType: typeof ct.type === "string" ? ct.type : "unknown", - displayName: formatDisplayName(typeof ct.type === "string" ? ct.type : "unknown"), - description: typeof ct.result === "string" ? ct.result : `Demonstrated ${String(ct.type ?? "critical thinking").replace(/_/g, " ")}`, - frequency: 1, - quality: "intermediate", - evidence: typeof ct.quote === "string" ? [ct.quote] : [] - })); - const uniqueTypes = new Set(moments.filter((ct) => isRecord(ct)).map((ct) => ct.type)); - const overallScore = Math.min(100, 40 + uniqueTypes.size * 10 + moments.length * 5); - return { - strengths, - opportunities: [], - summary: typeof data?.summary === "string" ? data.summary : "Shows signs of critical evaluation when working with AI-generated content.", - overallScore - }; -} -function buildPlanningAnalysis(domainResults) { - const tq = domainResults.find((r) => r.domain === "thinkingQuality"); - const data = tq?.data; - const habits = data?.planningHabits; - if (!Array.isArray(habits) || habits.length === 0) { - return void 0; - } - const hasSlashPlan = habits.some((h) => isRecord(h) && h.type === "uses_plan_command"); - const hasTodoWrite = habits.some((h) => isRecord(h) && h.type === "todowrite_usage"); - const hasTaskDecomp = habits.some((h) => isRecord(h) && h.type === "task_decomposition"); - const maturityLevel = hasSlashPlan && hasTaskDecomp ? "expert" : hasSlashPlan ? "structured" : hasTodoWrite || hasTaskDecomp ? "emerging" : "reactive"; - const strengths = []; - const opportunities = []; - for (const habit of habits) { - if (!isRecord(habit)) - continue; - const type = typeof habit.type === "string" ? habit.type : "unknown"; - const frequency = typeof habit.frequency === "string" ? habit.frequency : "sometimes"; - const effectiveness = typeof habit.effectiveness === "string" ? habit.effectiveness : "medium"; - const insight = { - behaviorType: type, - displayName: formatDisplayName(type), - description: `Planning habit "${type.replace(/_/g, " ")}" observed with ${frequency} frequency`, - frequency: frequency === "always" || frequency === "often" ? 3 : frequency === "sometimes" ? 2 : 1, - sophistication: effectiveness === "high" ? "advanced" : effectiveness === "medium" ? "intermediate" : "basic", - evidence: Array.isArray(habit.examples) ? habit.examples : [] - }; - const isStrength = effectiveness === "high" || frequency === "always" || frequency === "often"; - if (isStrength) { - strengths.push(insight); - } else { - opportunities.push(insight); - } - } - return { - strengths, - opportunities, - summary: typeof data?.summary === "string" ? data.summary : "Shows planning awareness in development workflow.", - planningMaturityLevel: maturityLevel - }; -} -function normalizeInefficiencyPattern(value) { - if (value === "late_compact" || value === "context_bloat" || value === "redundant_info" || value === "prompt_length_inflation" || value === "no_session_separation" || value === "verbose_error_pasting" || value === "no_knowledge_persistence") { - return value; - } - if (value === "stale_context" || value === "context_spillover") { - return "context_bloat"; - } - return "context_bloat"; -} -function buildAgentOutputs(phase1Output, domainResults) { - const contextEfficiency = domainResults.find((result) => result.domain === "contextEfficiency"); - const patterns = contextEfficiency?.data && typeof contextEfficiency.data === "object" ? contextEfficiency.data.inefficiencyPatterns : void 0; - if (!contextEfficiency) { - return void 0; - } - const mappedPatterns = Array.isArray(patterns) ? patterns.filter((pattern) => isRecord(pattern)).map((pattern) => ({ - pattern: normalizeInefficiencyPattern(pattern.type ?? pattern.pattern), - frequency: typeof pattern.frequency === "number" ? Math.max(1, Math.round(pattern.frequency)) : 1, - impact: pattern.impact === "high" || pattern.impact === "low" ? pattern.impact : "medium", - description: typeof pattern.description === "string" ? pattern.description : `Observed ${String(pattern.type ?? pattern.pattern ?? "context issue")} behavior with ${String(pattern.impact ?? "medium")} impact.` - })) : []; - return { - efficiency: { - contextUsagePatterns: [], - inefficiencyPatterns: mappedPatterns, - promptLengthTrends: [], - redundantInfo: [], - topInsights: [], - overallEfficiencyScore: contextEfficiency.overallScore, - avgContextFillPercent: phase1Output.sessionMetrics.avgContextFillPercent ?? 0, - confidenceScore: contextEfficiency.confidenceScore, - strengths: contextEfficiency.strengths, - growthAreas: contextEfficiency.growthAreas - } - }; -} -function mergePromptPatternTranslations(evaluation, translatedFields) { - if (!Array.isArray(translatedFields.promptPatterns) || !Array.isArray(evaluation.promptPatterns)) { - return; - } - const translatedPatterns = translatedFields.promptPatterns; - const englishPatterns = evaluation.promptPatterns; - const minLength = Math.min(translatedPatterns.length, englishPatterns.length); - for (let i = 0; i < minLength; i += 1) { - const translated = translatedPatterns[i]; - const english = englishPatterns[i]; - if (typeof translated.patternName === "string") - english.patternName = translated.patternName; - if (typeof translated.description === "string") - english.description = translated.description; - if (typeof translated.tip === "string") - english.tip = translated.tip; - if (!Array.isArray(translated.examples) || !Array.isArray(english.examples)) { - continue; - } - const translatedExamples = translated.examples; - const englishExamples = english.examples; - const exampleCount = Math.min(translatedExamples.length, englishExamples.length); - for (let j = 0; j < exampleCount; j += 1) { - if (typeof translatedExamples[j]?.analysis === "string") { - englishExamples[j].analysis = translatedExamples[j].analysis; - } - } - } -} -function mergeTopFocusAreaTranslations(evaluation, translatedFields) { - if (!isRecord(translatedFields.topFocusAreas) || !isRecord(evaluation.topFocusAreas)) { - return; - } - const translated = translatedFields.topFocusAreas; - const english = evaluation.topFocusAreas; - if (typeof translated.summary === "string") { - english.summary = translated.summary; - } - if (!Array.isArray(translated.areas) || !Array.isArray(english.areas)) { - return; - } - const englishAreas = english.areas; - for (const translatedArea of translated.areas) { - const rank = typeof translatedArea.rank === "number" ? translatedArea.rank : null; - const englishArea = rank === null ? void 0 : englishAreas.find((area) => area.rank === rank); - if (!englishArea) - continue; - if (typeof translatedArea.title === "string") - englishArea.title = translatedArea.title; - if (typeof translatedArea.narrative === "string") - englishArea.narrative = translatedArea.narrative; - if (typeof translatedArea.expectedImpact === "string") { - englishArea.expectedImpact = translatedArea.expectedImpact; - } - if (!isRecord(translatedArea.actions) || !isRecord(englishArea.actions)) { - continue; - } - englishArea.actions = { - start: typeof translatedArea.actions.start === "string" ? translatedArea.actions.start : "", - stop: typeof translatedArea.actions.stop === "string" ? translatedArea.actions.stop : "", - continue: typeof translatedArea.actions.continue === "string" ? translatedArea.actions.continue : "" - }; - } -} -function mergeProjectSummaryTranslations(evaluation, translatedFields) { - if (!Array.isArray(translatedFields.projectSummaries) || !Array.isArray(evaluation.projectSummaries)) { - return; - } - const englishProjects = evaluation.projectSummaries; - for (const translatedProject of translatedFields.projectSummaries) { - const projectName = typeof translatedProject.projectName === "string" ? translatedProject.projectName : null; - const englishProject = projectName ? englishProjects.find((project) => project.projectName === projectName) : void 0; - if (!englishProject || !Array.isArray(translatedProject.summaryLines)) { - continue; - } - englishProject.summaryLines = translatedProject.summaryLines; - } -} -function mergeWeeklyInsightTranslations(evaluation, translatedFields) { - if (!isRecord(translatedFields.weeklyInsights) || !isRecord(evaluation.weeklyInsights)) { - return; - } - const translated = translatedFields.weeklyInsights; - const english = evaluation.weeklyInsights; - if (typeof translated.narrative === "string") { - english.narrative = translated.narrative; - } - if (Array.isArray(translated.highlights)) { - english.highlights = translated.highlights; - } - if (!Array.isArray(translated.topSessionSummaries) || !Array.isArray(english.topProjectSessions)) { - return; - } - const englishTopSessions = english.topProjectSessions; - const sessionCount = Math.min(translated.topSessionSummaries.length, englishTopSessions.length); - for (let i = 0; i < sessionCount; i += 1) { - if (typeof translated.topSessionSummaries[i] === "string") { - englishTopSessions[i].summary = translated.topSessionSummaries[i]; - } - } -} -function mergeTranslatedAgentInsights(evaluation, translatedFields) { - if (!isRecord(translatedFields.translatedAgentInsights)) { - return; - } - evaluation.translatedAgentInsights = translatedFields.translatedAgentInsights; -} -function mergeTranslatedEvaluationFields(evaluation, translatedFields, targetLanguage) { - const cjkLanguages = /* @__PURE__ */ new Set(["ko", "ja", "zh"]); - const minLengthRatio = targetLanguage && cjkLanguages.has(targetLanguage) ? 0.45 : 0.65; - if (typeof translatedFields.personalitySummary === "string") { - const englishSummary = typeof evaluation.personalitySummary === "string" ? evaluation.personalitySummary : ""; - const translatedSummary = translatedFields.personalitySummary; - const ratio = englishSummary.length > 0 ? translatedSummary.length / englishSummary.length : 1; - if (englishSummary.length === 0 || ratio >= minLengthRatio) { - evaluation.personalitySummary = translatedSummary; - } - } - mergeTranslatedAgentInsights(evaluation, translatedFields); - mergeProjectSummaryTranslations(evaluation, translatedFields); - mergeWeeklyInsightTranslations(evaluation, translatedFields); - mergePromptPatternTranslations(evaluation, translatedFields); - mergeTopFocusAreaTranslations(evaluation, translatedFields); -} -function mergeTranslation(evaluation, translator) { - if (!translator?.translatedFields || typeof translator.translatedFields !== "object") { - return; - } - mergeTranslatedEvaluationFields(evaluation, translator.translatedFields, translator.targetLanguage); -} -function buildCanonicalEvaluation(args) { - const { analyzedAt, phase1Output, activitySessions, deterministicScores, typeResult, domainResults, stageOutputs } = args; - const filteredDomainResults = applyEvidenceVerification(domainResults, stageOutputs.evidenceVerification); - const confidenceScores = filteredDomainResults.map((result) => result.confidenceScore).filter((score) => typeof score === "number"); - const overallConfidence = confidenceScores.length > 0 ? Math.round(confidenceScores.reduce((sum, score) => sum + score, 0) / confidenceScores.length * 100) / 100 : 0; - const filteredEvidenceCount = stageOutputs.evidenceVerification?.domainStats?.reduce((sum, stat2) => sum + stat2.filteredCount, 0) ?? 0; - const dataQuality = phase1Output.sessionMetrics.totalSessions >= 10 ? "high" : phase1Output.sessionMetrics.totalSessions >= 5 ? "medium" : "low"; - const agentOutputs = buildAgentOutputs(phase1Output, filteredDomainResults); - const antiPatterns = buildAntiPatternsAnalysis(filteredDomainResults); - const criticalThinking = buildCriticalThinkingAnalysis(filteredDomainResults); - const planning = buildPlanningAnalysis(filteredDomainResults); - const evaluation = assembleFinalEvaluationEnvelope({ - sessionId: activitySessions[0]?.sessionId ?? phase1Output.activitySessions?.[0]?.sessionId ?? "plugin-local-analysis", - analyzedAt, - sessionsAnalyzed: phase1Output.sessionMetrics.totalSessions, - avgPromptLength: Math.round(phase1Output.sessionMetrics.avgDeveloperMessageLength), - avgTurnsPerSession: Math.round(phase1Output.sessionMetrics.avgMessagesPerSession * 10) / 10, - activitySessions, - sessionSummaries: stageOutputs.sessionSummaries?.summaries, - projectSummaries: stageOutputs.projectSummaries?.projects, - weeklyInsights: buildWeeklyInsights(stageOutputs.weeklyInsights, activitySessions, analyzedAt), - assembledSections: { - primaryType: typeResult?.primaryType ?? "analyst", - controlLevel: typeResult?.controlLevel ?? "navigator", - ...typeof typeResult?.controlScore === "number" ? { controlScore: typeResult.controlScore } : {}, - distribution: typeResult?.distribution ?? { - architect: 20, - analyst: 20, - conductor: 20, - speedrunner: 20, - trendsetter: 20 - }, - personalitySummary: stageOutputs.typeClassification?.personalityNarrative?.join("\n\n") ?? stageOutputs.typeClassification?.reasoning?.join("\n\n") ?? "", - promptPatterns: buildPromptPatterns(filteredDomainResults), - topFocusAreas: buildTopFocusAreas(stageOutputs.contentWriter), - workerInsights: buildWorkerInsights(filteredDomainResults), - // Structured sub-analyses from thinkingQuality domain data (Fix 4) - ...antiPatterns ? { antiPatternsAnalysis: antiPatterns } : {}, - ...criticalThinking ? { criticalThinkingAnalysis: criticalThinking } : {}, - ...planning ? { planningAnalysis: planning } : {} - }, - agentOutputs, - pipelineTokenUsage: { - stages: [], - totals: { promptTokens: 0, completionTokens: 0, totalTokens: 0 }, - cost: { inputCost: 0, outputCost: 0, totalCost: 0 }, - model: "plugin-local", - modelName: "plugin-local" - }, - analysisMetadata: { - overallConfidence, - totalMessagesAnalyzed: phase1Output.sessionMetrics.totalMessages, - dataQuality, - analysisDateRange: phase1Output.sessionMetrics.dateRange, - confidenceThreshold: stageOutputs.evidenceVerification ? 0.5 : void 0, - insightsFiltered: filteredEvidenceCount, - deterministicScores, - evidenceVerification: stageOutputs.evidenceVerification ? { - threshold: stageOutputs.evidenceVerification.threshold, - domainStats: stageOutputs.evidenceVerification.domainStats - } : void 0 - } - }); - mergeTranslation(evaluation, stageOutputs.translator); - return evaluation; -} -function assembleCanonicalAnalysisRun(args) { - const activitySessions = buildReportActivitySessions(args.phase1Output, args.stageOutputs.sessionSummaries); - const evaluation = buildCanonicalEvaluation({ - analyzedAt: args.analyzedAt, - phase1Output: args.phase1Output, - activitySessions, - deterministicScores: args.deterministicScores, - typeResult: args.typeResult, - domainResults: args.domainResults, - stageOutputs: args.stageOutputs - }); - return { - runId: args.runId, - analyzedAt: args.analyzedAt, - phase1Output: args.phase1Output, - activitySessions, - deterministicScores: args.deterministicScores, - typeResult: args.typeResult, - domainResults: applyEvidenceVerification(args.domainResults, args.stageOutputs.evidenceVerification), - stageOutputs: args.stageOutputs, - evaluation, - ...args.stageOutputs.translator ? { translation: args.stageOutputs.translator } : {} - }; -} - -// ../shared/dist/scoring/deterministic-scorer.js -function clampScore(value, min = 0, max = 100) { - return Math.round(Math.max(min, Math.min(max, value))); -} -function invertedScale(value) { - return 100 - Math.max(0, Math.min(100, value)); -} -function bellCurveScore(value, optimalLow, optimalHigh, falloffRate = 0.01) { - if (value >= optimalLow && value <= optimalHigh) - return 100; - const distance = value < optimalLow ? optimalLow - value : value - optimalHigh; - return 100 * Math.exp(-falloffRate * distance * distance); -} -function coefficientOfVariation(values) { - if (values.length === 0) - return 0; - const mean = values.reduce((sum, v) => sum + v, 0) / values.length; - if (mean === 0) - return 0; - const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length; - return Math.sqrt(variance) / mean; -} -function scoreContextEfficiency(metrics) { - const avgFill = metrics.avgContextFillPercent ?? 50; - const totalSessions = Math.max(metrics.totalSessions, 1); - const baseScore = invertedScale(avgFill); - const overflowCount = metrics.contextFillExceeded90Count ?? 0; - const overflowRatio = overflowCount / totalSessions; - const overflowPenalty = overflowRatio * 30; - const slashCmds = metrics.slashCommandCounts ?? {}; - const compactCount = (slashCmds["compact"] ?? 0) + (slashCmds["clear"] ?? 0); - const compactionBonus = compactCount > 0 ? Math.min(compactCount * 3, 15) : 0; - const longSessionRatio = (metrics.sessionHints?.longSessions ?? 0) / totalSessions; - const longSessionPenalty = longSessionRatio * 10; - return clampScore(baseScore - overflowPenalty + compactionBonus - longSessionPenalty); -} -function scoreSessionOutcome(metrics) { - const totalSessions = Math.max(metrics.totalSessions, 1); - const friction = metrics.frictionSignals; - const toolFailures = friction?.toolFailureCount ?? 0; - const rejections = friction?.userRejectionSignals ?? 0; - const excessiveIterations = friction?.excessiveIterationSessions ?? 0; - const contextOverflows = friction?.contextOverflowSessions ?? 0; - const frustrationExpressions = friction?.frustrationExpressionCount ?? 0; - const totalFriction = toolFailures + rejections + excessiveIterations + contextOverflows + frustrationExpressions; - const frictionDensity = totalFriction / totalSessions; - const baseScore = 85 * Math.exp(-0.3 * frictionDensity); - const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0; - const mediumRatio = mediumSessions / totalSessions; - const balanceBonus = mediumRatio * 15; - const excessiveRatio = excessiveIterations / totalSessions; - const excessivePenalty = excessiveRatio * 10; - return clampScore(baseScore + balanceBonus - excessivePenalty); -} -function scoreThinkingQuality(metrics) { - const slashCmds = metrics.slashCommandCounts ?? {}; - const planCount = slashCmds["plan"] ?? 0; - const reviewCount = slashCmds["review"] ?? 0; - const planningActivityCount = planCount + reviewCount; - const planningScore = planningActivityCount > 0 ? 30 + 55 * (1 - Math.exp(-0.4 * planningActivityCount)) : 30; - const questionRatio = metrics.questionRatio; - const criticalThinkingFromQuestions = bellCurveScore(questionRatio * 100, 15, 40, 3e-3); - const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / Math.max(metrics.totalDeveloperUtterances, 1); - const criticalThinkingFromRejections = bellCurveScore(rejectionRate * 100, 2, 10, 5e-3); - const criticalThinkingScore = criticalThinkingFromQuestions * 0.6 + criticalThinkingFromRejections * 0.4; - const toolFailureRate = (metrics.frictionSignals?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1); - let errorRecoveryScore = 80 * Math.exp(-8 * toolFailureRate) + 20; - const errorChainMax = metrics.frictionSignals?.errorChainMaxLength ?? 0; - if (errorChainMax >= 3) { - const chainPenalty = Math.min((errorChainMax - 2) * 5, 30); - errorRecoveryScore = Math.max(0, errorRecoveryScore - chainPenalty); - } - return clampScore(planningScore * 0.4 + criticalThinkingScore * 0.3 + errorRecoveryScore * 0.3); -} -function scoreLearningBehavior(metrics) { - const totalSessions = Math.max(metrics.totalSessions, 1); - const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); - const questionScore = Math.min(metrics.questionRatio * 200, 100); - const insightCount = metrics.aiInsightBlockCount ?? 0; - const insightEngagement = insightCount > 0 ? 40 + 50 * (1 - Math.exp(-0.1 * insightCount)) : 40; - const learningIntentScore = questionScore * 0.6 + insightEngagement * 0.4; - const excessiveIterationRate = (metrics.frictionSignals?.excessiveIterationSessions ?? 0) / totalSessions; - const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances; - const combinedMistakeRate = excessiveIterationRate + bareRetryRate; - const mistakeScore = invertedScale(combinedMistakeRate * 100) * 0.8 + 20; - const codeExperimentation = Math.min(metrics.codeBlockRatio * 150, 100); - const slashCmds = metrics.slashCommandCounts ?? {}; - const uniqueCommands = Object.keys(slashCmds).length; - const diversityBonus = Math.min(uniqueCommands * 8, 40); - const experimentationScore = codeExperimentation * 0.6 + diversityBonus * 0.4 + 20; - return clampScore(learningIntentScore * 0.5 + mistakeScore * 0.3 + experimentationScore * 0.2); -} -function scoreCommunicationPatterns(metrics, phase1Output) { - const avgLen = metrics.avgDeveloperMessageLength; - const promptQualityScore = bellCurveScore(avgLen, 200, 500, 3e-5); - const codeStructure = Math.min(metrics.codeBlockRatio * 200, 100); - const questionStructure = Math.min(metrics.questionRatio * 250, 100); - const structureScore = codeStructure * 0.5 + questionStructure * 0.5; - const wordCounts = phase1Output.developerUtterances.map((u) => u.wordCount); - const cv = coefficientOfVariation(wordCounts); - const consistencyScore = 100 * Math.exp(-0.3 * cv); - return clampScore(promptQualityScore * 0.4 + structureScore * 0.3 + consistencyScore * 0.3); -} -function scoreControl(metrics) { - const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); - const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / totalUtterances; - const rejectionSignal = Math.min(rejectionRate * 500, 100); - const questionSignal = Math.min(metrics.questionRatio * 200, 100); - const avgLen = metrics.avgDeveloperMessageLength; - const lengthSignal = Math.min(avgLen / 5, 100); - const slashCmds = metrics.slashCommandCounts ?? {}; - const uniqueCommands = Object.keys(slashCmds).length; - const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0); - const commandSignal = Math.min(uniqueCommands * 10 + totalCommands * 2, 100); - return clampScore(rejectionSignal * 0.25 + questionSignal * 0.25 + lengthSignal * 0.25 + commandSignal * 0.25); -} -function scoreAiPartnership(metrics) { - const thinking = scoreThinkingQuality(metrics); - const outcome = scoreSessionOutcome(metrics); - const control = scoreControl(metrics); - return clampScore(thinking * 0.4 + outcome * 0.35 + control * 0.25); -} -function scoreSessionCraft(metrics) { - const efficiency = scoreContextEfficiency(metrics); - const learning = scoreLearningBehavior(metrics); - return clampScore(efficiency * 0.55 + learning * 0.45); -} -function scoreSkillResilience(metrics) { - const totalSessions = Math.max(metrics.totalSessions, 1); - const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); - const shortSessions = metrics.sessionHints?.shortSessions ?? 0; - const shortRatio = shortSessions / totalSessions; - const coldStartScore = bellCurveScore(shortRatio * 100, 20, 50, 3e-3); - const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances; - const recoveryScore = invertedScale(bareRetryRate * 200); - const slashCmds = metrics.slashCommandCounts ?? {}; - const uniqueCommands = Object.keys(slashCmds).length; - const diversityScore = Math.min(uniqueCommands * 12 + 20, 100); - return clampScore(coldStartScore * 0.3 + recoveryScore * 0.4 + diversityScore * 0.3); -} -function scoreSessionMastery(metrics) { - const totalSessions = Math.max(metrics.totalSessions, 1); - const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); - const friction = metrics.frictionSignals; - const excessiveIterationRate = (friction?.excessiveIterationSessions ?? 0) / totalSessions; - const noExcessiveScore = invertedScale(excessiveIterationRate * 150); - const overflowRate = (metrics.contextFillExceeded90Count ?? 0) / totalSessions; - const noOverflowScore = invertedScale(overflowRate * 120); - const bareRetryRate = (friction?.bareRetryAfterErrorCount ?? 0) / totalUtterances; - const noRetryScore = invertedScale(bareRetryRate * 300); - const frustrationRate = (friction?.frustrationExpressionCount ?? 0) / totalUtterances; - const noFrustrationScore = invertedScale(frustrationRate * 400); - const toolFailureRate = (friction?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1); - const noToolFailureScore = invertedScale(toolFailureRate * 200); - const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0; - const focusBonus = mediumSessions / totalSessions * 15; - return clampScore(noExcessiveScore * 0.25 + noOverflowScore * 0.2 + noRetryScore * 0.2 + noFrustrationScore * 0.15 + noToolFailureScore * 0.1 + focusBonus + 10); -} -function computeDeterministicScores(phase1Output) { - const metrics = phase1Output.sessionMetrics; - return { - aiPartnership: scoreAiPartnership(metrics), - sessionCraft: scoreSessionCraft(metrics), - toolMastery: scoreCommunicationPatterns(metrics, phase1Output), - skillResilience: scoreSkillResilience(metrics), - sessionMastery: scoreSessionMastery(metrics), - controlScore: scoreControl(metrics) - }; -} - -// ../shared/dist/constants.js -var CONTEXT_WINDOW_SIZE = 2e5; -var MATRIX_NAMES = { - architect: { - explorer: "Visionary", - navigator: "Strategist", - cartographer: "Systems Architect" - }, - analyst: { - explorer: "Questioner", - navigator: "Research Lead", - cartographer: "Quality Sentinel" - }, - conductor: { - explorer: "Improviser", - navigator: "Arranger", - cartographer: "Maestro" - }, - speedrunner: { - explorer: "Experimenter", - navigator: "Rapid Prototyper", - cartographer: "Velocity Expert" - }, - trendsetter: { - explorer: "Early Adopter", - navigator: "Tech Radar", - cartographer: "Innovation Lead" - } -}; -var MATRIX_METADATA = { - architect: { - explorer: { emoji: "\u{1F4AD}" }, - navigator: { emoji: "\u{1F4D0}" }, - cartographer: { emoji: "\u{1F3DB}\uFE0F" } - }, - analyst: { - explorer: { emoji: "\u{1F50E}" }, - navigator: { emoji: "\u{1F9EA}" }, - cartographer: { emoji: "\u{1F52C}" } - }, - conductor: { - explorer: { emoji: "\u{1F3B5}" }, - navigator: { emoji: "\u{1F3BC}" }, - cartographer: { emoji: "\u{1F3B9}" } - }, - speedrunner: { - explorer: { emoji: "\u{1F3B2}" }, - navigator: { emoji: "\u{1F3C3}" }, - cartographer: { emoji: "\u26A1" } - }, - trendsetter: { - explorer: { emoji: "\u{1F331}" }, - navigator: { emoji: "\u{1F4E1}" }, - cartographer: { emoji: "\u{1F680}" } - } -}; - -// ../shared/dist/scoring/deterministic-type-mapper.js -var TREND_KEYWORDS_KO = ["\uCD5C\uC2E0", "\uD2B8\uB80C\uB4DC", "\uC720\uD589", "\uC0C8\uB85C\uC6B4", "\uC5C5\uB370\uC774\uD2B8\uB41C", "\uC694\uC998"]; -var TREND_KEYWORDS_EN = ["latest", "newest", "trending", "modern", "up-to-date", "best practice", "current version", "recently released"]; -var ALL_TREND_KEYWORDS = [...TREND_KEYWORDS_KO, ...TREND_KEYWORDS_EN]; -function computeTrendDensity(phase1Output) { - const utterances = phase1Output.developerUtterances; - if (utterances.length === 0) - return 0; - let totalMatches = 0; - for (const utterance of utterances) { - const text = (utterance.displayText || utterance.text).toLowerCase(); - for (const keyword of ALL_TREND_KEYWORDS) { - const regex = new RegExp(keyword.toLowerCase(), "g"); - const matches = text.match(regex); - if (matches) - totalMatches += matches.length; - } - } - return totalMatches / utterances.length * 100; -} -var STYLE_TYPES = ["architect", "analyst", "conductor", "speedrunner", "trendsetter"]; -function computeAffinities(scores, metrics, trendDensity) { - const slashCmds = metrics.slashCommandCounts ?? {}; - const planCount = (slashCmds["plan"] ?? 0) + (slashCmds["review"] ?? 0); - const planBonus = planCount > 0 ? Math.min(planCount * 8, 30) : 0; - const architectAffinity = scores.aiPartnership * 0.5 + scores.controlScore * 0.3 + planBonus; - const analystAffinity = scores.aiPartnership * 0.3 + scores.sessionCraft * 0.4 + scores.sessionMastery * 0.2 + (metrics.questionRatio > 0.2 ? 10 : 0); - const uniqueCommands = Object.keys(slashCmds).length; - const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0); - const orchestrationCmds = (slashCmds["sisyphus"] ?? 0) + (slashCmds["orchestrator"] ?? 0) + (slashCmds["ultrawork"] ?? 0) + (slashCmds["ralph-loop"] ?? 0); - const commandDiversityScore = Math.min(uniqueCommands * 12, 60); - const commandVolumeScore = Math.min(totalCommands * 2, 30); - const orchestrationBonus = orchestrationCmds > 0 ? Math.min(orchestrationCmds * 10, 30) : 0; - const conductorAffinity = commandDiversityScore + commandVolumeScore + orchestrationBonus; - const avgLen = metrics.avgDeveloperMessageLength; - const concisenessScore = avgLen < 200 ? 40 : avgLen < 400 ? 25 : 10; - const speedrunnerAffinity = scores.sessionCraft * 0.5 + concisenessScore + (scores.sessionMastery > 70 ? 15 : 0); - const trendKeywordScore = trendDensity > 3 ? Math.min(trendDensity * 15, 60) : trendDensity * 5; - const learningCuriosityBonus = scores.sessionCraft > 70 ? 15 : 0; - const trendsetterAffinity = trendKeywordScore + learningCuriosityBonus; - return { - architect: architectAffinity, - analyst: analystAffinity, - conductor: conductorAffinity, - speedrunner: speedrunnerAffinity, - trendsetter: trendsetterAffinity - }; -} -function normalizeToDistribution(affinities) { - const MIN_PERCENT = 5; - const totalAffinity = STYLE_TYPES.reduce((sum2, t) => sum2 + Math.max(affinities[t], 0), 0); - if (totalAffinity === 0) { - return { architect: 20, analyst: 20, conductor: 20, speedrunner: 20, trendsetter: 20 }; - } - const raw = {}; - for (const type of STYLE_TYPES) { - raw[type] = Math.max(affinities[type] / totalAffinity * 100, 0); - } - let totalBelow = 0; - let totalAbove = 0; - const aboveTypes = []; - for (const type of STYLE_TYPES) { - if (raw[type] < MIN_PERCENT) { - totalBelow += MIN_PERCENT - raw[type]; - raw[type] = MIN_PERCENT; - } else { - totalAbove += raw[type]; - aboveTypes.push(type); - } - } - if (totalBelow > 0 && totalAbove > 0) { - for (const type of aboveTypes) { - raw[type] -= totalBelow * (raw[type] / totalAbove); - } - } - const result = {}; - let sum = 0; - for (const type of STYLE_TYPES) { - result[type] = Math.round(raw[type]); - sum += result[type]; - } - if (sum !== 100) { - const maxType = STYLE_TYPES.reduce((a, b) => result[a] >= result[b] ? a : b); - result[maxType] += 100 - sum; - } - return result; -} -function controlLevelFromScore(score) { - if (score <= 34) - return "explorer"; - if (score <= 64) - return "navigator"; - return "cartographer"; -} -function computeDeterministicType(scores, phase1Output) { - const metrics = phase1Output.sessionMetrics; - const trendDensity = computeTrendDensity(phase1Output); - const affinities = computeAffinities(scores, metrics, trendDensity); - const distribution = normalizeToDistribution(affinities); - const primaryType = STYLE_TYPES.reduce((a, b) => affinities[a] >= affinities[b] ? a : b); - const controlLevel = controlLevelFromScore(scores.controlScore); - const matrixName = MATRIX_NAMES[primaryType][controlLevel]; - const matrixEmoji = MATRIX_METADATA[primaryType][controlLevel].emoji; - return { - primaryType, - distribution, - controlLevel, - controlScore: scores.controlScore, - matrixName, - matrixEmoji - }; -} - -// lib/core/types.ts -var TextBlockSchema = external_exports.object({ - type: external_exports.literal("text"), - text: external_exports.string() -}); -var ToolUseBlockSchema = external_exports.object({ - type: external_exports.literal("tool_use"), - id: external_exports.string(), - name: external_exports.string(), - input: external_exports.record(external_exports.string(), external_exports.unknown()) -}); -var ToolResultBlockSchema = external_exports.object({ - type: external_exports.literal("tool_result"), - tool_use_id: external_exports.string(), - content: external_exports.union([external_exports.string(), external_exports.array(external_exports.unknown())]), - is_error: external_exports.boolean().optional() -}); -var ContentBlockSchema = external_exports.union([ - TextBlockSchema, - ToolUseBlockSchema, - ToolResultBlockSchema -]); -var TokenUsageSchema = external_exports.object({ - input_tokens: external_exports.number(), - output_tokens: external_exports.number(), - cache_creation_input_tokens: external_exports.number().optional(), - cache_read_input_tokens: external_exports.number().optional(), - cache_creation: external_exports.object({ - ephemeral_5m_input_tokens: external_exports.number(), - ephemeral_1h_input_tokens: external_exports.number() - }).optional(), - service_tier: external_exports.string().optional() -}); -var UserMessageSchema = external_exports.object({ - type: external_exports.literal("user"), - sessionId: external_exports.string(), - timestamp: external_exports.string(), - uuid: external_exports.string(), - parentUuid: external_exports.string().nullable(), - cwd: external_exports.string().optional(), - version: external_exports.string().optional(), - gitBranch: external_exports.string().optional(), - userType: external_exports.string().optional(), - isSidechain: external_exports.boolean().optional(), - message: external_exports.object({ - role: external_exports.literal("user"), - content: external_exports.union([external_exports.string(), external_exports.array(ContentBlockSchema)]) - }) -}); -var AssistantMessageSchema = external_exports.object({ - type: external_exports.literal("assistant"), - sessionId: external_exports.string(), - timestamp: external_exports.string(), - uuid: external_exports.string(), - parentUuid: external_exports.string().nullable(), - isSidechain: external_exports.boolean().optional(), - message: external_exports.object({ - id: external_exports.string().optional(), - role: external_exports.literal("assistant"), - content: external_exports.array(ContentBlockSchema), - model: external_exports.string().optional(), - stop_reason: external_exports.string().optional(), - usage: TokenUsageSchema.optional() - }) -}); -var JSONLLineSchema = external_exports.discriminatedUnion("type", [ - UserMessageSchema, - AssistantMessageSchema, - // Queue operations and file history are parsed but not analyzed - external_exports.object({ type: external_exports.literal("queue-operation"), timestamp: external_exports.string() }).passthrough(), - external_exports.object({ type: external_exports.literal("file-history-snapshot"), timestamp: external_exports.string() }).passthrough() -]); - -// lib/core/session-scanner.ts -function getPluginDataDir() { - return join(homedir(), ".betterprompt"); -} -function getScanCacheDir() { - return join(getPluginDataDir(), "scan-cache"); -} - -// lib/config.ts -var DEFAULTS = { - serverUrl: "http://localhost:3000", - autoAnalyze: true, - analyzeThreshold: 5 -}; -var cachedConfig = null; -function getConfig() { - if (cachedConfig) return cachedConfig; - cachedConfig = { - serverUrl: (process.env.BETTERPROMPT_SERVER_URL ?? DEFAULTS.serverUrl).replace(/\/$/, ""), - autoAnalyze: process.env.BETTERPROMPT_AUTO_ANALYZE !== "false", - analyzeThreshold: Number.parseInt( - process.env.BETTERPROMPT_ANALYZE_THRESHOLD ?? "", - 10 - ) || DEFAULTS.analyzeThreshold - }; - debug("config", "resolved", { ...cachedConfig }); - return cachedConfig; -} -function getPluginDataDir2() { - return getPluginDataDir(); -} -function getStateFilePath() { - return join2(getPluginDataDir2(), "plugin-state.json"); -} -function getCacheDbPath() { - return join2(getPluginDataDir2(), "insight-cache.db"); -} - -// lib/debounce.ts -import { readFileSync, writeFileSync, mkdirSync, readdirSync } from "fs"; -import { join as join3, dirname } from "path"; -import { homedir as homedir2 } from "os"; -var COOLDOWN_MS = 4 * 60 * 60 * 1e3; -var MIN_SESSION_DURATION_MS = 3 * 60 * 1e3; -var MAX_RUNNING_STATE_AGE_MS = 30 * 60 * 1e3; -var RUNNING_ANALYSIS_RESUME_GRACE_MS = 45 * 1e3; -var DEFAULT_STATE = { - lastAnalysisTimestamp: null, - lastAnalysisSessionCount: 0, - analysisState: "idle", - analysisInProgress: false, - analysisPending: false, - pendingSince: null, - lastError: null, - stateUpdatedAt: null -}; -function normalizeState(state) { - let analysisState = state.analysisState; - if (!analysisState) { - if (state.analysisInProgress) analysisState = "running"; - else if (state.analysisPending) analysisState = "pending"; - else analysisState = "idle"; - } - return { - ...state, - analysisState, - analysisInProgress: analysisState === "running", - analysisPending: analysisState === "pending" - }; -} -function readState() { - try { - const raw = readFileSync(getStateFilePath(), "utf-8"); - return normalizeState({ ...DEFAULT_STATE, ...JSON.parse(raw) }); - } catch { - return { ...DEFAULT_STATE }; - } -} -function writeState(state) { - const filePath = getStateFilePath(); - mkdirSync(dirname(filePath), { recursive: true }); - writeFileSync( - filePath, - JSON.stringify( - normalizeState({ - ...state, - stateUpdatedAt: (/* @__PURE__ */ new Date()).toISOString() - }), - null, - 2 - ) - ); -} -function getStateUpdatedAtMs(state) { - return state.stateUpdatedAt ? new Date(state.stateUpdatedAt).getTime() : Number.NaN; -} -function countClaudeSessions() { - const projectsDir = join3(homedir2(), ".claude", "projects"); - try { - const projects = readdirSync(projectsDir); - return projects.reduce((count, project) => { - try { - const files = readdirSync(join3(projectsDir, project)); - return count + files.filter((f) => f.endsWith(".jsonl")).length; - } catch { - return count; - } - }, 0); - } catch { - return 0; - } -} -function getAnalysisLifecycleState() { - return readState().analysisState; -} -function recoverStaleAnalysisState(options) { - const state = readState(); - if (state.analysisState !== "running") { - return state; - } - const updatedAt = getStateUpdatedAtMs(state); - const isStale = options?.force || Number.isNaN(updatedAt) || Date.now() - updatedAt > MAX_RUNNING_STATE_AGE_MS; - if (!isStale) { - return state; - } - debug("debounce", "recovering stale running state", { reason: options?.reason ?? "stale" }); - const recoveredState = { - ...state, - analysisState: "failed", - pendingSince: null, - lastError: options?.reason ?? state.lastError ?? "Recovered stale running analysis state." - }; - writeState(recoveredState); - return normalizeState(recoveredState); -} -function shouldTriggerAnalysis(sessionDurationMs) { - const state = recoverStaleAnalysisState(); - const config3 = getConfig(); - if (state.analysisInProgress) { - debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason: "Analysis already in progress" }); - return { shouldAnalyze: false, reason: "Analysis already in progress" }; - } - if (sessionDurationMs > 0 && sessionDurationMs < MIN_SESSION_DURATION_MS) { - const reason = `Session too short (${Math.round(sessionDurationMs / 1e3)}s < 3min)`; - debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); - return { shouldAnalyze: false, reason }; - } - if (state.lastAnalysisTimestamp) { - const elapsed = Date.now() - new Date(state.lastAnalysisTimestamp).getTime(); - if (elapsed < COOLDOWN_MS) { - const remainingMin = Math.round((COOLDOWN_MS - elapsed) / 6e4); - const reason = `Cooldown active (${remainingMin}min remaining)`; - debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); - return { shouldAnalyze: false, reason }; - } - } - const currentCount = countClaudeSessions(); - const newSessions = currentCount - state.lastAnalysisSessionCount; - if (newSessions < config3.analyzeThreshold) { - const reason = `Not enough new sessions (${newSessions}/${config3.analyzeThreshold})`; - debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); - return { shouldAnalyze: false, reason }; - } - const result = { - shouldAnalyze: true, - reason: `${newSessions} new sessions, cooldown passed` - }; - debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: result.shouldAnalyze, reason: result.reason }); - return result; -} -function markAnalysisStarted() { - debug("debounce", "state transition: -> running"); - const state = readState(); - writeState({ - ...state, - analysisState: "running", - pendingSince: null, - lastError: null - }); -} -function touchAnalysisHeartbeat() { - const state = readState(); - if (state.analysisState !== "running") { - return; - } - writeState(state); -} -function markAnalysisComplete(sessionCount) { - debug("debounce", "state transition: -> complete"); - writeState({ - ...DEFAULT_STATE, - lastAnalysisTimestamp: (/* @__PURE__ */ new Date()).toISOString(), - lastAnalysisSessionCount: sessionCount ?? countClaudeSessions(), - analysisState: "complete" - }); -} -function markAnalysisFailed(error95) { - const errorMsg = error95 instanceof Error ? error95.message : error95 ? String(error95) : null; - debug("debounce", "state transition: -> failed", { error: errorMsg ?? void 0 }); - const state = readState(); - writeState({ - ...state, - analysisState: "failed", - pendingSince: null, - lastError: errorMsg - }); -} -function markAnalysisPending() { - debug("debounce", "state transition: -> pending"); - const state = readState(); - writeState({ - ...state, - analysisState: "pending", - pendingSince: (/* @__PURE__ */ new Date()).toISOString(), - lastError: null - }); -} -function isAnalysisPending() { - const state = readState(); - return state.analysisState === "pending"; -} -function clearAnalysisPending() { - const state = readState(); - if (state.analysisState !== "pending") { - return; - } - writeState({ - ...state, - analysisState: "idle", - pendingSince: null - }); -} -function shouldResumeRunningAnalysis(now = Date.now()) { - const state = readState(); - if (state.analysisState !== "running") { - return false; - } - const updatedAt = getStateUpdatedAtMs(state); - return Number.isNaN(updatedAt) || now - updatedAt > RUNNING_ANALYSIS_RESUME_GRACE_MS; -} - -export { - $constructor, - defineLazy, - clone, - normalizeParams, - parse, - parseAsync, - safeParse, - safeParseAsync, - $ZodType, - $ZodObject, - toJSONSchema, - iso_exports, - string2 as string, - number2 as number, - boolean2 as boolean, - _null3 as _null, - unknown, - array, - object, - looseObject, - union, - discriminatedUnion, - intersection, - record, - _enum2 as _enum, - literal, - ZodOptional, - optional, - custom, - preprocess, - external_exports, - DomainStrengthSchema, - DomainGrowthAreaSchema, - STAGE_NAMES, - STAGE_SCHEMAS, - MultitaskingPatternSchema, - buildReportActivitySessions, - assembleCanonicalAnalysisRun, - computeDeterministicScores, - CONTEXT_WINDOW_SIZE, - computeDeterministicType, - getPluginDataDir, - getScanCacheDir, - getConfig, - getPluginDataDir2, - getCacheDbPath, - getAnalysisLifecycleState, - recoverStaleAnalysisState, - shouldTriggerAnalysis, - markAnalysisStarted, - touchAnalysisHeartbeat, - markAnalysisComplete, - markAnalysisFailed, - markAnalysisPending, - isAnalysisPending, - clearAnalysisPending, - shouldResumeRunningAnalysis -}; -//# sourceMappingURL=chunk-SUEN2LKX.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-SUEN2LKX.js.map b/packages/plugin/dist/chunk-SUEN2LKX.js.map deleted file mode 100644 index 6b2b49b8..00000000 --- a/packages/plugin/dist/chunk-SUEN2LKX.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/zod/v4/classic/external.js","../node_modules/zod/v4/core/index.js","../node_modules/zod/v4/core/core.js","../node_modules/zod/v4/core/util.js","../node_modules/zod/v4/core/errors.js","../node_modules/zod/v4/core/parse.js","../node_modules/zod/v4/core/regexes.js","../node_modules/zod/v4/core/checks.js","../node_modules/zod/v4/core/doc.js","../node_modules/zod/v4/core/versions.js","../node_modules/zod/v4/core/schemas.js","../node_modules/zod/v4/locales/index.js","../node_modules/zod/v4/locales/ar.js","../node_modules/zod/v4/locales/az.js","../node_modules/zod/v4/locales/be.js","../node_modules/zod/v4/locales/bg.js","../node_modules/zod/v4/locales/ca.js","../node_modules/zod/v4/locales/cs.js","../node_modules/zod/v4/locales/da.js","../node_modules/zod/v4/locales/de.js","../node_modules/zod/v4/locales/en.js","../node_modules/zod/v4/locales/eo.js","../node_modules/zod/v4/locales/es.js","../node_modules/zod/v4/locales/fa.js","../node_modules/zod/v4/locales/fi.js","../node_modules/zod/v4/locales/fr.js","../node_modules/zod/v4/locales/fr-CA.js","../node_modules/zod/v4/locales/he.js","../node_modules/zod/v4/locales/hu.js","../node_modules/zod/v4/locales/hy.js","../node_modules/zod/v4/locales/id.js","../node_modules/zod/v4/locales/is.js","../node_modules/zod/v4/locales/it.js","../node_modules/zod/v4/locales/ja.js","../node_modules/zod/v4/locales/ka.js","../node_modules/zod/v4/locales/km.js","../node_modules/zod/v4/locales/kh.js","../node_modules/zod/v4/locales/ko.js","../node_modules/zod/v4/locales/lt.js","../node_modules/zod/v4/locales/mk.js","../node_modules/zod/v4/locales/ms.js","../node_modules/zod/v4/locales/nl.js","../node_modules/zod/v4/locales/no.js","../node_modules/zod/v4/locales/ota.js","../node_modules/zod/v4/locales/ps.js","../node_modules/zod/v4/locales/pl.js","../node_modules/zod/v4/locales/pt.js","../node_modules/zod/v4/locales/ru.js","../node_modules/zod/v4/locales/sl.js","../node_modules/zod/v4/locales/sv.js","../node_modules/zod/v4/locales/ta.js","../node_modules/zod/v4/locales/th.js","../node_modules/zod/v4/locales/tr.js","../node_modules/zod/v4/locales/uk.js","../node_modules/zod/v4/locales/ua.js","../node_modules/zod/v4/locales/ur.js","../node_modules/zod/v4/locales/uz.js","../node_modules/zod/v4/locales/vi.js","../node_modules/zod/v4/locales/zh-CN.js","../node_modules/zod/v4/locales/zh-TW.js","../node_modules/zod/v4/locales/yo.js","../node_modules/zod/v4/core/registries.js","../node_modules/zod/v4/core/api.js","../node_modules/zod/v4/core/to-json-schema.js","../node_modules/zod/v4/core/json-schema-processors.js","../node_modules/zod/v4/core/json-schema-generator.js","../node_modules/zod/v4/core/json-schema.js","../node_modules/zod/v4/classic/schemas.js","../node_modules/zod/v4/classic/checks.js","../node_modules/zod/v4/classic/iso.js","../node_modules/zod/v4/classic/errors.js","../node_modules/zod/v4/classic/parse.js","../node_modules/zod/v4/classic/compat.js","../node_modules/zod/v4/classic/from-json-schema.js","../node_modules/zod/v4/classic/coerce.js","../lib/config.ts","../lib/core/session-scanner.ts","../../../node_modules/zod/v4/classic/external.js","../../../node_modules/zod/v4/core/index.js","../../../node_modules/zod/v4/core/core.js","../../../node_modules/zod/v4/core/util.js","../../../node_modules/zod/v4/core/errors.js","../../../node_modules/zod/v4/core/parse.js","../../../node_modules/zod/v4/core/regexes.js","../../../node_modules/zod/v4/core/checks.js","../../../node_modules/zod/v4/core/doc.js","../../../node_modules/zod/v4/core/versions.js","../../../node_modules/zod/v4/core/schemas.js","../../../node_modules/zod/v4/locales/index.js","../../../node_modules/zod/v4/locales/ar.js","../../../node_modules/zod/v4/locales/az.js","../../../node_modules/zod/v4/locales/be.js","../../../node_modules/zod/v4/locales/bg.js","../../../node_modules/zod/v4/locales/ca.js","../../../node_modules/zod/v4/locales/cs.js","../../../node_modules/zod/v4/locales/da.js","../../../node_modules/zod/v4/locales/de.js","../../../node_modules/zod/v4/locales/en.js","../../../node_modules/zod/v4/locales/eo.js","../../../node_modules/zod/v4/locales/es.js","../../../node_modules/zod/v4/locales/fa.js","../../../node_modules/zod/v4/locales/fi.js","../../../node_modules/zod/v4/locales/fr.js","../../../node_modules/zod/v4/locales/fr-CA.js","../../../node_modules/zod/v4/locales/he.js","../../../node_modules/zod/v4/locales/hu.js","../../../node_modules/zod/v4/locales/hy.js","../../../node_modules/zod/v4/locales/id.js","../../../node_modules/zod/v4/locales/is.js","../../../node_modules/zod/v4/locales/it.js","../../../node_modules/zod/v4/locales/ja.js","../../../node_modules/zod/v4/locales/ka.js","../../../node_modules/zod/v4/locales/km.js","../../../node_modules/zod/v4/locales/kh.js","../../../node_modules/zod/v4/locales/ko.js","../../../node_modules/zod/v4/locales/lt.js","../../../node_modules/zod/v4/locales/mk.js","../../../node_modules/zod/v4/locales/ms.js","../../../node_modules/zod/v4/locales/nl.js","../../../node_modules/zod/v4/locales/no.js","../../../node_modules/zod/v4/locales/ota.js","../../../node_modules/zod/v4/locales/ps.js","../../../node_modules/zod/v4/locales/pl.js","../../../node_modules/zod/v4/locales/pt.js","../../../node_modules/zod/v4/locales/ru.js","../../../node_modules/zod/v4/locales/sl.js","../../../node_modules/zod/v4/locales/sv.js","../../../node_modules/zod/v4/locales/ta.js","../../../node_modules/zod/v4/locales/th.js","../../../node_modules/zod/v4/locales/tr.js","../../../node_modules/zod/v4/locales/uk.js","../../../node_modules/zod/v4/locales/ua.js","../../../node_modules/zod/v4/locales/ur.js","../../../node_modules/zod/v4/locales/uz.js","../../../node_modules/zod/v4/locales/vi.js","../../../node_modules/zod/v4/locales/zh-CN.js","../../../node_modules/zod/v4/locales/zh-TW.js","../../../node_modules/zod/v4/locales/yo.js","../../../node_modules/zod/v4/core/registries.js","../../../node_modules/zod/v4/core/api.js","../../../node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/zod/v4/core/json-schema-generator.js","../../../node_modules/zod/v4/core/json-schema.js","../../../node_modules/zod/v4/classic/schemas.js","../../../node_modules/zod/v4/classic/checks.js","../../../node_modules/zod/v4/classic/iso.js","../../../node_modules/zod/v4/classic/errors.js","../../../node_modules/zod/v4/classic/parse.js","../../../node_modules/zod/v4/classic/compat.js","../../../node_modules/zod/v4/classic/from-json-schema.js","../../../node_modules/zod/v4/classic/coerce.js","../../shared/src/schemas/session.ts","../../shared/src/schemas/phase1-output.ts","../../shared/src/schemas/deterministic-scores.ts","../../shared/src/schemas/domain-result.ts","../../shared/src/schemas/stage-outputs.ts","../../shared/src/schemas/analysis-run.ts","../../shared/src/schemas/worker-outputs.ts","../../shared/src/evaluation/canonical-analysis.ts","../../shared/src/scoring/deterministic-scorer.ts","../../shared/src/constants.ts","../../shared/src/scoring/deterministic-type-mapper.ts","../lib/core/types.ts","../lib/debounce.ts"],"sourcesContent":["export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext(inputs: JSONSchemaGeneratorParams): ToJSONSchemaContext {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n","export {};\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","/**\n * Plugin Configuration\n *\n * Claude Code injects plugin.json settings into the plugin runtime.\n * BetterPrompt treats these as plugin settings, not as a user-facing\n * environment-variable configuration surface.\n */\n\nimport { join } from 'node:path';\nimport { getPluginDataDir as resolvePluginDataDir } from './core/session-scanner.js';\nimport { debug } from './logger.js';\n\nexport interface PluginConfig {\n serverUrl: string;\n autoAnalyze: boolean;\n analyzeThreshold: number;\n}\n\nconst DEFAULTS: PluginConfig = {\n serverUrl: 'http://localhost:3000',\n autoAnalyze: true,\n analyzeThreshold: 5,\n};\n\nlet cachedConfig: PluginConfig | null = null;\n\nexport function getConfig(): PluginConfig {\n if (cachedConfig) return cachedConfig;\n\n cachedConfig = {\n serverUrl: (process.env.BETTERPROMPT_SERVER_URL ?? DEFAULTS.serverUrl).replace(/\\/$/, ''),\n\n autoAnalyze:\n process.env.BETTERPROMPT_AUTO_ANALYZE !== 'false',\n\n analyzeThreshold: Number.parseInt(\n process.env.BETTERPROMPT_ANALYZE_THRESHOLD ?? '',\n 10,\n ) || DEFAULTS.analyzeThreshold,\n };\n\n debug('config', 'resolved', { ...cachedConfig });\n return cachedConfig;\n}\n\n/** Reset cached config (for testing) */\nexport function resetConfig(): void {\n cachedConfig = null;\n}\n\n/** Base directory for plugin state files */\nexport function getPluginDataDir(): string {\n return resolvePluginDataDir();\n}\n\n/** Path to the plugin state file (debounce tracking) */\nexport function getStateFilePath(): string {\n return join(getPluginDataDir(), 'plugin-state.json');\n}\n\n/** Path to the insight cache database */\nexport function getCacheDbPath(): string {\n return join(getPluginDataDir(), 'insight-cache.db');\n}\n\n/** Path to the error log */\nexport function getErrorLogPath(): string {\n return join(getPluginDataDir(), 'plugin-errors.log');\n}\n","/**\n * Session Scanner - Scans Claude Code session logs\n *\n * Extracted from src/lib/parser/jsonl-reader.ts for plugin self-sufficiency.\n * Pure filesystem operations with Zod validation.\n *\n * @module plugin/lib/core/session-scanner\n */\n\nimport { readFile, readdir, stat, mkdir, writeFile } from 'node:fs/promises';\nimport { join, basename } from 'node:path';\nimport { homedir } from 'node:os';\nimport { JSONLLineSchema, CONTEXT_WINDOW_SIZE, type JSONLLine, type SessionMetadata } from './types.js';\n\n/** Claude Code session log directory */\nexport function getClaudeProjectsDir(): string {\n return join(homedir(), '.claude', 'projects');\n}\n\n/** Plugin data directory */\nexport function getPluginDataDir(): string {\n return join(homedir(), '.betterprompt');\n}\n\n/** Scan cache directory */\nexport function getScanCacheDir(): string {\n return join(getPluginDataDir(), 'scan-cache');\n}\n\n// ============================================================================\n// JSONL Parsing\n// ============================================================================\n\n/** Parse a single line of JSONL. Returns null for invalid/empty lines. */\nexport function parseJSONLLine(line: string): JSONLLine | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n\n try {\n const parsed = JSON.parse(trimmed);\n const result = JSONLLineSchema.safeParse(parsed);\n return result.success ? result.data : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Deduplicate assistant entries by message.id, keeping the LAST occurrence.\n * Claude Code writes multiple JSONL lines per assistant turn with progressively\n * more complete content.\n */\nfunction deduplicateAssistantEntries(entries: JSONLLine[]): JSONLLine[] {\n const lastSeenIndex = new Map();\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (entry.type === 'assistant') {\n const msgId = entry.message?.id;\n if (msgId && !lastSeenIndex.has(msgId)) {\n lastSeenIndex.set(msgId, i);\n }\n }\n }\n\n return entries.filter((entry, i) => {\n if (entry.type !== 'assistant') return true;\n const msgId = entry.message?.id;\n if (!msgId) return true;\n return lastSeenIndex.get(msgId) === i;\n });\n}\n\n/** Read and parse a JSONL file */\nexport async function readJSONLFile(filePath: string): Promise {\n const content = await readFile(filePath, 'utf-8');\n const lines = content.split('\\n');\n const parsed: JSONLLine[] = [];\n\n for (const line of lines) {\n const result = parseJSONLLine(line);\n if (result !== null) {\n parsed.push(result);\n }\n }\n\n return deduplicateAssistantEntries(parsed);\n}\n\n// ============================================================================\n// Path Encoding/Decoding\n// ============================================================================\n\n/**\n * Decode project path from Claude's encoding.\n * '-Users-dev-projects-myapp' -> '/Users/dev/projects/myapp'\n * 'C--alphacut' -> 'C:/alphacut'\n */\nexport function decodeProjectPath(encoded: string): string {\n if (/^[A-Za-z]--/.test(encoded)) {\n const driveLetter = encoded[0];\n const rest = encoded.slice(3);\n if (!rest) return `${driveLetter}:/`;\n return `${driveLetter}:/${rest.replace(/-/g, '/')}`;\n }\n\n if (encoded.startsWith('-')) {\n return encoded.replace(/-/g, '/');\n }\n\n return encoded;\n}\n\n/** Get project name from path */\nexport function getProjectName(projectPath: string): string {\n const parts = projectPath.trim().split(/[/\\\\]/).filter(Boolean);\n const filtered = parts.filter(p => !/^[A-Za-z]:$/.test(p));\n return filtered[filtered.length - 1] || 'unknown';\n}\n\n// ============================================================================\n// Directory Scanning\n// ============================================================================\n\n/** List all project directories in Claude's projects folder */\nexport async function listProjectDirs(): Promise {\n try {\n const projectsDir = getClaudeProjectsDir();\n const entries = await readdir(projectsDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(projectsDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n}\n\n/** List JSONL session files in a directory */\nexport async function listSessionFiles(projectDir: string): Promise {\n try {\n const files = await readdir(projectDir);\n return files\n .filter(f => f.endsWith('.jsonl'))\n .map(f => join(projectDir, f));\n } catch {\n return [];\n }\n}\n\n/** Get metadata for a session file */\nexport async function getSessionMetadata(filePath: string): Promise {\n try {\n const content = await readFile(filePath, 'utf-8');\n const lines = content.split('\\n').filter(l => l.trim());\n\n if (lines.length === 0) return null;\n\n const fileName = basename(filePath, '.jsonl');\n let messageCount = 0;\n let firstTimestamp: Date | null = null;\n let lastTimestamp: Date | null = null;\n const inputTokenCounts: number[] = [];\n const seenMessageIds = new Set();\n\n for (const line of lines) {\n const parsed = parseJSONLLine(line);\n if (parsed && (parsed.type === 'user' || parsed.type === 'assistant')) {\n if (parsed.type === 'assistant') {\n const msgId = parsed.message?.id;\n if (msgId) {\n if (seenMessageIds.has(msgId)) continue;\n seenMessageIds.add(msgId);\n }\n }\n\n messageCount++;\n const ts = new Date(parsed.timestamp);\n\n if (!firstTimestamp || ts < firstTimestamp) firstTimestamp = ts;\n if (!lastTimestamp || ts > lastTimestamp) lastTimestamp = ts;\n\n if (parsed.type === 'assistant' && parsed.message.usage?.input_tokens) {\n inputTokenCounts.push(parsed.message.usage.input_tokens);\n }\n }\n }\n\n if (!firstTimestamp || !lastTimestamp) return null;\n\n const projectDirName = basename(join(filePath, '..'));\n const projectPath = decodeProjectPath(projectDirName);\n const durationSeconds = Math.floor(\n (lastTimestamp.getTime() - firstTimestamp.getTime()) / 1000,\n );\n\n let avgContextUtilization: number | undefined;\n let maxContextUtilization: number | undefined;\n\n if (inputTokenCounts.length > 0) {\n const avgTokens = inputTokenCounts.reduce((sum, t) => sum + t, 0) / inputTokenCounts.length;\n const maxTokens = Math.max(...inputTokenCounts);\n avgContextUtilization = Math.round((avgTokens / CONTEXT_WINDOW_SIZE) * 100);\n maxContextUtilization = Math.round((maxTokens / CONTEXT_WINDOW_SIZE) * 100);\n }\n\n return {\n sessionId: fileName,\n projectPath,\n projectName: getProjectName(projectPath),\n timestamp: firstTimestamp,\n messageCount,\n durationSeconds,\n filePath,\n avgContextUtilization,\n maxContextUtilization,\n };\n } catch {\n return null;\n }\n}\n\n/** List all sessions across all projects, sorted by recency */\nexport async function listAllSessions(): Promise {\n const projectDirs = await listProjectDirs();\n const sessions: SessionMetadata[] = [];\n\n for (const dir of projectDirs) {\n const files = await listSessionFiles(dir);\n for (const file of files) {\n const metadata = await getSessionMetadata(file);\n if (metadata) {\n sessions.push(metadata);\n }\n }\n }\n\n sessions.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n return sessions;\n}\n\n// ============================================================================\n// Scan Cache\n// ============================================================================\n\n/** Store parsed sessions in scan cache for subsequent tools */\nexport async function cacheParsedSessions(\n sessions: SessionMetadata[],\n): Promise {\n const scanCacheDir = getScanCacheDir();\n await mkdir(scanCacheDir, { recursive: true });\n\n const cachePath = join(scanCacheDir, 'sessions.json');\n await writeFile(cachePath, JSON.stringify(sessions, null, 2), 'utf-8');\n return cachePath;\n}\n\n/** Read cached session metadata */\nexport async function readCachedSessions(): Promise {\n try {\n const cachePath = join(getScanCacheDir(), 'sessions.json');\n const content = await readFile(cachePath, 'utf-8');\n const raw = JSON.parse(content) as Array;\n return raw.map(s => ({ ...s, timestamp: new Date(s.timestamp) }));\n } catch {\n return [];\n }\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext(inputs: JSONSchemaGeneratorParams): ToJSONSchemaContext {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n","export {};\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","/**\n * Parsed Session Schemas\n *\n * Canonical schemas for fully parsed session transcripts used by the plugin's\n * Phase 1 artifact. These preserve the full transcript surface needed for\n * evidence lookup, activity rendering, and multi-source parity.\n *\n * @module @betterprompt/shared/schemas/session\n */\n\nimport { z } from 'zod';\n\nexport const ToolCallSchema = z.object({\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()),\n result: z.string().optional(),\n isError: z.boolean().optional(),\n});\nexport type ToolCall = z.infer;\n\nexport const ParsedMessageSchema = z.object({\n uuid: z.string(),\n role: z.enum(['user', 'assistant']),\n timestamp: z.string(),\n content: z.string(),\n isMeta: z.boolean().optional(),\n sourceToolUseID: z.string().optional(),\n toolUseResult: z.unknown().optional(),\n toolCalls: z.array(ToolCallSchema).optional(),\n tokenUsage: z.object({\n input: z.number().int().min(0),\n output: z.number().int().min(0),\n }).optional(),\n});\nexport type ParsedMessage = z.infer;\n\nexport const SessionStatsSchema = z.object({\n userMessageCount: z.number().int().min(0),\n assistantMessageCount: z.number().int().min(0),\n toolCallCount: z.number().int().min(0),\n uniqueToolsUsed: z.array(z.string()),\n totalInputTokens: z.number().int().min(0),\n totalOutputTokens: z.number().int().min(0),\n});\nexport type SessionStats = z.infer;\n\nexport const SessionSourceTypeSchema = z.enum([\n 'claude-code',\n 'cursor',\n 'cursor-composer',\n]);\nexport type SessionSourceType = z.infer;\n\nexport const ParsedSessionSchema = z.object({\n sessionId: z.string(),\n projectPath: z.string(),\n projectName: z.string().optional(),\n startTime: z.string(),\n endTime: z.string(),\n durationSeconds: z.number().min(0),\n claudeCodeVersion: z.string(),\n messages: z.array(ParsedMessageSchema),\n stats: SessionStatsSchema,\n source: SessionSourceTypeSchema.optional(),\n});\nexport type ParsedSession = z.infer;\n","/**\n * Phase 1 Output Schemas - Pure Extraction Types\n *\n * Canonical Zod schemas for Phase 1 deterministic extraction output.\n * Used by both the plugin (MCP tools) and server (analysis pipeline).\n *\n * Phase 1 extracts raw text and structural metadata from sessions.\n * It does NOT perform any semantic analysis (that's Phase 2).\n *\n * @module @betterprompt/shared/schemas/phase1-output\n */\n\nimport { z } from 'zod';\nimport { ParsedSessionSchema } from './session.js';\n\n// ============================================================================\n// AI Insight Block Schema\n// ============================================================================\n\nexport const AIInsightBlockSchema = z.object({\n sessionId: z.string(),\n turnIndex: z.number().int().min(0),\n content: z.string(),\n triggeringUtteranceId: z.string().optional(),\n});\nexport type AIInsightBlock = z.infer;\n\n// ============================================================================\n// Natural Language Segment Schema\n// ============================================================================\n\nexport const NaturalLanguageSegmentSchema = z.object({\n start: z.number().int().min(0),\n end: z.number().int().min(0),\n text: z.string(),\n});\nexport type NaturalLanguageSegment = z.infer;\n\n// ============================================================================\n// User Utterance Schema\n// ============================================================================\n\nexport const UserUtteranceSchema = z.object({\n id: z.string(),\n text: z.string(),\n displayText: z.string().optional(),\n naturalLanguageSegments: z.array(NaturalLanguageSegmentSchema).optional(),\n timestamp: z.string(),\n sessionId: z.string(),\n turnIndex: z.number().int().min(0),\n characterCount: z.number().int().min(0),\n wordCount: z.number().int().min(0),\n hasCodeBlock: z.boolean(),\n hasQuestion: z.boolean(),\n isSessionStart: z.boolean().optional(),\n isContinuation: z.boolean().optional(),\n machineContentRatio: z.number().min(0).max(1).optional(),\n precedingAIToolCalls: z.array(z.string()).optional(),\n precedingAIHadError: z.boolean().optional(),\n});\nexport type UserUtterance = z.infer;\n\n// ============================================================================\n// Friction Signals Schema\n// ============================================================================\n\nexport const FrictionSignalsSchema = z.object({\n toolFailureCount: z.number().int().min(0),\n userRejectionSignals: z.number().int().min(0),\n excessiveIterationSessions: z.number().int().min(0),\n contextOverflowSessions: z.number().int().min(0),\n frustrationExpressionCount: z.number().int().min(0),\n repeatedToolErrorPatterns: z.number().int().min(0),\n bareRetryAfterErrorCount: z.number().int().min(0),\n errorChainMaxLength: z.number().int().min(0),\n});\nexport type FrictionSignals = z.infer;\n\n// ============================================================================\n// Session Hints Schema\n// ============================================================================\n\nexport const SessionHintsSchema = z.object({\n avgTurnsPerSession: z.number().min(0),\n shortSessions: z.number().int().min(0),\n mediumSessions: z.number().int().min(0),\n longSessions: z.number().int().min(0),\n});\nexport type SessionHints = z.infer;\n\n// ============================================================================\n// Phase 1 Session Metrics Schema\n// ============================================================================\n\nexport const Phase1SessionMetricsSchema = z.object({\n totalSessions: z.number().int().min(0),\n totalMessages: z.number().int().min(0),\n totalDeveloperUtterances: z.number().int().min(0),\n totalAIResponses: z.number().int().min(0),\n avgMessagesPerSession: z.number(),\n avgDeveloperMessageLength: z.number(),\n questionRatio: z.number().min(0).max(1),\n codeBlockRatio: z.number().min(0).max(1),\n dateRange: z.object({\n earliest: z.string(),\n latest: z.string(),\n }),\n slashCommandCounts: z.record(z.string(), z.number()).optional(),\n avgContextFillPercent: z.number().min(0).max(100).optional(),\n maxContextFillPercent: z.number().min(0).max(100).optional(),\n contextFillExceeded90Count: z.number().int().min(0).optional(),\n frictionSignals: FrictionSignalsSchema.optional(),\n sessionHints: SessionHintsSchema.optional(),\n aiInsightBlockCount: z.number().int().min(0).optional(),\n});\nexport type Phase1SessionMetrics = z.infer;\n\n// ============================================================================\n// Activity Session Schema (per-session metadata for Phase 1.5/2 stages)\n// ============================================================================\n\n/**\n * Per-session metadata emitted alongside aggregate metrics.\n * Required by downstream stages:\n * - SessionSummarizer (Phase 1.5): needs sessionId, projectName, messageCount\n * - ProjectSummarizer (Phase 2): groups by projectName\n * - WeeklyInsightGenerator (Phase 2): needs timestamps, durations, token totals\n */\nexport const ActivitySessionSchema = z.object({\n sessionId: z.string(),\n projectName: z.string(),\n projectPath: z.string().optional(),\n startTime: z.string(),\n durationSeconds: z.number().min(0),\n messageCount: z.number().int().min(0),\n userMessageCount: z.number().int().min(0),\n assistantMessageCount: z.number().int().min(0),\n totalInputTokens: z.number().int().min(0),\n totalOutputTokens: z.number().int().min(0),\n /** First user message text (truncated to 200 chars) for summary context */\n firstUserMessage: z.string().optional(),\n});\nexport type ActivitySession = z.infer;\n\n// ============================================================================\n// Complete Phase 1 Output Schema\n// ============================================================================\n\nexport const Phase1OutputSchema = z.object({\n developerUtterances: z.array(UserUtteranceSchema),\n sessionMetrics: Phase1SessionMetricsSchema,\n aiInsightBlocks: z.array(AIInsightBlockSchema).optional(),\n /** Per-session metadata for Phase 1.5/2 stages */\n activitySessions: z.array(ActivitySessionSchema).optional(),\n /** Full parsed sessions preserved for downstream evidence and parity needs */\n sessions: z.array(ParsedSessionSchema).optional(),\n skippedFiles: z.number().optional(),\n});\nexport type Phase1Output = z.infer;\n","/**\n * Deterministic Scoring Schemas\n *\n * Canonical types for rubric-based scoring and developer type classification.\n * These are deterministic (same input = same output, no LLM involved).\n *\n * @module @betterprompt/shared/schemas/deterministic-scores\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Deterministic Scores\n// ============================================================================\n\n/**\n * 5-dimension deterministic scores (v2).\n * - aiPartnership: merged thinkingQuality + controlScore\n * - sessionCraft: merged contextEfficiency + learningBehavior (burnout)\n * - toolMastery: communication/tool patterns\n * - skillResilience: cold-start, hallucination detection, VCP\n * - sessionMastery: absence-of-anti-pattern scoring\n * - controlScore: retained for type classification\n */\nexport const DeterministicScoresSchema = z.object({\n aiPartnership: z.number().min(0).max(100),\n sessionCraft: z.number().min(0).max(100),\n toolMastery: z.number().min(0).max(100),\n skillResilience: z.number().min(0).max(100),\n sessionMastery: z.number().min(0).max(100),\n controlScore: z.number().min(0).max(100),\n // Legacy fields — present on old runs, not computed for new\n contextEfficiency: z.number().min(0).max(100).optional(),\n sessionOutcome: z.number().min(0).max(100).optional(),\n thinkingQuality: z.number().min(0).max(100).optional(),\n learningBehavior: z.number().min(0).max(100).optional(),\n communicationPatterns: z.number().min(0).max(100).optional(),\n});\nexport type DeterministicScores = z.infer;\n\n// ============================================================================\n// Coding Style Type System\n// ============================================================================\n\nexport const CodingStyleTypeSchema = z.enum([\n 'architect',\n 'analyst',\n 'conductor',\n 'speedrunner',\n 'trendsetter',\n]);\nexport type CodingStyleType = z.infer;\n\nexport const AIControlLevelSchema = z.enum([\n 'explorer',\n 'navigator',\n 'cartographer',\n]);\nexport type AIControlLevel = z.infer;\n\n// ============================================================================\n// Deterministic Type Result\n// ============================================================================\n\nexport const DeterministicTypeResultSchema = z.object({\n primaryType: CodingStyleTypeSchema,\n distribution: z.object({\n architect: z.number(),\n analyst: z.number(),\n conductor: z.number(),\n speedrunner: z.number(),\n trendsetter: z.number(),\n }),\n controlLevel: AIControlLevelSchema,\n controlScore: z.number().min(0).max(100),\n matrixName: z.string(),\n matrixEmoji: z.string(),\n});\nexport type DeterministicTypeResult = z.infer;\n","/**\n * Domain Result Schema\n *\n * Expanded DomainResult with typed domain-specific data,\n * replacing the previous Record catch-all.\n *\n * @module @betterprompt/shared/schemas/domain-result\n */\n\nimport { z } from 'zod';\nimport { Phase1SessionMetricsSchema } from './phase1-output.js';\nimport { DeterministicScoresSchema, DeterministicTypeResultSchema } from './deterministic-scores.js';\n\n// ============================================================================\n// Evidence Schema (shared across all domains)\n// ============================================================================\n\nexport const EvidenceSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n context: z.string().optional(),\n});\nexport type Evidence = z.infer;\n\n// ============================================================================\n// Strength / Growth Area Schemas\n// ============================================================================\n\nexport const DomainStrengthSchema = z.object({\n title: z.string(),\n description: z.string().min(100),\n evidence: z.array(EvidenceSchema).min(1),\n});\nexport type DomainStrength = z.infer;\n\nexport const DomainGrowthAreaSchema = z.object({\n title: z.string(),\n description: z.string().min(100),\n severity: z.enum(['critical', 'high', 'medium', 'low']),\n recommendation: z.string().min(50),\n evidence: z.array(EvidenceSchema).min(1),\n});\nexport type DomainGrowthArea = z.infer;\n\n// ============================================================================\n// Domain Names\n// ============================================================================\n\n/**\n * Legacy 6-domain names — kept for backward compatibility with old runs.\n * New analyses use DOMAIN_NAMES (5-dimension framework).\n */\nexport const LEGACY_DOMAIN_NAMES = [\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n] as const;\n\nexport type LegacyDomainName = typeof LEGACY_DOMAIN_NAMES[number];\n\n/**\n * 5-dimension framework (v2):\n * - aiPartnership: merged AI Collaboration + AI Control\n * - sessionCraft: merged Context Engineering + Burnout Risk\n * - toolMastery: unchanged Tool Mastery\n * - skillResilience: unchanged Skill Resilience\n * - sessionMastery: NEW absence-of-anti-pattern scoring\n */\nexport const DOMAIN_NAMES = [\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n] as const;\n\nexport type DomainName = typeof DOMAIN_NAMES[number];\n\n// ============================================================================\n// Complete Domain Result Schema\n// ============================================================================\n\nexport const DomainResultSchema = z.object({\n domain: z.enum([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Legacy domains accepted for backward compat with old runs\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n ]),\n overallScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n strengths: z.array(DomainStrengthSchema),\n growthAreas: z.array(DomainGrowthAreaSchema),\n /** Domain-specific typed data. Validated per domain when available. */\n data: z.record(z.string(), z.unknown()).optional(),\n analyzedAt: z.string(),\n});\nexport type DomainResult = z.infer;\n\n// ============================================================================\n// Analysis Report (local plugin assembly)\n// ============================================================================\n\nexport const AnalysisReportSchema = z.object({\n userId: z.string(),\n analyzedAt: z.string(),\n phase1Metrics: Phase1SessionMetricsSchema,\n deterministicScores: DeterministicScoresSchema,\n typeResult: DeterministicTypeResultSchema.nullable(),\n domainResults: z.array(DomainResultSchema),\n content: z.object({\n topFocusAreas: z.array(z.object({\n title: z.string(),\n narrative: z.string().optional(),\n description: z.string().optional(),\n actions: z.object({\n start: z.string(),\n stop: z.string(),\n continue: z.string(),\n }).optional(),\n })).optional(),\n personalitySummary: z.array(z.string()).optional(),\n }).optional(),\n});\nexport type AnalysisReport = z.infer;\n","/**\n * Stage Output Schemas\n *\n * Validation schemas for pipeline stage outputs saved via save_stage_output:\n * - Session Summarizer (Phase 1.5)\n * - Dimension Extractors (Phase 2, Stage 1) — 6 extract-* skills\n * - Project Summarizer (Phase 2, parallel)\n * - Weekly Insight Generator (Phase 2, parallel)\n * - Evidence Verifier (Phase 2.8)\n * - Content Writer (Phase 3)\n * - Translator (Phase 4)\n *\n * @module @betterprompt/shared/schemas/stage-outputs\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Session Summarizer (Phase 1.5)\n// ============================================================================\n\nexport const SessionSummarySchema = z.object({\n sessionId: z.string(),\n summary: z.string(),\n});\nexport type SessionSummary = z.infer;\n\nexport const SessionSummaryBatchSchema = z.object({\n summaries: z.array(SessionSummarySchema),\n});\nexport type SessionSummaryBatch = z.infer;\n\n// ============================================================================\n// Project Summarizer (Phase 2)\n// ============================================================================\n\nexport const ProjectSummarySchema = z.object({\n projectName: z.string(),\n summaryLines: z.array(z.string()),\n sessionCount: z.number().int().min(0),\n});\nexport type ProjectSummary = z.infer;\n\nexport const ProjectSummaryBatchSchema = z.object({\n projects: z.array(ProjectSummarySchema),\n});\nexport type ProjectSummaryBatch = z.infer;\n\n// ============================================================================\n// Weekly Insight Generator (Phase 2)\n// ============================================================================\n\nexport const WeeklyProjectBreakdownSchema = z.object({\n projectName: z.string(),\n sessionCount: z.number().int().min(0),\n percentage: z.number().min(0).max(100),\n});\nexport type WeeklyProjectBreakdown = z.infer;\n\nexport const WeeklyTopSessionSchema = z.object({\n sessionId: z.string(),\n summary: z.string(),\n});\nexport type WeeklyTopSession = z.infer;\n\nexport const WeeklyInsightsSchema = z.object({\n stats: z.object({\n sessionCount: z.number().int().min(0),\n totalMinutes: z.number().min(0),\n totalTokens: z.number().int().min(0),\n activeDays: z.number().int().min(0).max(7),\n deltaSessionCount: z.number().optional(),\n deltaMinutes: z.number().optional(),\n deltaTokens: z.number().optional(),\n }),\n projects: z.array(WeeklyProjectBreakdownSchema),\n topSessions: z.array(WeeklyTopSessionSchema),\n narrative: z.string(),\n highlights: z.array(z.string()),\n});\nexport type WeeklyInsights = z.infer;\n\n// ============================================================================\n// Evidence Verifier (Phase 2.8)\n// ============================================================================\n\nexport const EvidenceVerificationResultSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n relevanceScore: z.number().min(0).max(100),\n verified: z.boolean(),\n});\nexport type EvidenceVerificationResult = z.infer;\n\nexport const DomainVerificationStatsSchema = z.object({\n domain: z.string(),\n totalEvidence: z.number().int().min(0),\n keptCount: z.number().int().min(0),\n filteredCount: z.number().int().min(0),\n});\nexport type DomainVerificationStats = z.infer;\n\nexport const EvidenceVerificationOutputSchema = z.object({\n verifiedResults: z.array(EvidenceVerificationResultSchema),\n domainStats: z.array(DomainVerificationStatsSchema),\n threshold: z.number().min(0).max(100),\n});\nexport type EvidenceVerificationOutput = z.infer;\n\n// ============================================================================\n// Content Writer (Phase 3)\n// ============================================================================\n\nexport const TopFocusAreaSchema = z.object({\n title: z.string(),\n description: z.string(),\n relatedQualities: z.array(z.string()),\n actions: z.object({\n start: z.string(),\n stop: z.string(),\n continue: z.string(),\n }),\n});\nexport type TopFocusArea = z.infer;\n\nexport const ContentWriterOutputSchema = z.object({\n topFocusAreas: z.array(TopFocusAreaSchema),\n personalitySummary: z.array(z.string()).optional(),\n});\nexport type ContentWriterOutput = z.infer;\n\nexport const TypeClassificationStageOutputSchema = z.object({\n reasoning: z.array(z.string()),\n personalityNarrative: z.array(z.string()),\n collaborationMaturity: z.string().optional(),\n});\nexport type TypeClassificationStageOutput = z.infer;\n\n// ============================================================================\n// Translator (Phase 4)\n// ============================================================================\n\nexport const TranslatorOutputSchema = z.object({\n targetLanguage: z.string(),\n translatedFields: z.record(z.string(), z.unknown()),\n});\nexport type TranslatorOutput = z.infer;\n\n// ============================================================================\n// Dimension Extraction (Phase 2 Data Analyst stage)\n// ============================================================================\n\n/** Permissive schema for dimension extraction stage outputs (data-analyst workers) */\nexport const DimensionExtractionSchema = z.object({\n dimension: z.string(),\n quotes: z.array(z.object({\n text: z.string(),\n utteranceId: z.string().optional(),\n sessionId: z.string().optional(),\n behavioralMarker: z.string().optional(),\n signalType: z.enum(['strength', 'growth']).optional(),\n confidence: z.number().min(0).max(1).optional(),\n }).passthrough()),\n patterns: z.array(z.object({\n name: z.string(),\n category: z.string().optional(),\n examples: z.array(z.string()).optional(),\n frequency: z.string().optional(),\n }).passthrough()).optional(),\n signals: z.record(z.string(), z.unknown()).optional(),\n score: z.number().min(0).max(100).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}).passthrough();\nexport type DimensionExtraction = z.infer;\n\n// ============================================================================\n// Stage Output Union (for save_stage_output tool validation)\n// ============================================================================\n\n/**\n * Legacy 6-extractor stage names — kept for backward compatibility with old runs.\n */\nexport const LEGACY_EXTRACTOR_STAGE_NAMES = [\n 'extractAiCollaboration',\n 'extractContextEngineering',\n 'extractBurnoutRisk',\n 'extractAiControl',\n] as const;\n\nexport const STAGE_NAMES = [\n 'sessionSummaries',\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n 'translator',\n // 5-dimension extractors (v2)\n 'extractAiPartnership',\n 'extractSessionCraft',\n 'extractToolMastery',\n 'extractSkillResilience',\n 'extractSessionMastery',\n // Legacy extractors (old runs only)\n 'extractAiCollaboration',\n 'extractContextEngineering',\n 'extractBurnoutRisk',\n 'extractAiControl',\n] as const;\n\nexport type StageName = typeof STAGE_NAMES[number];\n\n/** Map of stage name to its validation schema */\nexport const STAGE_SCHEMAS: Record = {\n sessionSummaries: SessionSummaryBatchSchema,\n projectSummaries: ProjectSummaryBatchSchema,\n weeklyInsights: WeeklyInsightsSchema,\n typeClassification: TypeClassificationStageOutputSchema,\n evidenceVerification: EvidenceVerificationOutputSchema,\n contentWriter: ContentWriterOutputSchema,\n translator: TranslatorOutputSchema,\n // 5-dimension extractors (v2)\n extractAiPartnership: DimensionExtractionSchema,\n extractSessionCraft: DimensionExtractionSchema,\n extractToolMastery: DimensionExtractionSchema,\n extractSkillResilience: DimensionExtractionSchema,\n extractSessionMastery: DimensionExtractionSchema,\n // Legacy extractors (old runs)\n extractAiCollaboration: DimensionExtractionSchema,\n extractContextEngineering: DimensionExtractionSchema,\n extractBurnoutRisk: DimensionExtractionSchema,\n extractAiControl: DimensionExtractionSchema,\n};\n","/**\n * Canonical Analysis Run Envelope\n *\n * Shared run-scoped contract for plugin-produced analyses.\n * This keeps the full deterministic + staged pipeline output together so\n * local reports and server sync can consume the same artifact without\n * fabricating or dropping fields.\n *\n * @module @betterprompt/shared/schemas/analysis-run\n */\n\nimport { z } from 'zod';\nimport {\n Phase1OutputSchema,\n type Phase1Output,\n} from './phase1-output.js';\nimport {\n DeterministicScoresSchema,\n type DeterministicScores,\n DeterministicTypeResultSchema,\n type DeterministicTypeResult,\n} from './deterministic-scores.js';\nimport {\n DomainResultSchema,\n type DomainResult,\n} from './domain-result.js';\nimport {\n SessionSummaryBatchSchema,\n ProjectSummaryBatchSchema,\n WeeklyInsightsSchema,\n TypeClassificationStageOutputSchema,\n EvidenceVerificationOutputSchema,\n ContentWriterOutputSchema,\n TranslatorOutputSchema,\n} from './stage-outputs.js';\n\n/**\n * Report-facing activity session shape.\n * Normalized to minutes because this is what the dashboard and local report use.\n */\nexport const ReportActivitySessionSchema = z.object({\n sessionId: z.string(),\n projectName: z.string(),\n startTime: z.string(),\n durationMinutes: z.number().min(0),\n messageCount: z.number().int().min(0),\n summary: z.string(),\n totalInputTokens: z.number().int().min(0).optional(),\n totalOutputTokens: z.number().int().min(0).optional(),\n});\nexport type ReportActivitySession = z.infer;\n\nexport const CanonicalStageOutputsSchema = z.object({\n sessionSummaries: SessionSummaryBatchSchema.optional(),\n projectSummaries: ProjectSummaryBatchSchema.optional(),\n weeklyInsights: WeeklyInsightsSchema.optional(),\n typeClassification: TypeClassificationStageOutputSchema.optional(),\n evidenceVerification: EvidenceVerificationOutputSchema.optional(),\n contentWriter: ContentWriterOutputSchema.optional(),\n translator: TranslatorOutputSchema.optional(),\n});\nexport type CanonicalStageOutputs = z.infer;\n\n/**\n * Final evaluation is produced by the server-side schema today, but the plugin\n * package cannot depend on that app-local module. Keep the envelope strict about\n * run-scoped artifacts while allowing the evaluation payload to remain an\n * opaque structured object across package boundaries.\n */\nexport const CanonicalEvaluationPayloadSchema = z.record(z.string(), z.unknown());\nexport type CanonicalEvaluationPayload = z.infer;\n\nexport const CanonicalAnalysisRunSchema = z.object({\n runId: z.number().int().min(1),\n analyzedAt: z.string(),\n phase1Output: Phase1OutputSchema,\n activitySessions: z.array(ReportActivitySessionSchema),\n deterministicScores: DeterministicScoresSchema,\n typeResult: DeterministicTypeResultSchema.nullable(),\n domainResults: z.array(DomainResultSchema),\n stageOutputs: CanonicalStageOutputsSchema,\n evaluation: CanonicalEvaluationPayloadSchema,\n translation: TranslatorOutputSchema.optional(),\n debug: z.record(z.string(), z.unknown()).optional(),\n});\nexport type CanonicalAnalysisRun = z.infer;\n\nexport interface CanonicalAnalysisRunParts {\n runId: number;\n analyzedAt: string;\n phase1Output: Phase1Output;\n activitySessions: ReportActivitySession[];\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n}\n","/**\n * Worker Output Schemas - Consolidated Phase 2 Worker Output Types\n *\n * Canonical Zod schemas for all Phase 2 worker outputs, shared between\n * server (analysis pipeline) and client (report rendering).\n *\n * Workers:\n * - ThinkingQuality: Planning + Critical Thinking\n * - CommunicationPatterns: Communication patterns + Signature quotes\n * - LearningBehavior: Knowledge gaps + Repeated mistakes\n * - ContextEfficiency: Token efficiency patterns + Productivity\n * - SessionOutcome: Goals, friction, success rates\n *\n * Respects Gemini's 4-level nesting limit (arrays don't count).\n *\n * @module @betterprompt/shared/schemas/worker-outputs\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Evidence Schemas\n// ============================================================================\n\n/**\n * Structured evidence with utterance ID linking.\n * Enables linking evidence quotes back to original developer utterances.\n */\nexport const InsightEvidenceSchema = z.object({\n /** Utterance ID from Phase 1 (format: {sessionId}_{turnIndex}) */\n utteranceId: z.string(),\n /** Direct quote or paraphrase from the developer's message */\n quote: z.string(),\n /** Brief context description */\n context: z.string().optional(),\n});\nexport type InsightEvidence = z.infer;\n\n/**\n * Evidence can be either a simple string (legacy) or structured with utterance linking.\n * Union type enables backward compatibility with existing data.\n */\nexport const EvidenceItemSchema = z.union([\n z.string(),\n InsightEvidenceSchema,\n]);\nexport type EvidenceItem = z.infer;\n\n// Alias for external consumers expecting \"EvidenceSchema\"\nexport const EvidenceSchema = EvidenceItemSchema;\nexport type Evidence = EvidenceItem;\n\n// ============================================================================\n// Worker Strength Schema\n// ============================================================================\n\n/**\n * A strength identified by a Phase 2 Worker in its domain.\n * Each worker identifies 1-6 strengths with supporting evidence.\n */\nexport const WorkerStrengthSchema = z.object({\n /** Clear, specific title (e.g., \"Systematic Output Verification\") */\n title: z.string(),\n /** 6-10 sentences providing comprehensive analysis */\n description: z.string(),\n /**\n * Direct quotes from developer messages demonstrating this (1-8 items).\n * Can be simple strings (legacy) or structured with utterance linking.\n */\n evidence: z.array(EvidenceItemSchema).min(1).max(8),\n /** Truncated description preview for free tier blur teaser (set by ContentGateway) */\n descriptionPreview: z.string().optional(),\n});\nexport type WorkerStrength = z.infer;\n\n// ============================================================================\n// Worker Growth Schema\n// ============================================================================\n\n/**\n * Severity level for growth areas.\n *\n * - critical: 70%+ occurrence or fundamental skill gap\n * - high: 40-70% occurrence or significant impact\n * - medium: 20-40% occurrence or moderate impact\n * - low: <20% occurrence or minor impact\n */\nexport const WorkerGrowthSeveritySchema = z.enum(['critical', 'high', 'medium', 'low']);\nexport type WorkerGrowthSeverity = z.infer;\n\n/**\n * A growth area identified by a Phase 2 Worker in its domain.\n * Each worker identifies 1-6 growth areas with supporting evidence\n * and actionable recommendations.\n */\nexport const WorkerGrowthSchema = z.object({\n /** Clear, specific title (e.g., \"Error Loop Pattern\") */\n title: z.string(),\n /** 6-10 sentences providing comprehensive analysis */\n description: z.string(),\n /**\n * Direct quotes from developer messages showing this pattern (1-8 items).\n * Can be simple strings (legacy) or structured with utterance linking.\n */\n evidence: z.array(EvidenceItemSchema).min(1).max(8),\n /** 4-6 sentences with step-by-step actionable advice */\n recommendation: z.string(),\n /** How critical this growth area is to address */\n severity: WorkerGrowthSeveritySchema.optional(),\n /** Truncated description preview for free tier blur teaser (set by ContentGateway) */\n descriptionPreview: z.string().optional(),\n /** Truncated recommendation preview for free tier blur teaser (set by ContentGateway) */\n recommendationPreview: z.string().optional(),\n});\nexport type WorkerGrowth = z.infer;\n\n// ============================================================================\n// Referenced Insight Schema\n// ============================================================================\n\n/**\n * Referenced insight from Knowledge Base.\n * Post-processed from [pi-XXX] references in worker output text.\n */\nexport const ReferencedInsightSchema = z.object({\n /** Insight ID (e.g., \"pi-001\") */\n id: z.string(),\n /** Human-readable title */\n title: z.string(),\n /** Source URL for the insight */\n url: z.string(),\n /** Main insight text */\n keyTakeaway: z.string(),\n /** Actionable tips array */\n actionableAdvice: z.array(z.string()),\n /** Insight category: diagnosis | trend | tool | type-specific */\n category: z.string(),\n /** Author name from source */\n sourceAuthor: z.string(),\n});\nexport type ReferencedInsight = z.infer;\n\n// ============================================================================\n// ThinkingQuality Domain Schemas\n// ============================================================================\n\nexport const PlanningHabitTypeSchema = z.enum([\n 'uses_plan_command',\n 'plan_mode_usage',\n 'task_decomposition',\n 'structure_first',\n 'todowrite_usage',\n 'no_planning',\n]);\nexport type PlanningHabitType = z.infer;\n\nexport const HabitFrequencySchema = z.enum(['always', 'often', 'sometimes', 'rarely', 'never']);\nexport type HabitFrequency = z.infer;\n\nexport const PlanningHabitSchema = z.object({\n type: PlanningHabitTypeSchema,\n frequency: HabitFrequencySchema,\n examples: z.array(z.string()),\n effectiveness: z.enum(['high', 'medium', 'low']).optional(),\n});\nexport type PlanningHabit = z.infer;\n\nexport const CriticalThinkingTypeSchema = z.enum([\n 'verification_request',\n 'output_validation',\n 'assumption_questioning',\n 'alternative_exploration',\n 'edge_case_consideration',\n 'security_check',\n 'ai_output_correction',\n]);\nexport type CriticalThinkingType = z.infer;\n\nexport const CriticalThinkingMomentSchema = z.object({\n type: CriticalThinkingTypeSchema,\n quote: z.string(),\n result: z.string(),\n utteranceId: z.string().optional(),\n});\nexport type CriticalThinkingMoment = z.infer;\n\nexport const VerificationLevelSchema = z.enum([\n 'blind_trust',\n 'occasional_review',\n 'systematic_verification',\n 'skeptical',\n]);\nexport type VerificationLevel = z.infer;\n\nexport const VerificationBehaviorSchema = z.object({\n level: VerificationLevelSchema,\n examples: z.array(z.string()),\n recommendation: z.string(),\n confidence: z.number().min(0).max(1).optional(),\n});\nexport type VerificationBehavior = z.infer;\n\nexport const PatternSeveritySchema = z.enum(['critical', 'significant', 'moderate', 'mild']);\nexport type PatternSeverity = z.infer;\n\nexport const AntiPatternExampleSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n context: z.string().optional(),\n});\nexport type AntiPatternExample = z.infer;\n\nexport const DetectedAntiPatternSchema = z.object({\n type: z.string(),\n frequency: z.number().int().min(1),\n examples: z.array(AntiPatternExampleSchema),\n severity: PatternSeveritySchema,\n improvement: z.string().optional(),\n sessionPercentage: z.number().min(0).max(100).optional(),\n});\nexport type DetectedAntiPattern = z.infer;\n\nexport const ContextPollutionSchema = z.object({\n description: z.string(),\n impact: z.enum(['high', 'medium', 'low']),\n});\nexport type ContextPollution = z.infer;\n\nexport const MultitaskingPatternSchema = z.object({\n mixesTopicsInSessions: z.boolean(),\n contextPollutionInstances: z.array(ContextPollutionSchema),\n focusScore: z.number().min(0).max(100).optional(),\n recommendation: z.string().optional(),\n});\nexport type MultitaskingPattern = z.infer;\n\n/**\n * Complete output from ThinkingQualityAnalyzer.\n * Combines Planning Quality + Critical Thinking dimensions.\n */\nexport const ThinkingQualityOutputSchema = z.object({\n // Planning Dimension\n planningHabits: z.array(PlanningHabitSchema),\n planQualityScore: z.number().min(0).max(100),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n\n // Critical Thinking Dimension\n verificationBehavior: VerificationBehaviorSchema,\n criticalThinkingMoments: z.array(CriticalThinkingMomentSchema),\n verificationAntiPatterns: z.array(DetectedAntiPatternSchema),\n\n // Overall Scores\n overallThinkingQualityScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type ThinkingQualityOutput = z.infer;\n\n// ============================================================================\n// CommunicationPatterns Domain Schemas\n// ============================================================================\n\nexport const PatternFrequencySchema = z.enum(['frequent', 'occasional', 'rare']);\nexport type PatternFrequency = z.infer;\n\nexport const PatternEffectivenessSchema = z.enum(['highly_effective', 'effective', 'could_improve']);\nexport type PatternEffectiveness = z.infer;\n\nexport const PatternExampleSchema = z.object({\n utteranceId: z.string(),\n analysis: z.string(),\n});\nexport type PatternExample = z.infer;\n\nexport const CommunicationPatternSchema = z.object({\n patternName: z.string(),\n description: z.string(),\n frequency: PatternFrequencySchema,\n examples: z.array(PatternExampleSchema).min(1).max(5),\n effectiveness: PatternEffectivenessSchema,\n tip: z.string().optional(),\n});\nexport type CommunicationPattern = z.infer;\n\nexport const SignatureQuoteSchema = z.object({\n utteranceId: z.string(),\n significance: z.string(),\n representedStrength: z.string(),\n});\nexport type SignatureQuote = z.infer;\n\n/**\n * Complete output from CommunicationPatternsWorker.\n * Analyzes communication clarity: patterns + signature quotes.\n */\nexport const CommunicationPatternsOutputSchema = z.object({\n // Communication Patterns\n communicationPatterns: z.array(CommunicationPatternSchema),\n signatureQuotes: z.array(SignatureQuoteSchema).optional(),\n\n // Overall Scores\n overallCommunicationScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type CommunicationPatternsOutput = z.infer;\n\n// ============================================================================\n// LearningBehavior Domain Schemas\n// ============================================================================\n\nexport const KnowledgeGapItemSchema = z.object({\n topic: z.string(),\n description: z.string(),\n questionCount: z.number().int().min(1),\n depth: z.enum(['shallow', 'moderate', 'deep']),\n example: z.string(),\n});\nexport type KnowledgeGapItem = z.infer;\n\nexport const LearningProgressSchema = z.object({\n topic: z.string(),\n description: z.string(),\n startLevel: z.enum(['novice', 'shallow', 'moderate', 'deep', 'expert']),\n currentLevel: z.enum(['novice', 'shallow', 'moderate', 'deep', 'expert']),\n evidence: z.string(),\n});\nexport type LearningProgress = z.infer;\n\nexport const ResourceSchema = z.object({\n topic: z.string(),\n resourceType: z.enum(['docs', 'tutorial', 'course', 'article', 'video']),\n url: z.string(),\n});\nexport type Resource = z.infer;\n\nexport const RepeatedMistakePatternSchema = z.object({\n category: z.string(),\n mistakeType: z.string(),\n description: z.string(),\n occurrenceCount: z.number().int().min(2),\n sessionPercentage: z.number().min(0).max(100).optional(),\n exampleUtteranceIds: z.array(z.string()).max(5),\n recommendation: z.string(),\n});\nexport type RepeatedMistakePattern = z.infer;\n\n/**\n * Complete output from LearningBehaviorAnalyzer.\n * Combines Knowledge Gaps + Learning Progress + Repeated Mistakes.\n */\nexport const LearningBehaviorOutputSchema = z.object({\n // Knowledge Gap Dimension\n knowledgeGaps: z.array(KnowledgeGapItemSchema),\n learningProgress: z.array(LearningProgressSchema),\n recommendedResources: z.array(ResourceSchema),\n\n // Repeated Mistakes Dimension\n repeatedMistakePatterns: z.array(RepeatedMistakePatternSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n kptKeep: z.array(z.string()).max(2).optional(),\n kptProblem: z.array(z.string()).max(2).optional(),\n kptTry: z.array(z.string()).max(2).optional(),\n\n // Overall Scores\n overallLearningScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type LearningBehaviorOutput = z.infer;\n\n// ============================================================================\n// ContextEfficiency Domain Schemas\n// ============================================================================\n\nexport const ContextUsagePatternSchema = z.object({\n sessionId: z.string(),\n avgFillPercent: z.number().min(0).max(100),\n compactTriggerPercent: z.number().min(0).max(100).optional(),\n});\nexport type ContextUsagePattern = z.infer;\n\nexport const InefficiencyPatternEnum = z.enum([\n 'late_compact',\n 'context_bloat',\n 'redundant_info',\n 'prompt_length_inflation',\n 'no_session_separation',\n 'verbose_error_pasting',\n 'no_knowledge_persistence',\n]);\nexport type InefficiencyPattern = z.infer;\n\nexport const InefficiencySchema = z.object({\n pattern: InefficiencyPatternEnum,\n frequency: z.number().int().min(1),\n impact: z.enum(['high', 'medium', 'low']),\n description: z.string(),\n});\nexport type Inefficiency = z.infer;\n\nexport const PromptLengthTrendSchema = z.object({\n phase: z.enum(['early', 'mid', 'late']),\n avgLength: z.number().int().min(0),\n});\nexport type PromptLengthTrend = z.infer;\n\nexport const RedundantInfoSchema = z.object({\n infoType: z.string(),\n repeatCount: z.number().int().min(1),\n});\nexport type RedundantInfo = z.infer;\n\nexport const IterationSummarySchema = z.object({\n sessionId: z.string(),\n iterationCount: z.number().int().min(0),\n avgTurnsPerIteration: z.number().min(0),\n});\nexport type IterationSummary = z.infer;\n\n/**\n * Complete output from ContextEfficiencyWorker.\n * Analyzes token efficiency patterns + productivity metrics.\n */\nexport const ContextEfficiencyOutputSchema = z.object({\n // Context usage patterns\n contextUsagePatterns: z.array(ContextUsagePatternSchema),\n inefficiencyPatterns: z.array(InefficiencySchema),\n promptLengthTrends: z.array(PromptLengthTrendSchema),\n redundantInfo: z.array(RedundantInfoSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n kptKeep: z.array(z.string()).max(2).optional(),\n kptProblem: z.array(z.string()).max(2).optional(),\n kptTry: z.array(z.string()).max(2).optional(),\n\n // Overall Scores\n overallEfficiencyScore: z.number().min(0).max(100),\n avgContextFillPercent: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n\n // Productivity metrics (consolidated from ProductivityAnalyst)\n iterationSummaries: z.array(IterationSummarySchema).optional(),\n collaborationEfficiencyScore: z.number().min(0).max(100).optional(),\n overallProductivityScore: z.number().min(0).max(100).optional(),\n productivitySummary: z.string().optional(),\n});\nexport type ContextEfficiencyOutput = z.infer;\n\n// ============================================================================\n// SessionOutcome Domain Schemas\n// ============================================================================\n\nexport const GoalCategoryEnum = z.enum([\n 'debug_investigate',\n 'implement_feature',\n 'fix_bug',\n 'refactor',\n 'write_tests',\n 'setup_config',\n 'documentation',\n 'review_feedback',\n 'exploration',\n 'quick_question',\n 'deploy_infra',\n 'dependency_management',\n 'performance_optimization',\n 'security_audit',\n]);\nexport type GoalCategory = z.infer;\n\nexport const SessionTypeEnum = z.enum([\n 'single_task',\n 'multi_task',\n 'iterative_refinement',\n 'exploration',\n 'quick_question',\n]);\nexport type SessionType = z.infer;\n\nexport const FrictionTypeEnum = z.enum([\n 'misunderstood_request',\n 'wrong_approach',\n 'buggy_code_generated',\n 'user_rejection',\n 'blocked_state',\n 'tool_failure',\n 'context_overflow',\n 'hallucination',\n 'incomplete_solution',\n 'excessive_iterations',\n 'permission_error',\n 'environment_mismatch',\n]);\nexport type FrictionType = z.infer;\n\nexport const OutcomeEnum = z.enum([\n 'fully_achieved',\n 'mostly_achieved',\n 'partially_achieved',\n 'not_achieved',\n 'unclear',\n]);\nexport type Outcome = z.infer;\n\nexport const SatisfactionEnum = z.enum([\n 'frustrated',\n 'dissatisfied',\n 'neutral',\n 'satisfied',\n 'happy',\n]);\nexport type Satisfaction = z.infer;\n\nexport const SessionAnalysisSchema = z.object({\n sessionId: z.string(),\n primaryGoal: GoalCategoryEnum,\n secondaryGoals: z.array(GoalCategoryEnum).max(2).optional(),\n sessionType: SessionTypeEnum,\n outcome: OutcomeEnum,\n satisfaction: SatisfactionEnum,\n frictionTypes: z.array(FrictionTypeEnum).max(3),\n keyMoment: z.string().optional(),\n});\nexport type SessionAnalysis = z.infer;\n\nexport const GoalDistributionItemSchema = z.object({\n goal: GoalCategoryEnum,\n count: z.number().int().min(1),\n successRate: z.number().min(0).max(100),\n});\nexport type GoalDistributionItem = z.infer;\n\nexport const SessionTypeDistributionItemSchema = z.object({\n type: SessionTypeEnum,\n count: z.number().int().min(1),\n avgOutcomeScore: z.number().min(0).max(100),\n});\nexport type SessionTypeDistributionItem = z.infer;\n\nexport const FrictionSummaryItemSchema = z.object({\n type: FrictionTypeEnum,\n count: z.number().int().min(1),\n impactLevel: z.enum(['high', 'medium', 'low']),\n commonCause: z.string(),\n recommendation: z.string(),\n});\nexport type FrictionSummaryItem = z.infer;\n\nexport const SuccessPatternSchema = z.object({\n pattern: z.string(),\n associatedGoals: z.array(GoalCategoryEnum),\n frequency: z.number().min(0).max(100),\n});\nexport type SuccessPattern = z.infer;\n\nexport const FailurePatternSchema = z.object({\n pattern: z.string(),\n associatedFrictions: z.array(FrictionTypeEnum),\n frequency: z.number().min(0).max(100),\n});\nexport type FailurePattern = z.infer;\n\n/**\n * Complete output from SessionOutcomeWorker.\n * Analyzes session success patterns, goal achievement, and friction points.\n */\nexport const SessionOutcomeOutputSchema = z.object({\n // Per-Session Analysis\n sessionAnalyses: z.array(SessionAnalysisSchema),\n\n // Aggregated Statistics\n overallSuccessRate: z.number().min(0).max(100),\n goalDistribution: z.array(GoalDistributionItemSchema),\n sessionTypeDistribution: z.array(SessionTypeDistributionItemSchema),\n frictionSummary: z.array(FrictionSummaryItemSchema),\n\n // Pattern Analysis\n successPatterns: z.array(SuccessPatternSchema),\n failurePatterns: z.array(FailurePatternSchema),\n\n // Overall Scores\n overallOutcomeScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionOutcomeOutput = z.infer;\n\n// ============================================================================\n// AI Partnership Domain Schemas (v2 — merged Collaboration + Control)\n// ============================================================================\n\n/**\n * Complete output from AiPartnershipWorker.\n * Merges ThinkingQuality (planning, verification, critical thinking) with\n * SessionOutcome (goal achievement, friction, AI control patterns) into a\n * unified AI Partnership dimension.\n */\nexport const AiPartnershipOutputSchema = z.object({\n // Planning Dimension (from ThinkingQuality)\n planningHabits: z.array(PlanningHabitSchema),\n planQualityScore: z.number().min(0).max(100),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n\n // Critical Thinking Dimension (from ThinkingQuality)\n verificationBehavior: VerificationBehaviorSchema,\n criticalThinkingMoments: z.array(CriticalThinkingMomentSchema),\n verificationAntiPatterns: z.array(DetectedAntiPatternSchema),\n\n // AI Control Dimension (from SessionOutcome)\n sessionAnalyses: z.array(SessionAnalysisSchema),\n overallSuccessRate: z.number().min(0).max(100),\n goalDistribution: z.array(GoalDistributionItemSchema),\n frictionSummary: z.array(FrictionSummaryItemSchema),\n\n // Overall Scores\n overallAiPartnershipScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type AiPartnershipOutput = z.infer;\n\n// ============================================================================\n// Session Craft Domain Schemas (v2 — merged Context Engineering + Burnout Risk)\n// ============================================================================\n\n/**\n * Complete output from SessionCraftWorker.\n * Merges ContextEfficiency (token usage, prompt patterns) with\n * LearningBehavior (burnout risk, repeated mistakes) into a unified\n * Session Craft dimension.\n */\nexport const SessionCraftOutputSchema = z.object({\n // Context Efficiency Dimension\n contextUsagePatterns: z.array(ContextUsagePatternSchema),\n inefficiencyPatterns: z.array(InefficiencySchema),\n promptLengthTrends: z.array(PromptLengthTrendSchema),\n avgContextFillPercent: z.number().min(0).max(100),\n\n // Burnout / Learning Dimension\n repeatedMistakePatterns: z.array(RepeatedMistakePatternSchema),\n knowledgeGaps: z.array(KnowledgeGapItemSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n\n // Overall Scores\n overallSessionCraftScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionCraftOutput = z.infer;\n\n// ============================================================================\n// Session Mastery Domain Schemas (v2 — absence-of-anti-pattern scoring)\n// ============================================================================\n\n/**\n * Anti-pattern absence indicator.\n * Tracks whether a negative pattern is present or absent.\n * Absence of the pattern when skill is internalized scores positive.\n */\nexport const AbsenceIndicatorSchema = z.object({\n /** Name of the anti-pattern being checked */\n pattern: z.string(),\n /** Whether the anti-pattern was observed */\n present: z.boolean(),\n /** Number of occurrences (0 = absent) */\n occurrenceCount: z.number().int().min(0),\n /** Total sessions checked */\n sessionsChecked: z.number().int().min(1),\n /** Score contribution: 0 (always present) to 100 (always absent) */\n absenceScore: z.number().min(0).max(100),\n /** Evidence of presence (empty if absent — which is good) */\n evidence: z.array(EvidenceItemSchema),\n /**\n * Expert interpretation:\n * - 'internalized': absence indicates mastery (skill no longer needs scaffolding)\n * - 'not_applicable': pattern not relevant for this developer's workflow\n * - 'concerning': absence may indicate gap (e.g., never verifies output)\n */\n interpretation: z.enum(['internalized', 'not_applicable', 'concerning']),\n});\nexport type AbsenceIndicator = z.infer;\n\n/**\n * Session cleanliness score for individual sessions.\n * Experts produce \"clean\" sessions: low friction, no retries, focused work.\n */\nexport const SessionCleanlinessSchema = z.object({\n sessionId: z.string(),\n cleanlinessScore: z.number().min(0).max(100),\n antiPatternCount: z.number().int().min(0),\n /** Indicates expert-level session control */\n isCleanSession: z.boolean(),\n});\nexport type SessionCleanliness = z.infer;\n\n/**\n * Complete output from SessionMasteryWorker (v2 — absence scoring).\n * Distinguishes intermediate (uses scaffolding tools) from expert\n * (internalized skills, clean sessions) by scoring the ABSENCE of\n * anti-patterns rather than the presence of positive signals.\n *\n * Key rubric principle: absence of tool usage when skill is internalized\n * scores neutral or positive, never negative.\n */\nexport const SessionMasteryOutputSchema = z.object({\n // Absence Indicators\n absenceIndicators: z.array(AbsenceIndicatorSchema),\n\n // Session Cleanliness\n sessionCleanliness: z.array(SessionCleanlinessSchema),\n cleanSessionPercentage: z.number().min(0).max(100),\n\n // Expert Differentiation\n scaffoldingDependencyScore: z.number().min(0).max(100),\n internalizedSkillSignals: z.array(z.string()),\n expertBehaviorIndicators: z.array(z.string()),\n\n // Overall Scores\n overallSessionMasteryScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionMasteryOutput = z.infer;\n","/**\n * Canonical Analysis Evaluation Assembly\n *\n * Shared plugin/server logic for canonical run assembly and translated\n * report-field overlays. The plugin uses the full canonical builder and\n * the server reuses the translation merge helpers for final evaluation\n * convergence.\n *\n * @module @betterprompt/shared/evaluation/canonical-analysis\n */\n\nimport type {\n CanonicalAnalysisRun,\n CanonicalStageOutputs,\n ContentWriterOutput,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n Evidence,\n EvidenceVerificationOutput,\n Phase1Output,\n ProjectSummary,\n ReportActivitySession,\n SessionSummary,\n TranslatorOutput,\n WeeklyInsights,\n} from '../schemas/index.js';\n\ntype EvaluationPayload = CanonicalAnalysisRun['evaluation'];\ntype TranslationFields = Record;\n\ninterface FinalEvaluationEnvelopeArgs {\n sessionId: string;\n analyzedAt: string;\n sessionsAnalyzed: number;\n avgPromptLength: number;\n avgTurnsPerSession: number;\n assembledSections?: Record;\n sessionSummaries?: unknown;\n activitySessions?: unknown;\n projectSummaries?: unknown;\n weeklyInsights?: unknown;\n agentOutputs?: unknown;\n translatedAgentInsights?: unknown;\n knowledgeResources?: unknown;\n pipelineTokenUsage?: unknown;\n analysisMetadata?: unknown;\n}\n\n/** Maps worker domain → evaluation dimension (used by topFocusAreas for report display). */\nconst DOMAIN_TO_EVALUATION_DIMENSION: Record = {\n thinkingQuality: 'aiControl',\n communicationPatterns: 'aiCollaboration',\n learningBehavior: 'skillResilience',\n contextEfficiency: 'contextEngineering',\n sessionOutcome: 'burnoutRisk',\n};\n\nfunction normalizeQuote(text: string): string {\n return text.replace(/\\s+/g, ' ').trim();\n}\n\nfunction buildVerificationKey(utteranceId: string, quote: string): string {\n return `${utteranceId}::${normalizeQuote(quote)}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction filterEvidence(\n evidence: Evidence[],\n verification?: EvidenceVerificationOutput,\n): Evidence[] {\n if (!verification?.verifiedResults?.length) {\n return evidence;\n }\n\n const verifiedKeys = new Set(\n verification.verifiedResults\n .filter(item => item.verified)\n .map(item => buildVerificationKey(item.utteranceId, item.quote)),\n );\n\n return evidence.filter(item => {\n if (!item || typeof item === 'string') {\n return false;\n }\n return verifiedKeys.has(buildVerificationKey(item.utteranceId, item.quote));\n });\n}\n\nexport function applyEvidenceVerification(\n domainResults: DomainResult[],\n verification?: EvidenceVerificationOutput,\n): DomainResult[] {\n if (!verification?.verifiedResults?.length) {\n return domainResults;\n }\n\n return domainResults.map(result => ({\n ...result,\n strengths: result.strengths\n .map(strength => ({\n ...strength,\n evidence: filterEvidence(strength.evidence, verification),\n }))\n .filter(strength => strength.evidence.length > 0),\n growthAreas: result.growthAreas\n .map(area => ({\n ...area,\n evidence: filterEvidence(area.evidence, verification),\n }))\n .filter(area => area.evidence.length > 0),\n }));\n}\n\nfunction buildSessionSummaryLookup(\n sessionSummaries?: { summaries?: SessionSummary[] },\n): Map {\n const lookup = new Map();\n for (const item of sessionSummaries?.summaries ?? []) {\n lookup.set(item.sessionId, item.summary);\n }\n return lookup;\n}\n\nexport function buildReportActivitySessions(\n phase1Output: Phase1Output,\n sessionSummaries?: { summaries?: SessionSummary[] },\n): ReportActivitySession[] {\n const summaryLookup = buildSessionSummaryLookup(sessionSummaries);\n\n return (phase1Output.activitySessions ?? []).map(session => ({\n sessionId: session.sessionId,\n projectName: session.projectName,\n startTime: session.startTime,\n durationMinutes: Math.round(((session.durationSeconds ?? 0) / 60) * 10) / 10,\n messageCount: session.messageCount,\n summary: summaryLookup.get(session.sessionId)\n ?? session.firstUserMessage\n ?? 'Session activity',\n ...(typeof session.totalInputTokens === 'number'\n ? { totalInputTokens: session.totalInputTokens }\n : {}),\n ...(typeof session.totalOutputTokens === 'number'\n ? { totalOutputTokens: session.totalOutputTokens }\n : {}),\n }));\n}\n\nexport function assembleFinalEvaluationEnvelope(\n args: FinalEvaluationEnvelopeArgs,\n): Record {\n const evaluation: Record = {\n sessionId: args.sessionId,\n analyzedAt: args.analyzedAt,\n sessionsAnalyzed: args.sessionsAnalyzed,\n avgPromptLength: args.avgPromptLength,\n avgTurnsPerSession: args.avgTurnsPerSession,\n ...(args.activitySessions !== undefined ? { activitySessions: args.activitySessions } : {}),\n ...(args.sessionSummaries !== undefined ? { sessionSummaries: args.sessionSummaries } : {}),\n ...(args.projectSummaries !== undefined ? { projectSummaries: args.projectSummaries } : {}),\n ...(args.weeklyInsights !== undefined ? { weeklyInsights: args.weeklyInsights } : {}),\n ...(args.assembledSections ?? {}),\n ...(args.agentOutputs !== undefined ? { agentOutputs: args.agentOutputs } : {}),\n ...(args.translatedAgentInsights !== undefined\n ? { translatedAgentInsights: args.translatedAgentInsights }\n : {}),\n ...(args.knowledgeResources !== undefined ? { knowledgeResources: args.knowledgeResources } : {}),\n ...(args.pipelineTokenUsage !== undefined ? { pipelineTokenUsage: args.pipelineTokenUsage } : {}),\n ...(args.analysisMetadata !== undefined ? { analysisMetadata: args.analysisMetadata } : {}),\n };\n\n return evaluation;\n}\n\nfunction toPromptPatternFrequency(value: unknown): 'frequent' | 'occasional' | 'rare' {\n if (typeof value === 'number') {\n if (value >= 0.34) return 'frequent';\n if (value >= 0.12) return 'occasional';\n return 'rare';\n }\n\n if (typeof value === 'string') {\n if (value === 'frequent' || value === 'occasional' || value === 'rare') {\n return value;\n }\n if (value === 'often' || value === 'high') return 'frequent';\n if (value === 'sometimes' || value === 'medium') return 'occasional';\n }\n\n return 'occasional';\n}\n\nfunction toPromptPatternEffectiveness(value: unknown): 'highly_effective' | 'effective' | 'could_improve' {\n if (typeof value === 'string') {\n if (value === 'highly_effective' || value === 'effective' || value === 'could_improve') {\n return value;\n }\n if (value === 'very_effective' || value === 'high') return 'highly_effective';\n if (value === 'medium' || value === 'moderate') return 'effective';\n }\n return 'effective';\n}\n\nfunction buildPromptPatterns(domainResults: DomainResult[]): Array> {\n const communication = domainResults.find(result => result.domain === 'communicationPatterns');\n const rawPatterns = communication?.data && typeof communication.data === 'object'\n ? (communication.data as Record).communicationPatterns\n : undefined;\n\n if (!Array.isArray(rawPatterns)) {\n return [];\n }\n\n return rawPatterns\n .filter((pattern): pattern is Record => !!pattern && typeof pattern === 'object')\n .map((pattern, index) => {\n const evidence = Array.isArray(pattern.evidence) ? pattern.evidence : [];\n return {\n patternName: typeof pattern.title === 'string'\n ? pattern.title\n : typeof pattern.patternId === 'string'\n ? pattern.patternId\n : `Pattern ${index + 1}`,\n description: typeof pattern.description === 'string' ? pattern.description : '',\n frequency: toPromptPatternFrequency(pattern.frequency),\n examples: evidence\n .filter((item): item is { quote?: unknown; context?: unknown } => !!item && typeof item === 'object')\n .map(item => ({\n quote: typeof item.quote === 'string' ? item.quote : '',\n analysis: typeof item.context === 'string' ? item.context : 'Observed in communication behavior',\n }))\n .filter(item => item.quote)\n .slice(0, 3),\n effectiveness: toPromptPatternEffectiveness(pattern.effectiveness),\n };\n })\n .filter(pattern => typeof pattern.description === 'string' && pattern.description.length > 0);\n}\n\nfunction buildTopFocusAreas(contentWriter?: ContentWriterOutput): EvaluationPayload['topFocusAreas'] {\n if (!contentWriter?.topFocusAreas?.length) {\n return undefined;\n }\n\n return {\n summary: 'Highest-leverage collaboration habits surfaced in this analysis.',\n areas: contentWriter.topFocusAreas.slice(0, 3).map((area, index) => ({\n rank: index + 1,\n dimension: DOMAIN_TO_EVALUATION_DIMENSION[area.relatedQualities[0] ?? ''] ?? 'aiCollaboration',\n title: area.title,\n narrative: area.description,\n expectedImpact: `Improves ${area.relatedQualities.join(', ') || 'overall collaboration quality'}.`,\n priorityScore: Math.max(100 - index * 10, 70),\n ...(area.actions ? { actions: area.actions } : {}),\n })),\n };\n}\n\nfunction inferWeekRange(activitySessions: ReportActivitySession[], analyzedAt: string): { start: string; end: string } {\n const end = activitySessions[0]?.startTime ?? analyzedAt;\n const startDate = new Date(end);\n startDate.setDate(startDate.getDate() - 6);\n return {\n start: startDate.toISOString(),\n end,\n };\n}\n\nfunction buildWeeklyInsights(\n weeklyInsights: WeeklyInsights | undefined,\n activitySessions: ReportActivitySession[],\n analyzedAt: string,\n): EvaluationPayload['weeklyInsights'] {\n if (!weeklyInsights) {\n return undefined;\n }\n\n const totalMinutes = weeklyInsights.stats.totalMinutes;\n\n return {\n weekRange: inferWeekRange(activitySessions, analyzedAt),\n stats: {\n totalSessions: weeklyInsights.stats.sessionCount,\n totalMinutes,\n totalTokens: weeklyInsights.stats.totalTokens,\n activeDays: weeklyInsights.stats.activeDays,\n avgSessionMinutes: weeklyInsights.stats.sessionCount > 0\n ? Math.round((totalMinutes / weeklyInsights.stats.sessionCount) * 10) / 10\n : 0,\n },\n ...(typeof weeklyInsights.stats.deltaSessionCount === 'number'\n || typeof weeklyInsights.stats.deltaMinutes === 'number'\n || typeof weeklyInsights.stats.deltaTokens === 'number'\n ? {\n comparison: {\n sessionsDelta: weeklyInsights.stats.deltaSessionCount ?? 0,\n minutesDelta: weeklyInsights.stats.deltaMinutes ?? 0,\n tokensDelta: weeklyInsights.stats.deltaTokens ?? 0,\n activeDaysDelta: 0,\n },\n }\n : {}),\n projects: weeklyInsights.projects.map(project => ({\n projectName: project.projectName,\n sessionCount: project.sessionCount,\n totalMinutes: Math.round((totalMinutes * project.percentage) / 100),\n percentage: project.percentage,\n })),\n topProjectSessions: weeklyInsights.topSessions.map(session => {\n const activity = activitySessions.find(item => item.sessionId === session.sessionId);\n return {\n summary: session.summary,\n durationMinutes: activity?.durationMinutes ?? 0,\n date: activity?.startTime\n ? new Date(activity.startTime).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n : '',\n };\n }),\n narrative: weeklyInsights.narrative,\n highlights: weeklyInsights.highlights,\n };\n}\n\nfunction buildWorkerInsights(domainResults: DomainResult[]): Record {\n const workerInsights: Record = {};\n\n for (const result of domainResults) {\n if (result.domain === 'content') continue;\n\n workerInsights[result.domain] = {\n strengths: result.strengths,\n growthAreas: result.growthAreas,\n domainScore: result.overallScore,\n };\n }\n\n return workerInsights;\n}\n\n// ============================================================================\n// Structured Sub-Analysis Assembly (Fix 4)\n//\n// These functions extract secondary structures from the thinkingQuality\n// domain's `data` field and surface them as top-level evaluation fields.\n// The server's evaluation-assembler produces these; without them, the\n// report's detail panels appear empty.\n// ============================================================================\n\nfunction formatDisplayName(type: string): string {\n return type\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction mapAntiPatternSeverity(severity: unknown): 'mild' | 'moderate' | 'significant' {\n if (severity === 'critical' || severity === 'significant') return 'significant';\n if (severity === 'mild') return 'mild';\n return 'moderate';\n}\n\nfunction buildAntiPatternsAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const antiPatterns = data?.verificationAntiPatterns;\n\n if (!Array.isArray(antiPatterns) || antiPatterns.length === 0) {\n return undefined;\n }\n\n const detected = antiPatterns\n .filter((ap): ap is Record => isRecord(ap))\n .map(ap => {\n const type = String(ap.type ?? 'unknown');\n return {\n antiPatternType: type,\n displayName: formatDisplayName(type),\n description: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Detected ${type.replace(/_/g, ' ')} pattern`,\n occurrences: typeof ap.frequency === 'number' ? ap.frequency : 1,\n severity: mapAntiPatternSeverity(ap.severity),\n evidence: Array.isArray(ap.examples)\n ? ap.examples\n .filter((e): e is Record => isRecord(e))\n .map(e => typeof e.quote === 'string' ? e.quote : '')\n .filter(Boolean)\n : [],\n growthOpportunity: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Consider addressing the ${type.replace(/_/g, ' ')} pattern`,\n actionableTip: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Try to be more mindful of ${type.replace(/_/g, ' ')} patterns`,\n };\n });\n\n return {\n detected,\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Some growth opportunities were identified. These are common learning patterns that every developer experiences.',\n overallHealthScore: tq?.overallScore ?? 80,\n };\n}\n\nfunction buildCriticalThinkingAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const moments = data?.criticalThinkingMoments;\n\n if (!Array.isArray(moments) || moments.length === 0) {\n return undefined;\n }\n\n const strengths = moments\n .filter((ct): ct is Record => isRecord(ct))\n .map(ct => ({\n indicatorType: typeof ct.type === 'string' ? ct.type : 'unknown',\n displayName: formatDisplayName(typeof ct.type === 'string' ? ct.type : 'unknown'),\n description: typeof ct.result === 'string'\n ? ct.result\n : `Demonstrated ${String(ct.type ?? 'critical thinking').replace(/_/g, ' ')}`,\n frequency: 1,\n quality: 'intermediate' as const,\n evidence: typeof ct.quote === 'string' ? [ct.quote] : [],\n }));\n\n const uniqueTypes = new Set(moments\n .filter((ct): ct is Record => isRecord(ct))\n .map(ct => ct.type));\n const overallScore = Math.min(100, 40 + uniqueTypes.size * 10 + moments.length * 5);\n\n return {\n strengths,\n opportunities: [],\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Shows signs of critical evaluation when working with AI-generated content.',\n overallScore,\n };\n}\n\nfunction buildPlanningAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const habits = data?.planningHabits;\n\n if (!Array.isArray(habits) || habits.length === 0) {\n return undefined;\n }\n\n const hasSlashPlan = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'uses_plan_command');\n const hasTodoWrite = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'todowrite_usage');\n const hasTaskDecomp = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'task_decomposition');\n\n const maturityLevel = hasSlashPlan && hasTaskDecomp ? 'expert'\n : hasSlashPlan ? 'structured'\n : (hasTodoWrite || hasTaskDecomp) ? 'emerging'\n : 'reactive';\n\n const strengths: Array> = [];\n const opportunities: Array> = [];\n\n for (const habit of habits) {\n if (!isRecord(habit)) continue;\n\n const type = typeof habit.type === 'string' ? habit.type : 'unknown';\n const frequency = typeof habit.frequency === 'string' ? habit.frequency : 'sometimes';\n const effectiveness = typeof habit.effectiveness === 'string' ? habit.effectiveness : 'medium';\n\n const insight = {\n behaviorType: type,\n displayName: formatDisplayName(type),\n description: `Planning habit \"${type.replace(/_/g, ' ')}\" observed with ${frequency} frequency`,\n frequency: frequency === 'always' || frequency === 'often' ? 3 : frequency === 'sometimes' ? 2 : 1,\n sophistication: effectiveness === 'high' ? 'advanced' : effectiveness === 'medium' ? 'intermediate' : 'basic',\n evidence: Array.isArray(habit.examples) ? habit.examples : [],\n };\n\n const isStrength = effectiveness === 'high' || frequency === 'always' || frequency === 'often';\n if (isStrength) {\n strengths.push(insight);\n } else {\n opportunities.push(insight);\n }\n }\n\n return {\n strengths,\n opportunities,\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Shows planning awareness in development workflow.',\n planningMaturityLevel: maturityLevel,\n };\n}\n\nfunction normalizeInefficiencyPattern(value: unknown): string {\n if (value === 'late_compact'\n || value === 'context_bloat'\n || value === 'redundant_info'\n || value === 'prompt_length_inflation'\n || value === 'no_session_separation'\n || value === 'verbose_error_pasting'\n || value === 'no_knowledge_persistence') {\n return value;\n }\n\n if (value === 'stale_context' || value === 'context_spillover') {\n return 'context_bloat';\n }\n\n return 'context_bloat';\n}\n\nfunction buildAgentOutputs(\n phase1Output: Phase1Output,\n domainResults: DomainResult[],\n): Record | undefined {\n const contextEfficiency = domainResults.find(result => result.domain === 'contextEfficiency');\n const patterns = contextEfficiency?.data && typeof contextEfficiency.data === 'object'\n ? (contextEfficiency.data as Record).inefficiencyPatterns\n : undefined;\n\n if (!contextEfficiency) {\n return undefined;\n }\n\n const mappedPatterns = Array.isArray(patterns)\n ? patterns\n .filter((pattern): pattern is Record => isRecord(pattern))\n .map(pattern => ({\n pattern: normalizeInefficiencyPattern(pattern.type ?? pattern.pattern),\n frequency: typeof pattern.frequency === 'number'\n ? Math.max(1, Math.round(pattern.frequency))\n : 1,\n impact: pattern.impact === 'high' || pattern.impact === 'low' ? pattern.impact : 'medium',\n description: typeof pattern.description === 'string'\n ? pattern.description\n : `Observed ${String(pattern.type ?? pattern.pattern ?? 'context issue')} behavior with ${String(pattern.impact ?? 'medium')} impact.`,\n }))\n : [];\n\n return {\n efficiency: {\n contextUsagePatterns: [],\n inefficiencyPatterns: mappedPatterns,\n promptLengthTrends: [],\n redundantInfo: [],\n topInsights: [],\n overallEfficiencyScore: contextEfficiency.overallScore,\n avgContextFillPercent: phase1Output.sessionMetrics.avgContextFillPercent ?? 0,\n confidenceScore: contextEfficiency.confidenceScore,\n strengths: contextEfficiency.strengths,\n growthAreas: contextEfficiency.growthAreas,\n },\n };\n}\n\nfunction mergePromptPatternTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!Array.isArray(translatedFields.promptPatterns) || !Array.isArray(evaluation.promptPatterns)) {\n return;\n }\n\n const translatedPatterns = translatedFields.promptPatterns as Array>;\n const englishPatterns = evaluation.promptPatterns as Array>;\n const minLength = Math.min(translatedPatterns.length, englishPatterns.length);\n\n for (let i = 0; i < minLength; i += 1) {\n const translated = translatedPatterns[i];\n const english = englishPatterns[i];\n\n if (typeof translated.patternName === 'string') english.patternName = translated.patternName;\n if (typeof translated.description === 'string') english.description = translated.description;\n if (typeof translated.tip === 'string') english.tip = translated.tip;\n\n if (!Array.isArray(translated.examples) || !Array.isArray(english.examples)) {\n continue;\n }\n\n const translatedExamples = translated.examples as Array>;\n const englishExamples = english.examples as Array>;\n const exampleCount = Math.min(translatedExamples.length, englishExamples.length);\n\n for (let j = 0; j < exampleCount; j += 1) {\n if (typeof translatedExamples[j]?.analysis === 'string') {\n englishExamples[j].analysis = translatedExamples[j].analysis;\n }\n }\n }\n}\n\nfunction mergeTopFocusAreaTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.topFocusAreas) || !isRecord(evaluation.topFocusAreas)) {\n return;\n }\n\n const translated = translatedFields.topFocusAreas;\n const english = evaluation.topFocusAreas;\n\n if (typeof translated.summary === 'string') {\n english.summary = translated.summary;\n }\n\n if (!Array.isArray(translated.areas) || !Array.isArray(english.areas)) {\n return;\n }\n\n const englishAreas = english.areas as Array>;\n\n for (const translatedArea of translated.areas as Array>) {\n const rank = typeof translatedArea.rank === 'number' ? translatedArea.rank : null;\n const englishArea = rank === null\n ? undefined\n : englishAreas.find(area => area.rank === rank);\n\n if (!englishArea) continue;\n\n if (typeof translatedArea.title === 'string') englishArea.title = translatedArea.title;\n if (typeof translatedArea.narrative === 'string') englishArea.narrative = translatedArea.narrative;\n if (typeof translatedArea.expectedImpact === 'string') {\n englishArea.expectedImpact = translatedArea.expectedImpact;\n }\n\n if (!isRecord(translatedArea.actions) || !isRecord(englishArea.actions)) {\n continue;\n }\n\n englishArea.actions = {\n start: typeof translatedArea.actions.start === 'string' ? translatedArea.actions.start : '',\n stop: typeof translatedArea.actions.stop === 'string' ? translatedArea.actions.stop : '',\n continue: typeof translatedArea.actions.continue === 'string' ? translatedArea.actions.continue : '',\n };\n }\n}\n\nfunction mergeProjectSummaryTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!Array.isArray(translatedFields.projectSummaries) || !Array.isArray(evaluation.projectSummaries)) {\n return;\n }\n\n const englishProjects = evaluation.projectSummaries as Array>;\n\n for (const translatedProject of translatedFields.projectSummaries as Array>) {\n const projectName = typeof translatedProject.projectName === 'string'\n ? translatedProject.projectName\n : null;\n const englishProject = projectName\n ? englishProjects.find(project => project.projectName === projectName)\n : undefined;\n\n if (!englishProject || !Array.isArray(translatedProject.summaryLines)) {\n continue;\n }\n\n englishProject.summaryLines = translatedProject.summaryLines;\n }\n}\n\nfunction mergeWeeklyInsightTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.weeklyInsights) || !isRecord(evaluation.weeklyInsights)) {\n return;\n }\n\n const translated = translatedFields.weeklyInsights;\n const english = evaluation.weeklyInsights;\n\n if (typeof translated.narrative === 'string') {\n english.narrative = translated.narrative;\n }\n\n if (Array.isArray(translated.highlights)) {\n english.highlights = translated.highlights;\n }\n\n if (!Array.isArray(translated.topSessionSummaries) || !Array.isArray(english.topProjectSessions)) {\n return;\n }\n\n const englishTopSessions = english.topProjectSessions as Array>;\n const sessionCount = Math.min(translated.topSessionSummaries.length, englishTopSessions.length);\n\n for (let i = 0; i < sessionCount; i += 1) {\n if (typeof translated.topSessionSummaries[i] === 'string') {\n englishTopSessions[i].summary = translated.topSessionSummaries[i];\n }\n }\n}\n\nfunction mergeTranslatedAgentInsights(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.translatedAgentInsights)) {\n return;\n }\n\n evaluation.translatedAgentInsights = translatedFields.translatedAgentInsights;\n}\n\nexport function mergeTranslatedEvaluationFields(\n evaluation: Record,\n translatedFields: TranslationFields,\n targetLanguage?: string,\n): void {\n const cjkLanguages = new Set(['ko', 'ja', 'zh']);\n const minLengthRatio = targetLanguage && cjkLanguages.has(targetLanguage) ? 0.45 : 0.65;\n\n if (typeof translatedFields.personalitySummary === 'string') {\n const englishSummary = typeof evaluation.personalitySummary === 'string'\n ? evaluation.personalitySummary\n : '';\n const translatedSummary = translatedFields.personalitySummary;\n const ratio = englishSummary.length > 0 ? translatedSummary.length / englishSummary.length : 1;\n\n if (englishSummary.length === 0 || ratio >= minLengthRatio) {\n evaluation.personalitySummary = translatedSummary;\n }\n }\n\n mergeTranslatedAgentInsights(evaluation, translatedFields);\n mergeProjectSummaryTranslations(evaluation, translatedFields);\n mergeWeeklyInsightTranslations(evaluation, translatedFields);\n mergePromptPatternTranslations(evaluation, translatedFields);\n mergeTopFocusAreaTranslations(evaluation, translatedFields);\n}\n\nfunction mergeTranslation(\n evaluation: EvaluationPayload,\n translator?: TranslatorOutput,\n): void {\n if (!translator?.translatedFields || typeof translator.translatedFields !== 'object') {\n return;\n }\n\n mergeTranslatedEvaluationFields(\n evaluation as Record,\n translator.translatedFields as TranslationFields,\n translator.targetLanguage,\n );\n}\n\nexport function buildCanonicalEvaluation(args: {\n analyzedAt: string;\n phase1Output: Phase1Output;\n activitySessions: ReportActivitySession[];\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n}): EvaluationPayload {\n const {\n analyzedAt,\n phase1Output,\n activitySessions,\n deterministicScores,\n typeResult,\n domainResults,\n stageOutputs,\n } = args;\n\n const filteredDomainResults = applyEvidenceVerification(\n domainResults,\n stageOutputs.evidenceVerification,\n );\n\n const confidenceScores = filteredDomainResults\n .map(result => result.confidenceScore)\n .filter((score): score is number => typeof score === 'number');\n const overallConfidence = confidenceScores.length > 0\n ? Math.round((confidenceScores.reduce((sum, score) => sum + score, 0) / confidenceScores.length) * 100) / 100\n : 0;\n const filteredEvidenceCount = stageOutputs.evidenceVerification?.domainStats\n ?.reduce((sum, stat) => sum + stat.filteredCount, 0) ?? 0;\n const dataQuality = phase1Output.sessionMetrics.totalSessions >= 10\n ? 'high'\n : phase1Output.sessionMetrics.totalSessions >= 5\n ? 'medium'\n : 'low';\n\n const agentOutputs = buildAgentOutputs(phase1Output, filteredDomainResults);\n\n // Build sub-analyses once (avoid double-calling non-trivial functions)\n const antiPatterns = buildAntiPatternsAnalysis(filteredDomainResults);\n const criticalThinking = buildCriticalThinkingAnalysis(filteredDomainResults);\n const planning = buildPlanningAnalysis(filteredDomainResults);\n\n const evaluation = assembleFinalEvaluationEnvelope({\n sessionId: activitySessions[0]?.sessionId\n ?? phase1Output.activitySessions?.[0]?.sessionId\n ?? 'plugin-local-analysis',\n analyzedAt,\n sessionsAnalyzed: phase1Output.sessionMetrics.totalSessions,\n avgPromptLength: Math.round(phase1Output.sessionMetrics.avgDeveloperMessageLength),\n avgTurnsPerSession: Math.round(phase1Output.sessionMetrics.avgMessagesPerSession * 10) / 10,\n activitySessions,\n sessionSummaries: stageOutputs.sessionSummaries?.summaries,\n projectSummaries: stageOutputs.projectSummaries?.projects as ProjectSummary[] | undefined,\n weeklyInsights: buildWeeklyInsights(stageOutputs.weeklyInsights, activitySessions, analyzedAt),\n assembledSections: {\n primaryType: typeResult?.primaryType ?? 'analyst',\n controlLevel: typeResult?.controlLevel ?? 'navigator',\n ...(typeof typeResult?.controlScore === 'number' ? { controlScore: typeResult.controlScore } : {}),\n distribution: typeResult?.distribution ?? {\n architect: 20,\n analyst: 20,\n conductor: 20,\n speedrunner: 20,\n trendsetter: 20,\n },\n personalitySummary: stageOutputs.typeClassification?.personalityNarrative?.join('\\n\\n')\n ?? stageOutputs.typeClassification?.reasoning?.join('\\n\\n')\n ?? '',\n promptPatterns: buildPromptPatterns(filteredDomainResults),\n topFocusAreas: buildTopFocusAreas(stageOutputs.contentWriter),\n workerInsights: buildWorkerInsights(filteredDomainResults),\n // Structured sub-analyses from thinkingQuality domain data (Fix 4)\n ...(antiPatterns ? { antiPatternsAnalysis: antiPatterns } : {}),\n ...(criticalThinking ? { criticalThinkingAnalysis: criticalThinking } : {}),\n ...(planning ? { planningAnalysis: planning } : {}),\n },\n agentOutputs,\n pipelineTokenUsage: {\n stages: [],\n totals: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },\n cost: { inputCost: 0, outputCost: 0, totalCost: 0 },\n model: 'plugin-local',\n modelName: 'plugin-local',\n },\n analysisMetadata: {\n overallConfidence,\n totalMessagesAnalyzed: phase1Output.sessionMetrics.totalMessages,\n dataQuality,\n analysisDateRange: phase1Output.sessionMetrics.dateRange,\n confidenceThreshold: stageOutputs.evidenceVerification ? 0.5 : undefined,\n insightsFiltered: filteredEvidenceCount,\n deterministicScores,\n evidenceVerification: stageOutputs.evidenceVerification\n ? {\n threshold: stageOutputs.evidenceVerification.threshold,\n domainStats: stageOutputs.evidenceVerification.domainStats,\n }\n : undefined,\n },\n }) as EvaluationPayload;\n\n mergeTranslation(evaluation, stageOutputs.translator);\n\n return evaluation;\n}\n\nexport function assembleCanonicalAnalysisRun(args: {\n runId: number;\n analyzedAt: string;\n phase1Output: Phase1Output;\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n}): CanonicalAnalysisRun {\n const activitySessions = buildReportActivitySessions(\n args.phase1Output,\n args.stageOutputs.sessionSummaries,\n );\n\n const evaluation = buildCanonicalEvaluation({\n analyzedAt: args.analyzedAt,\n phase1Output: args.phase1Output,\n activitySessions,\n deterministicScores: args.deterministicScores,\n typeResult: args.typeResult,\n domainResults: args.domainResults,\n stageOutputs: args.stageOutputs,\n });\n\n return {\n runId: args.runId,\n analyzedAt: args.analyzedAt,\n phase1Output: args.phase1Output,\n activitySessions,\n deterministicScores: args.deterministicScores,\n typeResult: args.typeResult,\n domainResults: applyEvidenceVerification(\n args.domainResults,\n args.stageOutputs.evidenceVerification,\n ),\n stageOutputs: args.stageOutputs,\n evaluation,\n ...(args.stageOutputs.translator ? { translation: args.stageOutputs.translator } : {}),\n };\n}\n","/**\n * Deterministic Scorer - Rubric-based scoring from Phase 1 metrics\n *\n * Pure function: Phase1Output -> DeterministicScores\n * Same input always produces same output. No LLM calls, no external state.\n *\n * @module @betterprompt/shared/scoring/deterministic-scorer\n */\n\nimport type { Phase1Output, Phase1SessionMetrics } from '../schemas/phase1-output.js';\nimport type { DeterministicScores } from '../schemas/deterministic-scores.js';\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nfunction clampScore(value: number, min = 0, max = 100): number {\n return Math.round(Math.max(min, Math.min(max, value)));\n}\n\nfunction invertedScale(value: number): number {\n return 100 - Math.max(0, Math.min(100, value));\n}\n\nfunction bellCurveScore(\n value: number,\n optimalLow: number,\n optimalHigh: number,\n falloffRate = 0.01,\n): number {\n if (value >= optimalLow && value <= optimalHigh) return 100;\n const distance = value < optimalLow ? optimalLow - value : value - optimalHigh;\n return 100 * Math.exp(-falloffRate * distance * distance);\n}\n\nfunction coefficientOfVariation(values: number[]): number {\n if (values.length === 0) return 0;\n const mean = values.reduce((sum, v) => sum + v, 0) / values.length;\n if (mean === 0) return 0;\n const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;\n return Math.sqrt(variance) / mean;\n}\n\n// ============================================================================\n// Domain Rubrics\n// ============================================================================\n\nfunction scoreContextEfficiency(metrics: Phase1SessionMetrics): number {\n const avgFill = metrics.avgContextFillPercent ?? 50;\n const totalSessions = Math.max(metrics.totalSessions, 1);\n\n const baseScore = invertedScale(avgFill);\n\n const overflowCount = metrics.contextFillExceeded90Count ?? 0;\n const overflowRatio = overflowCount / totalSessions;\n const overflowPenalty = overflowRatio * 30;\n\n const slashCmds = metrics.slashCommandCounts ?? {};\n const compactCount = (slashCmds['compact'] ?? 0) + (slashCmds['clear'] ?? 0);\n const compactionBonus = compactCount > 0 ? Math.min(compactCount * 3, 15) : 0;\n\n const longSessionRatio = (metrics.sessionHints?.longSessions ?? 0) / totalSessions;\n const longSessionPenalty = longSessionRatio * 10;\n\n return clampScore(baseScore - overflowPenalty + compactionBonus - longSessionPenalty);\n}\n\nfunction scoreSessionOutcome(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const friction = metrics.frictionSignals;\n\n const toolFailures = friction?.toolFailureCount ?? 0;\n const rejections = friction?.userRejectionSignals ?? 0;\n const excessiveIterations = friction?.excessiveIterationSessions ?? 0;\n const contextOverflows = friction?.contextOverflowSessions ?? 0;\n const frustrationExpressions = friction?.frustrationExpressionCount ?? 0;\n\n const totalFriction = toolFailures + rejections + excessiveIterations + contextOverflows + frustrationExpressions;\n const frictionDensity = totalFriction / totalSessions;\n\n const baseScore = 85 * Math.exp(-0.3 * frictionDensity);\n\n const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0;\n const mediumRatio = mediumSessions / totalSessions;\n const balanceBonus = mediumRatio * 15;\n\n const excessiveRatio = excessiveIterations / totalSessions;\n const excessivePenalty = excessiveRatio * 10;\n\n return clampScore(baseScore + balanceBonus - excessivePenalty);\n}\n\nfunction scoreThinkingQuality(metrics: Phase1SessionMetrics): number {\n const slashCmds = metrics.slashCommandCounts ?? {};\n\n // Planning (40% weight)\n const planCount = slashCmds['plan'] ?? 0;\n const reviewCount = slashCmds['review'] ?? 0;\n const planningActivityCount = planCount + reviewCount;\n const planningScore = planningActivityCount > 0\n ? 30 + 55 * (1 - Math.exp(-0.4 * planningActivityCount))\n : 30;\n\n // Critical thinking (30% weight)\n const questionRatio = metrics.questionRatio;\n const criticalThinkingFromQuestions = bellCurveScore(questionRatio * 100, 15, 40, 0.003);\n const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / Math.max(metrics.totalDeveloperUtterances, 1);\n const criticalThinkingFromRejections = bellCurveScore(rejectionRate * 100, 2, 10, 0.005);\n const criticalThinkingScore = criticalThinkingFromQuestions * 0.6 + criticalThinkingFromRejections * 0.4;\n\n // Error recovery (30% weight)\n const toolFailureRate = (metrics.frictionSignals?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1);\n let errorRecoveryScore = 80 * Math.exp(-8 * toolFailureRate) + 20;\n const errorChainMax = metrics.frictionSignals?.errorChainMaxLength ?? 0;\n if (errorChainMax >= 3) {\n const chainPenalty = Math.min((errorChainMax - 2) * 5, 30);\n errorRecoveryScore = Math.max(0, errorRecoveryScore - chainPenalty);\n }\n\n return clampScore(\n planningScore * 0.4 +\n criticalThinkingScore * 0.3 +\n errorRecoveryScore * 0.3,\n );\n}\n\nfunction scoreLearningBehavior(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n // Learning intent (50% weight)\n const questionScore = Math.min(metrics.questionRatio * 200, 100);\n const insightCount = metrics.aiInsightBlockCount ?? 0;\n const insightEngagement = insightCount > 0\n ? 40 + 50 * (1 - Math.exp(-0.1 * insightCount))\n : 40;\n const learningIntentScore = questionScore * 0.6 + insightEngagement * 0.4;\n\n // Mistake repetition (30% weight)\n const excessiveIterationRate = (metrics.frictionSignals?.excessiveIterationSessions ?? 0) / totalSessions;\n const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const combinedMistakeRate = excessiveIterationRate + bareRetryRate;\n const mistakeScore = invertedScale(combinedMistakeRate * 100) * 0.8 + 20;\n\n // Experimentation (20% weight)\n const codeExperimentation = Math.min(metrics.codeBlockRatio * 150, 100);\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const diversityBonus = Math.min(uniqueCommands * 8, 40);\n const experimentationScore = codeExperimentation * 0.6 + diversityBonus * 0.4 + 20;\n\n return clampScore(\n learningIntentScore * 0.5 +\n mistakeScore * 0.3 +\n experimentationScore * 0.2,\n );\n}\n\nfunction scoreCommunicationPatterns(\n metrics: Phase1SessionMetrics,\n phase1Output: Phase1Output,\n): number {\n // Prompt quality (40% weight)\n const avgLen = metrics.avgDeveloperMessageLength;\n const promptQualityScore = bellCurveScore(avgLen, 200, 500, 0.00003);\n\n // Structure (30% weight)\n const codeStructure = Math.min(metrics.codeBlockRatio * 200, 100);\n const questionStructure = Math.min(metrics.questionRatio * 250, 100);\n const structureScore = codeStructure * 0.5 + questionStructure * 0.5;\n\n // Consistency (30% weight)\n const wordCounts = phase1Output.developerUtterances.map(u => u.wordCount);\n const cv = coefficientOfVariation(wordCounts);\n const consistencyScore = 100 * Math.exp(-0.3 * cv);\n\n return clampScore(\n promptQualityScore * 0.4 +\n structureScore * 0.3 +\n consistencyScore * 0.3,\n );\n}\n\nfunction scoreControl(metrics: Phase1SessionMetrics): number {\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / totalUtterances;\n const rejectionSignal = Math.min(rejectionRate * 500, 100);\n\n const questionSignal = Math.min(metrics.questionRatio * 200, 100);\n\n const avgLen = metrics.avgDeveloperMessageLength;\n const lengthSignal = Math.min(avgLen / 5, 100);\n\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0);\n const commandSignal = Math.min((uniqueCommands * 10 + totalCommands * 2), 100);\n\n return clampScore(\n rejectionSignal * 0.25 +\n questionSignal * 0.25 +\n lengthSignal * 0.25 +\n commandSignal * 0.25,\n );\n}\n\n// ============================================================================\n// v2 Merged Domain Rubrics\n// ============================================================================\n\n/**\n * AI Partnership score: merges thinkingQuality + sessionOutcome + control signals.\n * Measures how effectively the developer partners with AI: planning, verification,\n * goal achievement, and appropriate control.\n */\nfunction scoreAiPartnership(metrics: Phase1SessionMetrics): number {\n const thinking = scoreThinkingQuality(metrics);\n const outcome = scoreSessionOutcome(metrics);\n const control = scoreControl(metrics);\n // Weighted: planning/thinking 40%, outcomes 35%, control 25%\n return clampScore(thinking * 0.4 + outcome * 0.35 + control * 0.25);\n}\n\n/**\n * Session Craft score: merges contextEfficiency + learningBehavior (burnout).\n * Measures session sustainability: efficient context usage, avoiding burnout\n * patterns, and learning from mistakes.\n */\nfunction scoreSessionCraft(metrics: Phase1SessionMetrics): number {\n const efficiency = scoreContextEfficiency(metrics);\n const learning = scoreLearningBehavior(metrics);\n // Weighted: context efficiency 55%, burnout/learning 45%\n return clampScore(efficiency * 0.55 + learning * 0.45);\n}\n\n/**\n * Skill Resilience score: based on cold-start capability, error recovery,\n * and maintaining quality across varied task types.\n */\nfunction scoreSkillResilience(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n // Cold start capability: short sessions with quick resolution\n const shortSessions = metrics.sessionHints?.shortSessions ?? 0;\n const shortRatio = shortSessions / totalSessions;\n const coldStartScore = bellCurveScore(shortRatio * 100, 20, 50, 0.003);\n\n // Error recovery: low bare-retry rate indicates resilient problem solving\n const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const recoveryScore = invertedScale(bareRetryRate * 200);\n\n // Task diversity: handling different types of work\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const diversityScore = Math.min(uniqueCommands * 12 + 20, 100);\n\n return clampScore(\n coldStartScore * 0.3 +\n recoveryScore * 0.4 +\n diversityScore * 0.3,\n );\n}\n\n/**\n * Session Mastery score: absence-of-anti-pattern scoring.\n * Higher scores indicate clean sessions free of common pitfalls.\n * Expert developers produce clean sessions with no retries, no context\n * overflows, and focused single-topic work.\n *\n * Key principle: absence of scaffolding tool usage when skill is internalized\n * scores neutral or positive, never negative.\n */\nfunction scoreSessionMastery(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n const friction = metrics.frictionSignals;\n\n // Anti-pattern: excessive iterations (sessions that spin without resolution)\n const excessiveIterationRate = (friction?.excessiveIterationSessions ?? 0) / totalSessions;\n const noExcessiveScore = invertedScale(excessiveIterationRate * 150);\n\n // Anti-pattern: context overflow (sessions that fill the context window)\n const overflowRate = (metrics.contextFillExceeded90Count ?? 0) / totalSessions;\n const noOverflowScore = invertedScale(overflowRate * 120);\n\n // Anti-pattern: bare retries after errors (copy-paste retry without thought)\n const bareRetryRate = (friction?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const noRetryScore = invertedScale(bareRetryRate * 300);\n\n // Anti-pattern: frustration expressions\n const frustrationRate = (friction?.frustrationExpressionCount ?? 0) / totalUtterances;\n const noFrustrationScore = invertedScale(frustrationRate * 400);\n\n // Anti-pattern: tool failures (indicates poor tool command construction)\n const toolFailureRate = (friction?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1);\n const noToolFailureScore = invertedScale(toolFailureRate * 200);\n\n // Session focus: medium-length sessions indicate controlled, focused work\n const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0;\n const focusBonus = (mediumSessions / totalSessions) * 15;\n\n return clampScore(\n noExcessiveScore * 0.25 +\n noOverflowScore * 0.2 +\n noRetryScore * 0.2 +\n noFrustrationScore * 0.15 +\n noToolFailureScore * 0.1 +\n focusBonus +\n 10, // baseline: everyone starts at 10\n );\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Compute deterministic scores from Phase 1 output.\n * Pure function: same Phase1Output always produces same DeterministicScores.\n *\n * v2: Returns 5-dimension scores + controlScore.\n */\nexport function computeDeterministicScores(phase1Output: Phase1Output): DeterministicScores {\n const metrics = phase1Output.sessionMetrics;\n\n return {\n aiPartnership: scoreAiPartnership(metrics),\n sessionCraft: scoreSessionCraft(metrics),\n toolMastery: scoreCommunicationPatterns(metrics, phase1Output),\n skillResilience: scoreSkillResilience(metrics),\n sessionMastery: scoreSessionMastery(metrics),\n controlScore: scoreControl(metrics),\n };\n}\n","/**\n * Shared Constants\n *\n * Matrix names, metadata, and other constants used across\n * the plugin and server.\n *\n * @module @betterprompt/shared/constants\n */\n\nimport type { CodingStyleType, AIControlLevel } from './schemas/deterministic-scores.js';\n\nexport const CONTEXT_WINDOW_SIZE = 200_000;\n\nexport const MATRIX_NAMES: Record> = {\n architect: {\n explorer: 'Visionary',\n navigator: 'Strategist',\n cartographer: 'Systems Architect',\n },\n analyst: {\n explorer: 'Questioner',\n navigator: 'Research Lead',\n cartographer: 'Quality Sentinel',\n },\n conductor: {\n explorer: 'Improviser',\n navigator: 'Arranger',\n cartographer: 'Maestro',\n },\n speedrunner: {\n explorer: 'Experimenter',\n navigator: 'Rapid Prototyper',\n cartographer: 'Velocity Expert',\n },\n trendsetter: {\n explorer: 'Early Adopter',\n navigator: 'Tech Radar',\n cartographer: 'Innovation Lead',\n },\n};\n\nexport const MATRIX_METADATA: Record<\n CodingStyleType,\n Record\n> = {\n architect: {\n explorer: { emoji: '💭' },\n navigator: { emoji: '📐' },\n cartographer: { emoji: '🏛️' },\n },\n analyst: {\n explorer: { emoji: '🔎' },\n navigator: { emoji: '🧪' },\n cartographer: { emoji: '🔬' },\n },\n conductor: {\n explorer: { emoji: '🎵' },\n navigator: { emoji: '🎼' },\n cartographer: { emoji: '🎹' },\n },\n speedrunner: {\n explorer: { emoji: '🎲' },\n navigator: { emoji: '🏃' },\n cartographer: { emoji: '⚡' },\n },\n trendsetter: {\n explorer: { emoji: '🌱' },\n navigator: { emoji: '📡' },\n cartographer: { emoji: '🚀' },\n },\n};\n","/**\n * Deterministic Type Mapper - Rule-based developer type classification\n *\n * Pure function: DeterministicScores + Phase1Output -> DeterministicTypeResult\n * Deterministic: same input always produces same classification.\n *\n * @module @betterprompt/shared/scoring/deterministic-type-mapper\n */\n\nimport type { Phase1Output, Phase1SessionMetrics } from '../schemas/phase1-output.js';\nimport type {\n DeterministicScores,\n DeterministicTypeResult,\n CodingStyleType,\n AIControlLevel,\n} from '../schemas/deterministic-scores.js';\nimport { MATRIX_NAMES, MATRIX_METADATA } from '../constants.js';\n\n// ============================================================================\n// Trend Keyword Detection\n// ============================================================================\n\nconst TREND_KEYWORDS_KO = ['최신', '트렌드', '유행', '새로운', '업데이트된', '요즘'];\nconst TREND_KEYWORDS_EN = ['latest', 'newest', 'trending', 'modern', 'up-to-date', 'best practice', 'current version', 'recently released'];\nconst ALL_TREND_KEYWORDS = [...TREND_KEYWORDS_KO, ...TREND_KEYWORDS_EN];\n\nfunction computeTrendDensity(phase1Output: Phase1Output): number {\n const utterances = phase1Output.developerUtterances;\n if (utterances.length === 0) return 0;\n\n let totalMatches = 0;\n for (const utterance of utterances) {\n const text = (utterance.displayText || utterance.text).toLowerCase();\n for (const keyword of ALL_TREND_KEYWORDS) {\n const regex = new RegExp(keyword.toLowerCase(), 'g');\n const matches = text.match(regex);\n if (matches) totalMatches += matches.length;\n }\n }\n\n return (totalMatches / utterances.length) * 100;\n}\n\n// ============================================================================\n// Type Affinity Calculation\n// ============================================================================\n\nconst STYLE_TYPES: CodingStyleType[] = ['architect', 'analyst', 'conductor', 'speedrunner', 'trendsetter'];\n\nfunction computeAffinities(\n scores: DeterministicScores,\n metrics: Phase1SessionMetrics,\n trendDensity: number,\n): Record {\n const slashCmds = metrics.slashCommandCounts ?? {};\n\n // Architect: planning-heavy + structured + controlling\n // Uses aiPartnership (merged thinking + control) as primary signal\n const planCount = (slashCmds['plan'] ?? 0) + (slashCmds['review'] ?? 0);\n const planBonus = planCount > 0 ? Math.min(planCount * 8, 30) : 0;\n const architectAffinity = scores.aiPartnership * 0.5 + scores.controlScore * 0.3 + planBonus;\n\n // Analyst: thorough investigation + learning + clean sessions\n // Uses aiPartnership + sessionCraft as signals\n const analystAffinity =\n scores.aiPartnership * 0.3 +\n scores.sessionCraft * 0.4 +\n scores.sessionMastery * 0.2 +\n (metrics.questionRatio > 0.2 ? 10 : 0);\n\n // Conductor: slash command mastery\n const uniqueCommands = Object.keys(slashCmds).length;\n const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0);\n const orchestrationCmds = (slashCmds['sisyphus'] ?? 0) + (slashCmds['orchestrator'] ?? 0) +\n (slashCmds['ultrawork'] ?? 0) + (slashCmds['ralph-loop'] ?? 0);\n const commandDiversityScore = Math.min(uniqueCommands * 12, 60);\n const commandVolumeScore = Math.min(totalCommands * 2, 30);\n const orchestrationBonus = orchestrationCmds > 0 ? Math.min(orchestrationCmds * 10, 30) : 0;\n const conductorAffinity = commandDiversityScore + commandVolumeScore + orchestrationBonus;\n\n // Speedrunner: efficiency + conciseness\n // Uses sessionCraft (context efficiency component) as primary signal\n const avgLen = metrics.avgDeveloperMessageLength;\n const concisenessScore = avgLen < 200 ? 40 : avgLen < 400 ? 25 : 10;\n const speedrunnerAffinity =\n scores.sessionCraft * 0.5 +\n concisenessScore +\n (scores.sessionMastery > 70 ? 15 : 0);\n\n // Trendsetter: trend keywords + learning curiosity\n const trendKeywordScore = trendDensity > 3 ? Math.min(trendDensity * 15, 60) : trendDensity * 5;\n const learningCuriosityBonus = scores.sessionCraft > 70 ? 15 : 0;\n const trendsetterAffinity = trendKeywordScore + learningCuriosityBonus;\n\n return {\n architect: architectAffinity,\n analyst: analystAffinity,\n conductor: conductorAffinity,\n speedrunner: speedrunnerAffinity,\n trendsetter: trendsetterAffinity,\n };\n}\n\nfunction normalizeToDistribution(affinities: Record): Record {\n const MIN_PERCENT = 5;\n const totalAffinity = STYLE_TYPES.reduce((sum, t) => sum + Math.max(affinities[t], 0), 0);\n\n if (totalAffinity === 0) {\n return { architect: 20, analyst: 20, conductor: 20, speedrunner: 20, trendsetter: 20 };\n }\n\n const raw: Record = {};\n for (const type of STYLE_TYPES) {\n raw[type] = Math.max((affinities[type] / totalAffinity) * 100, 0);\n }\n\n let totalBelow = 0;\n let totalAbove = 0;\n const aboveTypes: CodingStyleType[] = [];\n\n for (const type of STYLE_TYPES) {\n if (raw[type] < MIN_PERCENT) {\n totalBelow += MIN_PERCENT - raw[type];\n raw[type] = MIN_PERCENT;\n } else {\n totalAbove += raw[type];\n aboveTypes.push(type);\n }\n }\n\n if (totalBelow > 0 && totalAbove > 0) {\n for (const type of aboveTypes) {\n raw[type] -= totalBelow * (raw[type] / totalAbove);\n }\n }\n\n const result: Record = {};\n let sum = 0;\n for (const type of STYLE_TYPES) {\n result[type] = Math.round(raw[type]);\n sum += result[type];\n }\n\n if (sum !== 100) {\n const maxType = STYLE_TYPES.reduce((a, b) => result[a] >= result[b] ? a : b);\n result[maxType] += 100 - sum;\n }\n\n return result as Record;\n}\n\nfunction controlLevelFromScore(score: number): AIControlLevel {\n if (score <= 34) return 'explorer';\n if (score <= 64) return 'navigator';\n return 'cartographer';\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Compute deterministic type classification from scores and Phase 1 output.\n * Pure function: same inputs always produce same classification.\n */\nexport function computeDeterministicType(\n scores: DeterministicScores,\n phase1Output: Phase1Output,\n): DeterministicTypeResult {\n const metrics = phase1Output.sessionMetrics;\n const trendDensity = computeTrendDensity(phase1Output);\n\n const affinities = computeAffinities(scores, metrics, trendDensity);\n const distribution = normalizeToDistribution(affinities);\n\n const primaryType = STYLE_TYPES.reduce((a, b) =>\n affinities[a] >= affinities[b] ? a : b,\n );\n\n const controlLevel = controlLevelFromScore(scores.controlScore);\n const matrixName = MATRIX_NAMES[primaryType][controlLevel];\n const matrixEmoji = MATRIX_METADATA[primaryType][controlLevel].emoji;\n\n return {\n primaryType,\n distribution: distribution as DeterministicTypeResult['distribution'],\n controlLevel,\n controlScore: scores.controlScore,\n matrixName,\n matrixEmoji,\n };\n}\n","/**\n * Core Types for Plugin-First Architecture\n *\n * Re-exports canonical types from @betterprompt/shared for Phase 1,\n * deterministic scoring, domain results, and constants.\n *\n * Plugin-specific types (JSONL parsing, session metadata) remain here.\n *\n * @module plugin/lib/core/types\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Re-exports from @betterprompt/shared (canonical source of truth)\n// ============================================================================\n\nexport type {\n UserUtterance,\n AIInsightBlock,\n FrictionSignals,\n SessionHints,\n Phase1SessionMetrics,\n Phase1Output,\n ReportActivitySession,\n DeterministicScores,\n CodingStyleType,\n AIControlLevel,\n DeterministicTypeResult,\n DomainStrength,\n DomainGrowthArea,\n DomainResult,\n AnalysisReport,\n CanonicalStageOutputs,\n CanonicalEvaluationPayload,\n CanonicalAnalysisRun,\n CanonicalAnalysisRunParts,\n} from '@betterprompt/shared/schemas';\n\nexport {\n CONTEXT_WINDOW_SIZE,\n MATRIX_NAMES,\n MATRIX_METADATA,\n} from '@betterprompt/shared';\n\n// ============================================================================\n// Session Types (plugin-specific JSONL parsing)\n// ============================================================================\n\nexport const TextBlockSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n});\n\nexport const ToolUseBlockSchema = z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()),\n});\n\nexport const ToolResultBlockSchema = z.object({\n type: z.literal('tool_result'),\n tool_use_id: z.string(),\n content: z.union([z.string(), z.array(z.unknown())]),\n is_error: z.boolean().optional(),\n});\n\nexport const ContentBlockSchema = z.union([\n TextBlockSchema,\n ToolUseBlockSchema,\n ToolResultBlockSchema,\n]);\n\nexport const TokenUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().optional(),\n cache_read_input_tokens: z.number().optional(),\n cache_creation: z\n .object({\n ephemeral_5m_input_tokens: z.number(),\n ephemeral_1h_input_tokens: z.number(),\n })\n .optional(),\n service_tier: z.string().optional(),\n});\n\nexport type SessionSourceType = 'claude-code' | 'cursor' | 'cursor-composer';\n\nexport interface ToolCall {\n id: string;\n name: string;\n input: Record;\n result?: string;\n isError?: boolean;\n}\n\nexport interface ParsedMessage {\n uuid: string;\n role: 'user' | 'assistant';\n timestamp: string;\n content: string;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n toolCalls?: ToolCall[];\n tokenUsage?: {\n input: number;\n output: number;\n };\n}\n\nexport interface SessionStats {\n userMessageCount: number;\n assistantMessageCount: number;\n toolCallCount: number;\n uniqueToolsUsed: string[];\n totalInputTokens: number;\n totalOutputTokens: number;\n}\n\nexport interface ParsedSession {\n sessionId: string;\n projectPath: string;\n projectName?: string;\n startTime: string;\n endTime: string;\n durationSeconds: number;\n claudeCodeVersion: string;\n messages: ParsedMessage[];\n stats: SessionStats;\n source?: SessionSourceType;\n}\n\nexport const UserMessageSchema = z.object({\n type: z.literal('user'),\n sessionId: z.string(),\n timestamp: z.string(),\n uuid: z.string(),\n parentUuid: z.string().nullable(),\n cwd: z.string().optional(),\n version: z.string().optional(),\n gitBranch: z.string().optional(),\n userType: z.string().optional(),\n isSidechain: z.boolean().optional(),\n message: z.object({\n role: z.literal('user'),\n content: z.union([z.string(), z.array(ContentBlockSchema)]),\n }),\n});\n\nexport const AssistantMessageSchema = z.object({\n type: z.literal('assistant'),\n sessionId: z.string(),\n timestamp: z.string(),\n uuid: z.string(),\n parentUuid: z.string().nullable(),\n isSidechain: z.boolean().optional(),\n message: z.object({\n id: z.string().optional(),\n role: z.literal('assistant'),\n content: z.array(ContentBlockSchema),\n model: z.string().optional(),\n stop_reason: z.string().optional(),\n usage: TokenUsageSchema.optional(),\n }),\n});\n\n/** Supported JSONL line types */\nexport const JSONLLineSchema = z.discriminatedUnion('type', [\n UserMessageSchema,\n AssistantMessageSchema,\n // Queue operations and file history are parsed but not analyzed\n z.object({ type: z.literal('queue-operation'), timestamp: z.string() }).passthrough(),\n z.object({ type: z.literal('file-history-snapshot'), timestamp: z.string() }).passthrough(),\n]);\nexport type JSONLLine = z.infer;\n\n// ============================================================================\n// Session Metadata (plugin-specific)\n// ============================================================================\n\nexport interface SessionMetadata {\n sessionId: string;\n projectPath: string;\n projectName: string;\n timestamp: Date;\n messageCount: number;\n durationSeconds: number;\n filePath: string;\n avgContextUtilization?: number;\n maxContextUtilization?: number;\n}\n","/**\n * Debounce Logic\n *\n * Determines whether an auto-analysis should be triggered based on:\n * 1. Cooldown: ≥4 hours since last analysis\n * 2. Threshold: ≥N new sessions since last analysis (configurable)\n * 3. Duration: Just-ended session was ≥3 minutes\n * 4. Guard: No analysis already in progress\n *\n * State tracked in ~/.betterprompt/plugin-state.json\n */\n\nimport { readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport { getConfig, getStateFilePath } from './config.js';\nimport { debug } from './logger.js';\n\nconst COOLDOWN_MS = 4 * 60 * 60 * 1000; // 4 hours\nconst MIN_SESSION_DURATION_MS = 3 * 60 * 1000; // 3 minutes\nconst MAX_RUNNING_STATE_AGE_MS = 30 * 60 * 1000; // 30 minutes\nconst RUNNING_ANALYSIS_RESUME_GRACE_MS = 45 * 1000; // 45 seconds\n\nexport type AnalysisLifecycleState =\n | 'idle'\n | 'pending'\n | 'running'\n | 'complete'\n | 'failed';\n\nexport interface PluginState {\n lastAnalysisTimestamp: string | null;\n lastAnalysisSessionCount: number;\n analysisState: AnalysisLifecycleState;\n analysisInProgress: boolean;\n /** Set by post-session hook; cleared when next Claude Code session runs analysis */\n analysisPending: boolean;\n /** ISO timestamp when analysis was queued */\n pendingSince: string | null;\n lastError: string | null;\n stateUpdatedAt: string | null;\n}\n\nconst DEFAULT_STATE: PluginState = {\n lastAnalysisTimestamp: null,\n lastAnalysisSessionCount: 0,\n analysisState: 'idle',\n analysisInProgress: false,\n analysisPending: false,\n pendingSince: null,\n lastError: null,\n stateUpdatedAt: null,\n};\n\nfunction normalizeState(state: PluginState): PluginState {\n let analysisState = state.analysisState;\n\n if (!analysisState) {\n if (state.analysisInProgress) analysisState = 'running';\n else if (state.analysisPending) analysisState = 'pending';\n else analysisState = 'idle';\n }\n\n return {\n ...state,\n analysisState,\n analysisInProgress: analysisState === 'running',\n analysisPending: analysisState === 'pending',\n };\n}\n\nexport function readState(): PluginState {\n try {\n const raw = readFileSync(getStateFilePath(), 'utf-8');\n return normalizeState({ ...DEFAULT_STATE, ...JSON.parse(raw) } as PluginState);\n } catch {\n return { ...DEFAULT_STATE };\n }\n}\n\nexport function writeState(state: PluginState): void {\n const filePath = getStateFilePath();\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(\n filePath,\n JSON.stringify(\n normalizeState({\n ...state,\n stateUpdatedAt: new Date().toISOString(),\n }),\n null,\n 2,\n ),\n );\n}\n\nfunction getStateUpdatedAtMs(state: PluginState): number {\n return state.stateUpdatedAt ? new Date(state.stateUpdatedAt).getTime() : Number.NaN;\n}\n\n/**\n * Count Claude Code session JSONL files across all projects.\n */\nfunction countClaudeSessions(): number {\n const projectsDir = join(homedir(), '.claude', 'projects');\n\n try {\n const projects = readdirSync(projectsDir);\n return projects.reduce((count, project) => {\n try {\n const files = readdirSync(join(projectsDir, project));\n return count + files.filter(f => f.endsWith('.jsonl')).length;\n } catch {\n return count;\n }\n }, 0);\n } catch {\n return 0;\n }\n}\n\nexport interface DebounceResult {\n shouldAnalyze: boolean;\n reason: string;\n}\n\nexport function getAnalysisLifecycleState(): AnalysisLifecycleState {\n return readState().analysisState;\n}\n\nexport function recoverStaleAnalysisState(options?: {\n force?: boolean;\n reason?: string;\n}): PluginState {\n const state = readState();\n\n if (state.analysisState !== 'running') {\n return state;\n }\n\n const updatedAt = getStateUpdatedAtMs(state);\n const isStale = options?.force\n || Number.isNaN(updatedAt)\n || (Date.now() - updatedAt) > MAX_RUNNING_STATE_AGE_MS;\n\n if (!isStale) {\n return state;\n }\n\n debug('debounce', 'recovering stale running state', { reason: options?.reason ?? 'stale' });\n const recoveredState: PluginState = {\n ...state,\n analysisState: 'failed',\n pendingSince: null,\n lastError: options?.reason ?? state.lastError ?? 'Recovered stale running analysis state.',\n };\n\n writeState(recoveredState);\n return normalizeState(recoveredState);\n}\n\n/**\n * Evaluate all debounce rules.\n *\n * @param sessionDurationMs - Duration of the just-ended session in milliseconds.\n * Pass 0 if unknown (e.g. manual trigger).\n */\nexport function shouldTriggerAnalysis(sessionDurationMs: number): DebounceResult {\n const state = recoverStaleAnalysisState();\n const config = getConfig();\n\n // Rule 4: Guard — no analysis already in progress\n if (state.analysisInProgress) {\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason: 'Analysis already in progress' });\n return { shouldAnalyze: false, reason: 'Analysis already in progress' };\n }\n\n // Rule 3: Duration — session must be ≥3 minutes\n if (sessionDurationMs > 0 && sessionDurationMs < MIN_SESSION_DURATION_MS) {\n const reason = `Session too short (${Math.round(sessionDurationMs / 1000)}s < 3min)`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n\n // Rule 1: Cooldown — ≥4 hours since last analysis\n if (state.lastAnalysisTimestamp) {\n const elapsed = Date.now() - new Date(state.lastAnalysisTimestamp).getTime();\n if (elapsed < COOLDOWN_MS) {\n const remainingMin = Math.round((COOLDOWN_MS - elapsed) / 60_000);\n const reason = `Cooldown active (${remainingMin}min remaining)`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n }\n\n // Rule 2: Threshold — ≥N new sessions since last analysis\n const currentCount = countClaudeSessions();\n const newSessions = currentCount - state.lastAnalysisSessionCount;\n if (newSessions < config.analyzeThreshold) {\n const reason = `Not enough new sessions (${newSessions}/${config.analyzeThreshold})`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n\n const result: DebounceResult = {\n shouldAnalyze: true,\n reason: `${newSessions} new sessions, cooldown passed`,\n };\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: result.shouldAnalyze, reason: result.reason });\n return result;\n}\n\n/**\n * Mark analysis as in-progress. Called when the queued local analysis starts.\n */\nexport function markAnalysisStarted(): void {\n debug('debounce', 'state transition: -> running');\n const state = readState();\n writeState({\n ...state,\n analysisState: 'running',\n pendingSince: null,\n lastError: null,\n });\n}\n\n/**\n * Refresh the running-analysis heartbeat so startup recovery can distinguish\n * between a genuinely interrupted run and an in-flight tool/skill handoff.\n */\nexport function touchAnalysisHeartbeat(): void {\n const state = readState();\n if (state.analysisState !== 'running') {\n return;\n }\n\n writeState(state);\n}\n\n/**\n * Mark analysis as complete. Called after the local pipeline finishes successfully.\n */\nexport function markAnalysisComplete(sessionCount?: number): void {\n debug('debounce', 'state transition: -> complete');\n writeState({\n ...DEFAULT_STATE,\n lastAnalysisTimestamp: new Date().toISOString(),\n lastAnalysisSessionCount: sessionCount ?? countClaudeSessions(),\n analysisState: 'complete',\n });\n}\n\n/**\n * Clear the in-progress flag. Called on failure or crash recovery.\n */\nexport function markAnalysisFailed(error?: unknown): void {\n const errorMsg = error instanceof Error ? error.message : (error ? String(error) : null);\n debug('debounce', 'state transition: -> failed', { error: errorMsg ?? undefined });\n const state = readState();\n writeState({\n ...state,\n analysisState: 'failed',\n pendingSince: null,\n lastError: errorMsg,\n });\n}\n\n/**\n * Mark analysis as pending for next Claude Code session.\n * Called by the post-session hook instead of spawning a background process.\n */\nexport function markAnalysisPending(): void {\n debug('debounce', 'state transition: -> pending');\n const state = readState();\n writeState({\n ...state,\n analysisState: 'pending',\n pendingSince: new Date().toISOString(),\n lastError: null,\n });\n}\n\n/**\n * Check if there is a pending analysis queued by a previous session's hook.\n */\nexport function isAnalysisPending(): boolean {\n const state = readState();\n return state.analysisState === 'pending';\n}\n\n/**\n * Clear the pending flag. Called when the pending analysis starts or is dismissed.\n */\nexport function clearAnalysisPending(): void {\n const state = readState();\n if (state.analysisState !== 'pending') {\n return;\n }\n writeState({\n ...state,\n analysisState: 'idle',\n pendingSince: null,\n });\n}\n\nexport function shouldResumeRunningAnalysis(now: number = Date.now()): boolean {\n const state = readState();\n if (state.analysisState !== 'running') {\n return false;\n }\n\n const updatedAt = getStateUpdatedAtMs(state);\n return Number.isNaN(updatedAt) || (now - updatedAt) > RUNNING_ANALYSIS_RESUME_GRACE_MS;\n}\n"],"mappings":"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","names":["_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","core_exports","cuid","cuid2","date","decode","decodeAsync","describe","e164","email","emoji","encode","encodeAsync","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","parse","parseAsync","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","string","ulid","_undefined","uuid","_void","xid","core_exports","_emoji","_null","_undefined","process","initializer","_a","array","set","object","Class","_a","config","base64","base64url","hex","error","issue","_a","version","time","_a","inst","result","_a","checks","checkResult","canary","result","_","url","base64","r","isObject","allowsEval","results","map","left","right","keyResult","valueResult","output","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","number","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","meta","Class","_emoji","_undefined","_null","Class","issue","codec","process","_a","meta","id","schema","json","file","process","registry","ctx","process","schemas_exports","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","cuid","cuid2","date","describe","e164","email","emoji","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","string","ulid","_undefined","uuid","_void","xid","checks_exports","date","datetime","duration","time","datetime","date","time","duration","initializer","issue","issues","parse","parseAsync","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","def","meta","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","check","_default","_catch","json","_emoji","datetime","date","time","duration","string","email","guid","uuid","emoji","nanoid","cuid","cuid2","ulid","xid","ksuid","ipv4","mac","ipv6","cidrv4","cidrv6","base64","base64url","e164","hostname","hex","number","boolean","bigint","_undefined","json","_null","json","_void","json","date","_enum","json","issue","output","nullish","_default","_catch","json","json","describe","meta","string","number","boolean","_null","map","ZodFirstPartyTypeKind","schemas_exports","checks_exports","zodSchema","objectSchema","version","bigint","boolean","date","number","string","string","number","boolean","bigint","date","join","external_exports","$brand","$input","$output","NEVER","TimePrecision","ZodAny","ZodArray","ZodBase64","ZodBase64URL","ZodBigInt","ZodBigIntFormat","ZodBoolean","ZodCIDRv4","ZodCIDRv6","ZodCUID","ZodCUID2","ZodCatch","ZodCodec","ZodCustom","ZodCustomStringFormat","ZodDate","ZodDefault","ZodDiscriminatedUnion","ZodE164","ZodEmail","ZodEmoji","ZodEnum","ZodError","ZodExactOptional","ZodFile","ZodFirstPartyTypeKind","ZodFunction","ZodGUID","ZodIPv4","ZodIPv6","ZodISODate","ZodISODateTime","ZodISODuration","ZodISOTime","ZodIntersection","ZodIssueCode","ZodJWT","ZodKSUID","ZodLazy","ZodLiteral","ZodMAC","ZodMap","ZodNaN","ZodNanoID","ZodNever","ZodNonOptional","ZodNull","ZodNullable","ZodNumber","ZodNumberFormat","ZodObject","ZodOptional","ZodPipe","ZodPrefault","ZodPromise","ZodReadonly","ZodRealError","ZodRecord","ZodSet","ZodString","ZodStringFormat","ZodSuccess","ZodSymbol","ZodTemplateLiteral","ZodTransform","ZodTuple","ZodType","ZodULID","ZodURL","ZodUUID","ZodUndefined","ZodUnion","ZodUnknown","ZodVoid","ZodXID","ZodXor","_ZodString","_default","_function","any","array","base64","base64url","bigint","boolean","_catch","check","cidrv4","cidrv6","clone","codec","coerce_exports","config","core_exports","cuid","cuid2","custom","date","decode","decodeAsync","describe","discriminatedUnion","e164","email","emoji","encode","encodeAsync","_endsWith","_enum","exactOptional","file","flattenError","float32","float64","formatError","fromJSONSchema","getErrorMap","globalRegistry","_gt","_gte","guid","hash","hex","hostname","httpUrl","_includes","_instanceof","int","int32","int64","intersection","ipv4","ipv6","iso_exports","json","jwt","keyof","ksuid","lazy","_length","literal","locales_exports","looseObject","looseRecord","_lowercase","_lt","_lte","mac","map","_maxLength","_maxSize","meta","_mime","_minLength","_minSize","_multipleOf","nan","nanoid","nativeEnum","_negative","never","_nonnegative","nonoptional","_nonpositive","_normalize","_null","nullable","nullish","number","object","optional","_overwrite","parse","parseAsync","partialRecord","pipe","_positive","prefault","preprocess","prettifyError","promise","_property","readonly","record","refine","_regex","regexes_exports","registry","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","set","setErrorMap","_size","_slugify","_startsWith","strictObject","string","stringFormat","stringbool","success","superRefine","symbol","templateLiteral","toJSONSchema","_toLowerCase","_toUpperCase","transform","treeifyError","_trim","tuple","uint32","uint64","ulid","_undefined","union","unknown","_uppercase","url","util_exports","uuid","uuidv4","uuidv6","uuidv7","_void","xid","xor","core_exports","$ZodAny","$ZodArray","$ZodAsyncError","$ZodBase64","$ZodBase64URL","$ZodBigInt","$ZodBigIntFormat","$ZodBoolean","$ZodCIDRv4","$ZodCIDRv6","$ZodCUID","$ZodCUID2","$ZodCatch","$ZodCheck","$ZodCheckBigIntFormat","$ZodCheckEndsWith","$ZodCheckGreaterThan","$ZodCheckIncludes","$ZodCheckLengthEquals","$ZodCheckLessThan","$ZodCheckLowerCase","$ZodCheckMaxLength","$ZodCheckMaxSize","$ZodCheckMimeType","$ZodCheckMinLength","$ZodCheckMinSize","$ZodCheckMultipleOf","$ZodCheckNumberFormat","$ZodCheckOverwrite","$ZodCheckProperty","$ZodCheckRegex","$ZodCheckSizeEquals","$ZodCheckStartsWith","$ZodCheckStringFormat","$ZodCheckUpperCase","$ZodCodec","$ZodCustom","$ZodCustomStringFormat","$ZodDate","$ZodDefault","$ZodDiscriminatedUnion","$ZodE164","$ZodEmail","$ZodEmoji","$ZodEncodeError","$ZodEnum","$ZodError","$ZodExactOptional","$ZodFile","$ZodFunction","$ZodGUID","$ZodIPv4","$ZodIPv6","$ZodISODate","$ZodISODateTime","$ZodISODuration","$ZodISOTime","$ZodIntersection","$ZodJWT","$ZodKSUID","$ZodLazy","$ZodLiteral","$ZodMAC","$ZodMap","$ZodNaN","$ZodNanoID","$ZodNever","$ZodNonOptional","$ZodNull","$ZodNullable","$ZodNumber","$ZodNumberFormat","$ZodObject","$ZodObjectJIT","$ZodOptional","$ZodPipe","$ZodPrefault","$ZodPromise","$ZodReadonly","$ZodRealError","$ZodRecord","$ZodRegistry","$ZodSet","$ZodString","$ZodStringFormat","$ZodSuccess","$ZodSymbol","$ZodTemplateLiteral","$ZodTransform","$ZodTuple","$ZodType","$ZodULID","$ZodURL","$ZodUUID","$ZodUndefined","$ZodUnion","$ZodUnknown","$ZodVoid","$ZodXID","$ZodXor","$brand","$constructor","$input","$output","Doc","json_schema_exports","JSONSchemaGenerator","NEVER","TimePrecision","_any","_array","_base64","_base64url","_bigint","_boolean","_catch","_check","_cidrv4","_cidrv6","_coercedBigint","_coercedBoolean","_coercedDate","_coercedNumber","_coercedString","_cuid","_cuid2","_custom","_date","_decode","_decodeAsync","_default","_discriminatedUnion","_e164","_email","_emoji","_encode","_encodeAsync","_endsWith","_enum","_file","_float32","_float64","_gt","_gte","_guid","_includes","_int","_int32","_int64","_intersection","_ipv4","_ipv6","_isoDate","_isoDateTime","_isoDuration","_isoTime","_jwt","_ksuid","_lazy","_length","_literal","_lowercase","_lt","_lte","_mac","_map","_maxLength","_maxSize","_mime","_minLength","_minSize","_multipleOf","_nan","_nanoid","_nativeEnum","_negative","_never","_nonnegative","_nonoptional","_nonpositive","_normalize","_null","_nullable","_number","_optional","_overwrite","_parse","_parseAsync","_pipe","_positive","_promise","_property","_readonly","_record","_refine","_regex","_safeDecode","_safeDecodeAsync","_safeEncode","_safeEncodeAsync","_safeParse","_safeParseAsync","_set","_size","_slugify","_startsWith","_string","_stringFormat","_stringbool","_success","_superRefine","_symbol","_templateLiteral","_toLowerCase","_toUpperCase","_transform","_trim","_tuple","_uint32","_uint64","_ulid","_undefined","_union","_unknown","_uppercase","_url","_uuid","_uuidv4","_uuidv6","_uuidv7","_void","_xid","_xor","clone","config","createStandardJSONSchemaMethod","createToJSONSchemaMethod","decode","decodeAsync","describe","encode","encodeAsync","extractDefs","finalize","flattenError","formatError","globalConfig","globalRegistry","initializeContext","isValidBase64","isValidBase64URL","isValidJWT","locales_exports","meta","parse","parseAsync","prettifyError","process","regexes_exports","registry","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","toDotPath","toJSONSchema","treeifyError","util_exports","version","NEVER","$constructor","initializer","_a","$brand","$ZodAsyncError","$ZodEncodeError","globalConfig","config","util_exports","BIGINT_FORMAT_RANGES","Class","NUMBER_FORMAT_RANGES","aborted","allowsEval","assert","assertEqual","assertIs","assertNever","assertNotEqual","assignProp","base64ToUint8Array","base64urlToUint8Array","cached","captureStackTrace","cleanEnum","cleanRegex","clone","cloneDef","createTransparentProxy","defineLazy","esc","escapeRegex","extend","finalizeIssue","floatSafeRemainder","getElementAtPath","getEnumValues","getLengthableOrigin","getParsedType","getSizableOrigin","hexToUint8Array","isObject","isPlainObject","issue","joinValues","jsonStringifyReplacer","merge","mergeDefs","normalizeParams","nullish","numKeys","objectClone","omit","optionalKeys","parsedType","partial","pick","prefixIssues","primitiveTypes","promiseAllObject","propertyKeyTypes","randomString","required","safeExtend","shallowClone","slugify","stringifyPrimitive","uint8ArrayToBase64","uint8ArrayToBase64url","uint8ArrayToHex","unwrapMessage","array","set","EVALUATING","object","_a","config","base64","base64url","hex","initializer","jsonStringifyReplacer","$ZodError","$constructor","$ZodRealError","flattenError","error","issue","formatError","treeifyError","_a","toDotPath","prettifyError","_parse","$ZodAsyncError","finalizeIssue","config","captureStackTrace","parse","$ZodRealError","_parseAsync","parseAsync","_safeParse","$ZodError","safeParse","_safeParseAsync","safeParseAsync","_encode","encode","_decode","decode","_encodeAsync","encodeAsync","_decodeAsync","decodeAsync","_safeEncode","safeEncode","_safeDecode","safeDecode","_safeEncodeAsync","safeEncodeAsync","_safeDecodeAsync","safeDecodeAsync","regexes_exports","base64","base64url","bigint","boolean","browserEmail","cidrv4","cidrv6","cuid","cuid2","date","datetime","domain","duration","e164","email","emoji","extendedDuration","guid","hex","hostname","html5Email","idnEmail","integer","ipv4","ipv6","ksuid","lowercase","mac","md5_base64","md5_base64url","md5_hex","nanoid","_null","number","rfc5322Email","sha1_base64","sha1_base64url","sha1_hex","sha256_base64","sha256_base64url","sha256_hex","sha384_base64","sha384_base64url","sha384_hex","sha512_base64","sha512_base64url","sha512_hex","string","time","ulid","_undefined","unicodeEmail","uppercase","uuid","uuid4","uuid6","uuid7","xid","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","extendedDuration","guid","uuid","version","uuid4","uuid6","uuid7","email","html5Email","rfc5322Email","unicodeEmail","idnEmail","browserEmail","_emoji","emoji","ipv4","ipv6","mac","escapeRegex","cidrv4","cidrv6","base64","base64url","hostname","domain","e164","dateSource","date","timeSource","time","datetime","string","bigint","integer","number","boolean","_null","_undefined","lowercase","uppercase","hex","fixedBase64","fixedBase64url","md5_hex","md5_base64","md5_base64url","sha1_hex","sha1_base64","sha1_base64url","sha256_hex","sha256_base64","sha256_base64url","sha384_hex","sha384_base64","sha384_base64url","sha512_hex","sha512_base64","sha512_base64url","$ZodCheck","$constructor","_a","numericOriginMap","$ZodCheckLessThan","inst","$ZodCheckGreaterThan","$ZodCheckMultipleOf","floatSafeRemainder","$ZodCheckNumberFormat","NUMBER_FORMAT_RANGES","integer","$ZodCheckBigIntFormat","BIGINT_FORMAT_RANGES","$ZodCheckMaxSize","nullish","getSizableOrigin","$ZodCheckMinSize","$ZodCheckSizeEquals","$ZodCheckMaxLength","getLengthableOrigin","$ZodCheckMinLength","$ZodCheckLengthEquals","$ZodCheckStringFormat","$ZodCheckRegex","$ZodCheckLowerCase","lowercase","$ZodCheckUpperCase","uppercase","$ZodCheckIncludes","escapeRegex","$ZodCheckStartsWith","$ZodCheckEndsWith","handleCheckPropertyResult","prefixIssues","$ZodCheckProperty","result","$ZodCheckMimeType","$ZodCheckOverwrite","Doc","version","$ZodType","$constructor","_a","version","checks","aborted","$ZodAsyncError","checkResult","canary","result","defineLazy","safeParse","safeParseAsync","$ZodString","string","_","$ZodStringFormat","$ZodCheckStringFormat","$ZodGUID","guid","$ZodUUID","uuid","$ZodEmail","email","$ZodURL","url","$ZodEmoji","emoji","$ZodNanoID","nanoid","$ZodCUID","cuid","$ZodCUID2","cuid2","$ZodULID","ulid","$ZodXID","xid","$ZodKSUID","ksuid","$ZodISODateTime","datetime","$ZodISODate","date","$ZodISOTime","time","$ZodISODuration","duration","$ZodIPv4","ipv4","$ZodIPv6","ipv6","$ZodMAC","mac","$ZodCIDRv4","cidrv4","$ZodCIDRv6","cidrv6","isValidBase64","$ZodBase64","base64","isValidBase64URL","base64url","$ZodBase64URL","$ZodE164","e164","isValidJWT","$ZodJWT","$ZodCustomStringFormat","$ZodNumber","number","$ZodNumberFormat","$ZodCheckNumberFormat","$ZodBoolean","boolean","$ZodBigInt","bigint","$ZodBigIntFormat","$ZodCheckBigIntFormat","$ZodSymbol","$ZodUndefined","_undefined","$ZodNull","_null","$ZodAny","$ZodUnknown","$ZodNever","$ZodVoid","$ZodDate","handleArrayResult","prefixIssues","$ZodArray","handlePropertyResult","normalizeDef","optionalKeys","handleCatchall","r","$ZodObject","cached","isObject","$ZodObjectJIT","Doc","esc","globalConfig","allowsEval","handleUnionResults","finalizeIssue","config","$ZodUnion","cleanRegex","results","handleExclusiveUnionResults","$ZodXor","$ZodDiscriminatedUnion","map","$ZodIntersection","left","right","handleIntersectionResults","mergeValues","isPlainObject","$ZodTuple","handleTupleResult","$ZodRecord","$ZodMap","keyResult","valueResult","handleMapResult","propertyKeyTypes","$ZodSet","handleSetResult","$ZodEnum","getEnumValues","escapeRegex","$ZodLiteral","$ZodFile","$ZodTransform","$ZodEncodeError","output","handleOptionalResult","$ZodOptional","$ZodExactOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodSuccess","$ZodCatch","$ZodNaN","$ZodPipe","handlePipeResult","$ZodCodec","handleCodecAResult","handleCodecTxResult","$ZodReadonly","handleReadonlyResult","$ZodTemplateLiteral","primitiveTypes","$ZodFunction","parse","parseAsync","$ZodPromise","$ZodLazy","$ZodCustom","$ZodCheck","handleRefineResult","issue","locales_exports","ar_default","az_default","be_default","bg_default","ca_default","cs_default","da_default","de_default","en_default","eo_default","es_default","fa_default","fi_default","fr_default","fr_CA_default","he_default","hu_default","hy_default","id_default","is_default","it_default","ja_default","ka_default","kh_default","km_default","ko_default","lt_default","mk_default","ms_default","nl_default","no_default","ota_default","pl_default","ps_default","pt_default","ru_default","sl_default","sv_default","ta_default","th_default","tr_default","ua_default","uk_default","ur_default","uz_default","vi_default","yo_default","zh_CN_default","zh_TW_default","error","issue","parsedType","stringifyPrimitive","joinValues","ar_default","error","issue","parsedType","stringifyPrimitive","joinValues","az_default","getBelarusianPlural","error","issue","parsedType","stringifyPrimitive","joinValues","be_default","error","issue","parsedType","stringifyPrimitive","joinValues","bg_default","error","issue","parsedType","stringifyPrimitive","joinValues","ca_default","error","issue","parsedType","stringifyPrimitive","joinValues","cs_default","error","issue","parsedType","stringifyPrimitive","joinValues","da_default","error","issue","parsedType","stringifyPrimitive","joinValues","de_default","error","issue","parsedType","stringifyPrimitive","joinValues","en_default","error","issue","parsedType","stringifyPrimitive","joinValues","eo_default","error","issue","parsedType","stringifyPrimitive","joinValues","es_default","error","issue","parsedType","stringifyPrimitive","joinValues","fa_default","error","issue","parsedType","stringifyPrimitive","joinValues","fi_default","error","issue","parsedType","stringifyPrimitive","joinValues","fr_default","error","issue","parsedType","stringifyPrimitive","joinValues","fr_CA_default","error","issue","parsedType","stringifyPrimitive","joinValues","he_default","error","issue","parsedType","stringifyPrimitive","joinValues","hu_default","getArmenianPlural","withDefiniteArticle","error","issue","parsedType","stringifyPrimitive","joinValues","hy_default","error","issue","parsedType","stringifyPrimitive","joinValues","id_default","error","issue","parsedType","stringifyPrimitive","joinValues","is_default","error","issue","parsedType","stringifyPrimitive","joinValues","it_default","error","issue","parsedType","stringifyPrimitive","joinValues","ja_default","error","issue","parsedType","stringifyPrimitive","joinValues","ka_default","error","issue","parsedType","stringifyPrimitive","joinValues","km_default","kh_default","km_default","error","issue","parsedType","stringifyPrimitive","joinValues","ko_default","capitalizeFirstCharacter","getUnitTypeFromNumber","number","error","issue","parsedType","stringifyPrimitive","joinValues","lt_default","error","issue","parsedType","stringifyPrimitive","joinValues","mk_default","error","issue","parsedType","stringifyPrimitive","joinValues","ms_default","error","issue","parsedType","stringifyPrimitive","joinValues","nl_default","error","issue","parsedType","stringifyPrimitive","joinValues","no_default","error","issue","parsedType","stringifyPrimitive","joinValues","ota_default","error","issue","parsedType","stringifyPrimitive","joinValues","ps_default","error","issue","parsedType","stringifyPrimitive","joinValues","pl_default","error","issue","parsedType","stringifyPrimitive","joinValues","pt_default","getRussianPlural","error","issue","parsedType","stringifyPrimitive","joinValues","ru_default","error","issue","parsedType","stringifyPrimitive","joinValues","sl_default","error","issue","parsedType","stringifyPrimitive","joinValues","sv_default","error","issue","parsedType","stringifyPrimitive","joinValues","ta_default","error","issue","parsedType","stringifyPrimitive","joinValues","th_default","error","issue","parsedType","stringifyPrimitive","joinValues","tr_default","error","issue","parsedType","stringifyPrimitive","joinValues","uk_default","ua_default","uk_default","error","issue","parsedType","stringifyPrimitive","joinValues","ur_default","error","issue","parsedType","stringifyPrimitive","joinValues","uz_default","error","issue","parsedType","stringifyPrimitive","joinValues","vi_default","error","issue","parsedType","stringifyPrimitive","joinValues","zh_CN_default","error","issue","parsedType","stringifyPrimitive","joinValues","zh_TW_default","error","issue","parsedType","stringifyPrimitive","joinValues","yo_default","_a","$output","$input","$ZodRegistry","meta","registry","globalRegistry","_string","Class","normalizeParams","_coercedString","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_emoji","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_mac","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","TimePrecision","_isoDateTime","_isoDate","_isoTime","_isoDuration","_number","_coercedNumber","_int","_float32","_float64","_int32","_uint32","_boolean","_coercedBoolean","_bigint","_coercedBigint","_int64","_uint64","_symbol","_undefined","_null","_any","_unknown","_never","_void","_date","_coercedDate","_nan","_lt","$ZodCheckLessThan","_lte","_gt","$ZodCheckGreaterThan","normalizeParams","_gte","_positive","_gt","_negative","_lt","_nonpositive","_lte","_nonnegative","_gte","_multipleOf","$ZodCheckMultipleOf","normalizeParams","_maxSize","$ZodCheckMaxSize","_minSize","$ZodCheckMinSize","_size","$ZodCheckSizeEquals","_maxLength","$ZodCheckMaxLength","_minLength","$ZodCheckMinLength","_length","$ZodCheckLengthEquals","_regex","$ZodCheckRegex","_lowercase","$ZodCheckLowerCase","_uppercase","$ZodCheckUpperCase","_includes","$ZodCheckIncludes","_startsWith","$ZodCheckStartsWith","_endsWith","$ZodCheckEndsWith","_property","$ZodCheckProperty","_mime","$ZodCheckMimeType","_overwrite","$ZodCheckOverwrite","_normalize","_trim","_toLowerCase","_toUpperCase","_slugify","slugify","_array","Class","_union","_xor","_discriminatedUnion","_intersection","_tuple","$ZodType","_record","_map","_set","_enum","_nativeEnum","_literal","_file","_transform","_optional","_nullable","_default","shallowClone","_nonoptional","_success","_catch","_pipe","_readonly","_templateLiteral","_lazy","_promise","_custom","_refine","_superRefine","_check","issue","$ZodCheck","describe","globalRegistry","meta","_stringbool","$ZodCodec","$ZodBoolean","$ZodString","codec","_stringFormat","initializeContext","globalRegistry","process","_a","meta","isTransforming","extractDefs","id","schema","finalize","createStandardJSONSchemaMethod","createToJSONSchemaMethod","formatMap","stringProcessor","json","numberProcessor","booleanProcessor","bigintProcessor","symbolProcessor","nullProcessor","undefinedProcessor","voidProcessor","neverProcessor","anyProcessor","unknownProcessor","dateProcessor","enumProcessor","getEnumValues","literalProcessor","nanProcessor","templateLiteralProcessor","fileProcessor","file","successProcessor","customProcessor","functionProcessor","transformProcessor","mapProcessor","setProcessor","arrayProcessor","process","objectProcessor","unionProcessor","intersectionProcessor","tupleProcessor","recordProcessor","nullableProcessor","nonoptionalProcessor","defaultProcessor","prefaultProcessor","catchProcessor","pipeProcessor","readonlyProcessor","promiseProcessor","optionalProcessor","lazyProcessor","allProcessors","toJSONSchema","registry","ctx","initializeContext","extractDefs","finalize","JSONSchemaGenerator","initializeContext","allProcessors","process","extractDefs","finalize","json_schema_exports","schemas_exports","ZodAny","ZodArray","ZodBase64","ZodBase64URL","ZodBigInt","ZodBigIntFormat","ZodBoolean","ZodCIDRv4","ZodCIDRv6","ZodCUID","ZodCUID2","ZodCatch","ZodCodec","ZodCustom","ZodCustomStringFormat","ZodDate","ZodDefault","ZodDiscriminatedUnion","ZodE164","ZodEmail","ZodEmoji","ZodEnum","ZodExactOptional","ZodFile","ZodFunction","ZodGUID","ZodIPv4","ZodIPv6","ZodIntersection","ZodJWT","ZodKSUID","ZodLazy","ZodLiteral","ZodMAC","ZodMap","ZodNaN","ZodNanoID","ZodNever","ZodNonOptional","ZodNull","ZodNullable","ZodNumber","ZodNumberFormat","ZodObject","ZodOptional","ZodPipe","ZodPrefault","ZodPromise","ZodReadonly","ZodRecord","ZodSet","ZodString","ZodStringFormat","ZodSuccess","ZodSymbol","ZodTemplateLiteral","ZodTransform","ZodTuple","ZodType","ZodULID","ZodURL","ZodUUID","ZodUndefined","ZodUnion","ZodUnknown","ZodVoid","ZodXID","ZodXor","_ZodString","_default","_function","any","array","base64","base64url","bigint","boolean","_catch","check","cidrv4","cidrv6","codec","cuid","cuid2","custom","date","describe","discriminatedUnion","e164","email","emoji","_enum","exactOptional","file","float32","float64","guid","hash","hex","hostname","httpUrl","_instanceof","int","int32","int64","intersection","ipv4","ipv6","json","jwt","keyof","ksuid","lazy","literal","looseObject","looseRecord","mac","map","meta","nan","nanoid","nativeEnum","never","nonoptional","_null","nullable","nullish","number","object","optional","partialRecord","pipe","prefault","preprocess","promise","readonly","record","refine","set","strictObject","string","stringFormat","stringbool","success","superRefine","symbol","templateLiteral","transform","tuple","uint32","uint64","ulid","_undefined","union","unknown","url","uuid","uuidv4","uuidv6","uuidv7","_void","xid","xor","checks_exports","_endsWith","_gt","_gte","_includes","_length","_lowercase","_lt","_lte","_maxLength","_maxSize","_mime","_minLength","_minSize","_multipleOf","_negative","_nonnegative","_nonpositive","_normalize","_overwrite","_positive","_property","_regex","_size","_slugify","_startsWith","_toLowerCase","_toUpperCase","_trim","_uppercase","iso_exports","ZodISODate","ZodISODateTime","ZodISODuration","ZodISOTime","date","datetime","duration","time","ZodISODateTime","$constructor","$ZodISODateTime","ZodStringFormat","datetime","_isoDateTime","ZodISODate","$ZodISODate","date","_isoDate","ZodISOTime","$ZodISOTime","time","_isoTime","ZodISODuration","$ZodISODuration","duration","_isoDuration","initializer","$ZodError","formatError","flattenError","issue","jsonStringifyReplacer","issues","ZodError","$constructor","ZodRealError","parse","_parse","ZodRealError","parseAsync","_parseAsync","safeParse","_safeParse","safeParseAsync","_safeParseAsync","encode","_encode","decode","_decode","encodeAsync","_encodeAsync","decodeAsync","_decodeAsync","safeEncode","_safeEncode","safeDecode","_safeDecode","safeEncodeAsync","_safeEncodeAsync","safeDecodeAsync","_safeDecodeAsync","ZodType","$constructor","$ZodType","createStandardJSONSchemaMethod","createToJSONSchemaMethod","util_exports","def","clone","meta","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","check","refine","superRefine","_overwrite","optional","exactOptional","nullable","nonoptional","array","union","intersection","pipe","transform","_default","prefault","_catch","readonly","globalRegistry","_ZodString","$ZodString","json","stringProcessor","_regex","_includes","_startsWith","_endsWith","_minLength","_maxLength","_length","_lowercase","_uppercase","_trim","_normalize","_toLowerCase","_toUpperCase","_slugify","ZodString","_email","ZodEmail","_url","ZodURL","_jwt","ZodJWT","_emoji","ZodEmoji","_guid","ZodGUID","_uuid","ZodUUID","_uuidv4","_uuidv6","_uuidv7","_nanoid","ZodNanoID","_cuid","ZodCUID","_cuid2","ZodCUID2","_ulid","ZodULID","_base64","ZodBase64","_base64url","ZodBase64URL","_xid","ZodXID","_ksuid","ZodKSUID","_ipv4","ZodIPv4","_ipv6","ZodIPv6","_cidrv4","ZodCIDRv4","_cidrv6","ZodCIDRv6","_e164","ZodE164","datetime","date","time","duration","string","_string","ZodStringFormat","$ZodStringFormat","$ZodEmail","email","$ZodGUID","guid","$ZodUUID","uuid","uuidv4","uuidv6","uuidv7","$ZodURL","url","httpUrl","regexes_exports","$ZodEmoji","emoji","$ZodNanoID","nanoid","$ZodCUID","cuid","$ZodCUID2","cuid2","$ZodULID","ulid","$ZodXID","xid","$ZodKSUID","ksuid","$ZodIPv4","ipv4","ZodMAC","$ZodMAC","mac","_mac","$ZodIPv6","ipv6","$ZodCIDRv4","cidrv4","$ZodCIDRv6","cidrv6","$ZodBase64","base64","$ZodBase64URL","base64url","$ZodE164","e164","$ZodJWT","jwt","ZodCustomStringFormat","$ZodCustomStringFormat","stringFormat","_stringFormat","hostname","hex","hash","ZodNumber","$ZodNumber","numberProcessor","_gt","_gte","_lt","_lte","int","_multipleOf","number","_number","ZodNumberFormat","$ZodNumberFormat","_int","float32","_float32","float64","_float64","int32","_int32","uint32","_uint32","ZodBoolean","$ZodBoolean","booleanProcessor","boolean","_boolean","ZodBigInt","$ZodBigInt","bigintProcessor","bigint","_bigint","ZodBigIntFormat","$ZodBigIntFormat","int64","_int64","uint64","_uint64","ZodSymbol","$ZodSymbol","symbolProcessor","symbol","_symbol","ZodUndefined","$ZodUndefined","undefinedProcessor","_undefined","ZodNull","$constructor","$ZodNull","ZodType","json","nullProcessor","_null","ZodAny","$constructor","$ZodAny","ZodType","json","anyProcessor","any","_any","ZodUnknown","$ZodUnknown","unknownProcessor","unknown","_unknown","ZodNever","$ZodNever","neverProcessor","never","_never","ZodVoid","$ZodVoid","voidProcessor","_void","ZodDate","$constructor","$ZodDate","ZodType","json","dateProcessor","_gte","_lte","date","_date","ZodArray","$ZodArray","arrayProcessor","_minLength","_maxLength","_length","array","_array","keyof","_enum","ZodObject","$ZodObjectJIT","objectProcessor","util_exports","unknown","never","ZodOptional","ZodNonOptional","object","strictObject","looseObject","ZodUnion","$ZodUnion","unionProcessor","union","ZodXor","$ZodXor","xor","ZodDiscriminatedUnion","$ZodDiscriminatedUnion","discriminatedUnion","ZodIntersection","$ZodIntersection","intersectionProcessor","intersection","ZodTuple","$ZodTuple","tupleProcessor","tuple","$ZodType","ZodRecord","$ZodRecord","recordProcessor","record","partialRecord","clone","looseRecord","ZodMap","$ZodMap","mapProcessor","_minSize","_maxSize","_size","map","ZodSet","$ZodSet","setProcessor","set","ZodEnum","$ZodEnum","enumProcessor","nativeEnum","ZodEnum","util_exports","ZodLiteral","$constructor","$ZodLiteral","ZodType","json","literalProcessor","literal","ZodFile","$ZodFile","fileProcessor","_minSize","_maxSize","_mime","file","_file","ZodTransform","$ZodTransform","transformProcessor","$ZodEncodeError","issue","output","transform","ZodOptional","$ZodOptional","optionalProcessor","optional","ZodExactOptional","$ZodExactOptional","exactOptional","ZodNullable","$ZodNullable","nullableProcessor","nullable","nullish","ZodDefault","$ZodDefault","defaultProcessor","_default","ZodPrefault","$ZodPrefault","prefaultProcessor","prefault","ZodNonOptional","$ZodNonOptional","nonoptionalProcessor","nonoptional","ZodSuccess","$ZodSuccess","successProcessor","success","ZodCatch","$ZodCatch","catchProcessor","_catch","ZodNaN","$constructor","$ZodNaN","ZodType","json","nanProcessor","nan","_nan","ZodPipe","$ZodPipe","pipeProcessor","pipe","ZodCodec","$ZodCodec","codec","ZodReadonly","$ZodReadonly","readonlyProcessor","readonly","ZodTemplateLiteral","$ZodTemplateLiteral","templateLiteralProcessor","templateLiteral","util_exports","ZodLazy","$ZodLazy","lazyProcessor","lazy","ZodPromise","$ZodPromise","promiseProcessor","promise","ZodFunction","$ZodFunction","functionProcessor","_function","tuple","array","unknown","ZodCustom","$constructor","$ZodCustom","ZodType","json","customProcessor","check","$ZodCheck","custom","_custom","refine","_refine","superRefine","_superRefine","describe","meta","_instanceof","util_exports","stringbool","_stringbool","ZodCodec","ZodBoolean","ZodString","json","lazy","union","string","number","boolean","_null","array","record","preprocess","pipe","transform","ZodIssueCode","setErrorMap","map","config","getErrorMap","ZodFirstPartyTypeKind","z","schemas_exports","checks_exports","iso_exports","RECOGNIZED_KEYS","detectVersion","resolveRef","convertBaseSchema","zodSchema","convertSchema","objectSchema","fromJSONSchema","version","globalRegistry","coerce_exports","bigint","boolean","date","number","string","string","_coercedString","ZodString","number","_coercedNumber","ZodNumber","boolean","_coercedBoolean","ZodBoolean","bigint","_coercedBigint","ZodBigInt","date","_coercedDate","ZodDate","config","en_default","external_exports","external_exports","external_exports","external_exports","external_exports","external_exports","external_exports","external_exports","external_exports","stat","sum","getPluginDataDir","join","join","homedir","join","homedir","config","error"]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-T2XRMW7B.js b/packages/plugin/dist/chunk-T2XRMW7B.js new file mode 100644 index 00000000..cca61545 --- /dev/null +++ b/packages/plugin/dist/chunk-T2XRMW7B.js @@ -0,0 +1,307 @@ +import { + assembleCanonicalAnalysisRun, + getPluginDataDir +} from "./chunk-UORQZYNI.js"; + +// lib/results-db.ts +import Database from "better-sqlite3"; +import { mkdirSync, readFileSync } from "fs"; +import { join } from "path"; +var DB_FILE = "results.db"; +var db = null; +function ensureColumn(database, tableName, columnName, definition) { + const columns = database.prepare(`PRAGMA table_info(${tableName})`).all(); + if (!columns.some((column) => column.name === columnName)) { + database.exec(`ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${definition}`); + } +} +function getDb() { + if (db) return db; + const dataDir = getPluginDataDir(); + mkdirSync(dataDir, { recursive: true }); + db = new Database(join(dataDir, DB_FILE)); + db.pragma("journal_mode = WAL"); + db.pragma("foreign_keys = ON"); + db.exec(` + CREATE TABLE IF NOT EXISTS analysis_runs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + analyzed_at TEXT NOT NULL, + metrics_json TEXT NOT NULL, + scores_json TEXT NOT NULL, + type_json TEXT, + content_json TEXT, + phase1_output_json TEXT, + activity_sessions_json TEXT, + evaluation_json TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now')) + ); + + CREATE TABLE IF NOT EXISTS domain_results ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, + domain TEXT NOT NULL, + score REAL NOT NULL, + confidence REAL NOT NULL DEFAULT 0.0, + data_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + UNIQUE(run_id, domain) + ); + + CREATE INDEX IF NOT EXISTS idx_domain_results_domain ON domain_results(domain); + CREATE INDEX IF NOT EXISTS idx_domain_results_run ON domain_results(run_id); + `); + ensureColumn(db, "analysis_runs", "phase1_output_json", "TEXT"); + ensureColumn(db, "analysis_runs", "activity_sessions_json", "TEXT"); + ensureColumn(db, "analysis_runs", "evaluation_json", "TEXT"); + return db; +} +function createAnalysisRun(params) { + const database = getDb(); + const analyzedAt = params.analyzedAt ?? (/* @__PURE__ */ new Date()).toISOString(); + const result = database.prepare(` + INSERT INTO analysis_runs ( + analyzed_at, + metrics_json, + scores_json, + phase1_output_json, + activity_sessions_json + ) + VALUES (?, ?, ?, ?, ?) + `).run( + analyzedAt, + JSON.stringify(params.metrics), + JSON.stringify(params.scores), + params.phase1Output ? JSON.stringify(params.phase1Output) : null, + params.activitySessions ? JSON.stringify(params.activitySessions) : null + ); + return Number(result.lastInsertRowid); +} +function getCurrentRunId() { + try { + const runIdStr = readFileSync(join(getPluginDataDir(), "current-run-id.txt"), "utf-8"); + return parseInt(runIdStr.trim(), 10); + } catch { + return getLatestRunId(); + } +} +function getLatestRunId() { + const database = getDb(); + const row = database.prepare("SELECT id FROM analysis_runs ORDER BY id DESC LIMIT 1").get(); + return row?.id ?? null; +} +function getAnalysisRun(runId) { + const database = getDb(); + const row = database.prepare("SELECT * FROM analysis_runs WHERE id = ?").get(runId); + if (!row) return null; + return { + id: row.id, + analyzedAt: row.analyzed_at, + metrics: JSON.parse(row.metrics_json), + scores: JSON.parse(row.scores_json), + typeResult: row.type_json ? JSON.parse(row.type_json) : null, + phase1Output: row.phase1_output_json ? JSON.parse(row.phase1_output_json) : null, + activitySessions: row.activity_sessions_json ? JSON.parse(row.activity_sessions_json) : null, + evaluation: row.evaluation_json ? JSON.parse(row.evaluation_json) : null, + content: row.content_json ? JSON.parse(row.content_json) : null + }; +} +function saveDomainResult(runId, result) { + const database = getDb(); + database.prepare(` + INSERT OR REPLACE INTO domain_results (run_id, domain, score, confidence, data_json) + VALUES (?, ?, ?, ?, ?) + `).run( + runId, + result.domain, + result.overallScore, + result.confidenceScore, + JSON.stringify(result) + ); +} +function getDomainResults(runId) { + const database = getDb(); + const rows = database.prepare("SELECT data_json FROM domain_results WHERE run_id = ? ORDER BY domain").all(runId); + return rows.map((row) => JSON.parse(row.data_json)); +} +function getDomainResult(runId, domain) { + const database = getDb(); + const row = database.prepare("SELECT data_json FROM domain_results WHERE run_id = ? AND domain = ?").get(runId, domain); + return row ? JSON.parse(row.data_json) : null; +} +function saveTypeResult(runId, typeResult) { + const database = getDb(); + database.prepare("UPDATE analysis_runs SET type_json = ? WHERE id = ?").run(JSON.stringify(typeResult), runId); +} +function saveAssembledArtifacts(runId, activitySessions, evaluation) { + const database = getDb(); + database.prepare(` + UPDATE analysis_runs + SET activity_sessions_json = ?, evaluation_json = ? + WHERE id = ? + `).run(JSON.stringify(activitySessions), JSON.stringify(evaluation), runId); +} +function assembleCanonicalRun(runId = getLatestRunId() ?? void 0) { + if (!runId) return null; + const run = getAnalysisRun(runId); + if (!run?.phase1Output) return null; + const stageOutputs = getAllStageOutputs(runId); + const assembledRun = assembleCanonicalAnalysisRun({ + runId, + analyzedAt: run.analyzedAt, + phase1Output: run.phase1Output, + deterministicScores: run.scores, + stageOutputs, + typeResult: run.typeResult, + domainResults: getDomainResults(runId) + }); + saveAssembledArtifacts(runId, assembledRun.activitySessions, assembledRun.evaluation); + return assembledRun; +} + +// lib/stage-db.ts +var migratedDb = null; +var REQUIRED_STAGE_NAMES = [ + "sessionSummaries", + // 5 extractors (v2) + "extractAiPartnership", + "extractSessionCraft", + "extractToolMastery", + "extractSkillResilience", + "extractSessionMastery", + // 5 domain writers (v2) + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery", + // Context + classification + "projectSummaries", + "weeklyInsights", + "typeClassification", + "evidenceVerification", + "contentWriter" +]; +function getDb2() { + const db2 = getDb(); + if (migratedDb !== db2) { + db2.exec(` + CREATE TABLE IF NOT EXISTS stage_outputs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, + stage TEXT NOT NULL, + data_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + UNIQUE(run_id, stage) + ); + + CREATE INDEX IF NOT EXISTS idx_stage_outputs_run ON stage_outputs(run_id); + CREATE INDEX IF NOT EXISTS idx_stage_outputs_stage ON stage_outputs(stage); + + CREATE TABLE IF NOT EXISTS stage_statuses ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, + stage TEXT NOT NULL, + required INTEGER NOT NULL DEFAULT 0, + status TEXT NOT NULL, + attempt_count INTEGER NOT NULL DEFAULT 0, + last_error TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT NOT NULL DEFAULT (datetime('now')), + UNIQUE(run_id, stage) + ); + + CREATE INDEX IF NOT EXISTS idx_stage_statuses_run ON stage_statuses(run_id); + CREATE INDEX IF NOT EXISTS idx_stage_statuses_stage ON stage_statuses(stage); + `); + migratedDb = db2; + } + return db2; +} +function isRequiredStage(stage) { + return REQUIRED_STAGE_NAMES.includes(stage); +} +function recordStageStatus(runId, stage, params) { + const database = getDb2(); + database.prepare(` + INSERT INTO stage_statuses ( + run_id, + stage, + required, + status, + attempt_count, + last_error, + created_at, + updated_at + ) VALUES (?, ?, ?, ?, 1, ?, datetime('now'), datetime('now')) + ON CONFLICT(run_id, stage) DO UPDATE SET + required = excluded.required, + status = excluded.status, + attempt_count = stage_statuses.attempt_count + 1, + last_error = excluded.last_error, + updated_at = datetime('now') + `).run( + runId, + stage, + params.required ?? isRequiredStage(stage) ? 1 : 0, + params.status, + params.lastError ?? null + ); +} +function getStageStatuses(runId) { + const database = getDb2(); + const rows = database.prepare(` + SELECT run_id, stage, required, status, attempt_count, last_error, updated_at, created_at + FROM stage_statuses + WHERE run_id = ? + ORDER BY stage + `).all(runId); + return rows.map((row) => ({ + runId: row.run_id, + stage: row.stage, + required: row.required === 1, + status: row.status, + attemptCount: row.attempt_count, + lastError: row.last_error, + updatedAt: row.updated_at, + createdAt: row.created_at + })); +} +function saveStageOutput(runId, stage, data) { + const database = getDb2(); + database.prepare( + `INSERT OR REPLACE INTO stage_outputs (run_id, stage, data_json) + VALUES (?, ?, ?)` + ).run(runId, stage, JSON.stringify(data)); +} +function getStageOutput(runId, stage) { + const database = getDb2(); + const row = database.prepare("SELECT data_json FROM stage_outputs WHERE run_id = ? AND stage = ?").get(runId, stage); + return row ? JSON.parse(row.data_json) : null; +} +function getAllStageOutputs(runId) { + const database = getDb2(); + const rows = database.prepare("SELECT stage, data_json FROM stage_outputs WHERE run_id = ? ORDER BY stage").all(runId); + const result = {}; + for (const row of rows) { + result[row.stage] = JSON.parse(row.data_json); + } + return result; +} + +export { + REQUIRED_STAGE_NAMES, + recordStageStatus, + getStageStatuses, + saveStageOutput, + getStageOutput, + getAllStageOutputs, + createAnalysisRun, + getCurrentRunId, + getAnalysisRun, + saveDomainResult, + getDomainResults, + getDomainResult, + saveTypeResult, + assembleCanonicalRun +}; +//# sourceMappingURL=chunk-T2XRMW7B.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-T2XRMW7B.js.map b/packages/plugin/dist/chunk-T2XRMW7B.js.map new file mode 100644 index 00000000..7db0c993 --- /dev/null +++ b/packages/plugin/dist/chunk-T2XRMW7B.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../lib/results-db.ts","../lib/stage-db.ts"],"sourcesContent":["/**\n * Results Database - Local SQLite storage for canonical analysis runs.\n *\n * @module plugin/lib/results-db\n */\n\nimport Database from 'better-sqlite3';\nimport { mkdirSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { getPluginDataDir } from './core/session-scanner.js';\nimport type {\n CanonicalAnalysisRun,\n CanonicalEvaluationPayload,\n CanonicalStageOutputs,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n Phase1Output,\n Phase1SessionMetrics,\n ReportActivitySession,\n} from './core/types.js';\nimport { assembleCanonicalAnalysisRun } from './evaluation-assembler.js';\nimport { getAllStageOutputs } from './stage-db.js';\n\nconst DB_FILE = 'results.db';\n\nlet db: Database.Database | null = null;\n\nfunction ensureColumn(\n database: Database.Database,\n tableName: string,\n columnName: string,\n definition: string,\n): void {\n const columns = database.prepare(`PRAGMA table_info(${tableName})`).all() as Array<{ name: string }>;\n if (!columns.some(column => column.name === columnName)) {\n database.exec(`ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${definition}`);\n }\n}\n\nexport function getDb(): Database.Database {\n if (db) return db;\n\n const dataDir = getPluginDataDir();\n mkdirSync(dataDir, { recursive: true });\n db = new Database(join(dataDir, DB_FILE));\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS analysis_runs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n analyzed_at TEXT NOT NULL,\n metrics_json TEXT NOT NULL,\n scores_json TEXT NOT NULL,\n type_json TEXT,\n content_json TEXT,\n phase1_output_json TEXT,\n activity_sessions_json TEXT,\n evaluation_json TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS domain_results (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n domain TEXT NOT NULL,\n score REAL NOT NULL,\n confidence REAL NOT NULL DEFAULT 0.0,\n data_json TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, domain)\n );\n\n CREATE INDEX IF NOT EXISTS idx_domain_results_domain ON domain_results(domain);\n CREATE INDEX IF NOT EXISTS idx_domain_results_run ON domain_results(run_id);\n `);\n\n ensureColumn(db, 'analysis_runs', 'phase1_output_json', 'TEXT');\n ensureColumn(db, 'analysis_runs', 'activity_sessions_json', 'TEXT');\n ensureColumn(db, 'analysis_runs', 'evaluation_json', 'TEXT');\n\n return db;\n}\n\ninterface AnalysisRunRow {\n id: number;\n analyzed_at: string;\n metrics_json: string;\n scores_json: string;\n type_json: string | null;\n content_json: string | null;\n phase1_output_json: string | null;\n activity_sessions_json: string | null;\n evaluation_json: string | null;\n}\n\nexport function createAnalysisRun(params: {\n metrics: Phase1SessionMetrics;\n scores: DeterministicScores;\n phase1Output?: Phase1Output;\n activitySessions?: ReportActivitySession[];\n analyzedAt?: string;\n}): number {\n const database = getDb();\n const analyzedAt = params.analyzedAt ?? new Date().toISOString();\n\n const result = database.prepare(`\n INSERT INTO analysis_runs (\n analyzed_at,\n metrics_json,\n scores_json,\n phase1_output_json,\n activity_sessions_json\n )\n VALUES (?, ?, ?, ?, ?)\n `)\n .run(\n analyzedAt,\n JSON.stringify(params.metrics),\n JSON.stringify(params.scores),\n params.phase1Output ? JSON.stringify(params.phase1Output) : null,\n params.activitySessions ? JSON.stringify(params.activitySessions) : null,\n );\n\n return Number(result.lastInsertRowid);\n}\n\nexport function getCurrentRunId(): number | null {\n try {\n const runIdStr = readFileSync(join(getPluginDataDir(), 'current-run-id.txt'), 'utf-8');\n return parseInt(runIdStr.trim(), 10);\n } catch {\n return getLatestRunId();\n }\n}\n\nexport function getLatestRunId(): number | null {\n const database = getDb();\n const row = database\n .prepare('SELECT id FROM analysis_runs ORDER BY id DESC LIMIT 1')\n .get() as { id: number } | undefined;\n return row?.id ?? null;\n}\n\nexport function getAnalysisRun(runId: number): {\n id: number;\n analyzedAt: string;\n metrics: Phase1SessionMetrics;\n scores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n phase1Output: Phase1Output | null;\n activitySessions: ReportActivitySession[] | null;\n evaluation: CanonicalEvaluationPayload | null;\n content: Record | null;\n} | null {\n const database = getDb();\n const row = database\n .prepare('SELECT * FROM analysis_runs WHERE id = ?')\n .get(runId) as AnalysisRunRow | undefined;\n\n if (!row) return null;\n\n return {\n id: row.id,\n analyzedAt: row.analyzed_at,\n metrics: JSON.parse(row.metrics_json) as Phase1SessionMetrics,\n scores: JSON.parse(row.scores_json) as DeterministicScores,\n typeResult: row.type_json ? JSON.parse(row.type_json) as DeterministicTypeResult : null,\n phase1Output: row.phase1_output_json ? JSON.parse(row.phase1_output_json) as Phase1Output : null,\n activitySessions: row.activity_sessions_json\n ? JSON.parse(row.activity_sessions_json) as ReportActivitySession[]\n : null,\n evaluation: row.evaluation_json ? JSON.parse(row.evaluation_json) as CanonicalEvaluationPayload : null,\n content: row.content_json ? JSON.parse(row.content_json) as Record : null,\n };\n}\n\nexport function saveDomainResult(runId: number, result: DomainResult): void {\n const database = getDb();\n database\n .prepare(`\n INSERT OR REPLACE INTO domain_results (run_id, domain, score, confidence, data_json)\n VALUES (?, ?, ?, ?, ?)\n `)\n .run(\n runId,\n result.domain,\n result.overallScore,\n result.confidenceScore,\n JSON.stringify(result),\n );\n}\n\nexport function getDomainResults(runId: number): DomainResult[] {\n const database = getDb();\n const rows = database\n .prepare('SELECT data_json FROM domain_results WHERE run_id = ? ORDER BY domain')\n .all(runId) as Array<{ data_json: string }>;\n\n return rows.map(row => JSON.parse(row.data_json) as DomainResult);\n}\n\nexport function getDomainResult(runId: number, domain: string): DomainResult | null {\n const database = getDb();\n const row = database\n .prepare('SELECT data_json FROM domain_results WHERE run_id = ? AND domain = ?')\n .get(runId, domain) as { data_json: string } | undefined;\n\n return row ? JSON.parse(row.data_json) as DomainResult : null;\n}\n\nexport function saveTypeResult(runId: number, typeResult: DeterministicTypeResult): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET type_json = ? WHERE id = ?')\n .run(JSON.stringify(typeResult), runId);\n}\n\nexport function saveContent(runId: number, content: Record): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET content_json = ? WHERE id = ?')\n .run(JSON.stringify(content), runId);\n}\n\nexport function saveEvaluation(runId: number, evaluation: CanonicalEvaluationPayload): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET evaluation_json = ? WHERE id = ?')\n .run(JSON.stringify(evaluation), runId);\n}\n\nfunction saveAssembledArtifacts(\n runId: number,\n activitySessions: ReportActivitySession[],\n evaluation: CanonicalEvaluationPayload,\n): void {\n const database = getDb();\n database\n .prepare(`\n UPDATE analysis_runs\n SET activity_sessions_json = ?, evaluation_json = ?\n WHERE id = ?\n `)\n .run(JSON.stringify(activitySessions), JSON.stringify(evaluation), runId);\n}\n\nexport function assembleCanonicalRun(runId = getLatestRunId() ?? undefined): CanonicalAnalysisRun | null {\n if (!runId) return null;\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) return null;\n\n const stageOutputs = getAllStageOutputs(runId) as CanonicalStageOutputs;\n const assembledRun = assembleCanonicalAnalysisRun({\n runId,\n analyzedAt: run.analyzedAt,\n phase1Output: run.phase1Output,\n deterministicScores: run.scores,\n stageOutputs,\n typeResult: run.typeResult,\n domainResults: getDomainResults(runId),\n });\n\n saveAssembledArtifacts(runId, assembledRun.activitySessions, assembledRun.evaluation);\n\n return assembledRun;\n}\n\nexport function closeResultsDb(): void {\n if (db) {\n db.close();\n db = null;\n }\n}\n","/**\n * Stage Database - SQLite storage for pipeline stage outputs\n *\n * Reuses the shared database connection from results-db to avoid\n * dual-connection write contention on the same results.db file.\n *\n * @module plugin/lib/stage-db\n */\n\nimport type Database from 'better-sqlite3';\nimport { getDb as getSharedDb } from './results-db.js';\n\nlet migratedDb: Database.Database | null = null;\n\nexport const REQUIRED_STAGE_NAMES = [\n 'sessionSummaries',\n // 5 extractors (v2)\n 'extractAiPartnership',\n 'extractSessionCraft',\n 'extractToolMastery',\n 'extractSkillResilience',\n 'extractSessionMastery',\n // 5 domain writers (v2)\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Context + classification\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n] as const;\n\nexport type StageLifecycleStatus = 'validated' | 'failed' | 'running' | 'queued';\n\nexport interface StageStatusRecord {\n runId: number;\n stage: string;\n required: boolean;\n status: StageLifecycleStatus;\n attemptCount: number;\n lastError: string | null;\n updatedAt: string;\n createdAt: string;\n}\n\nexport interface StageGateIssue {\n stage: string;\n required: boolean;\n status: StageLifecycleStatus | 'missing';\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\nfunction getDb() {\n const db = getSharedDb();\n\n if (migratedDb !== db) {\n db.exec(`\n CREATE TABLE IF NOT EXISTS stage_outputs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n stage TEXT NOT NULL,\n data_json TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, stage)\n );\n\n CREATE INDEX IF NOT EXISTS idx_stage_outputs_run ON stage_outputs(run_id);\n CREATE INDEX IF NOT EXISTS idx_stage_outputs_stage ON stage_outputs(stage);\n\n CREATE TABLE IF NOT EXISTS stage_statuses (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n stage TEXT NOT NULL,\n required INTEGER NOT NULL DEFAULT 0,\n status TEXT NOT NULL,\n attempt_count INTEGER NOT NULL DEFAULT 0,\n last_error TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, stage)\n );\n\n CREATE INDEX IF NOT EXISTS idx_stage_statuses_run ON stage_statuses(run_id);\n CREATE INDEX IF NOT EXISTS idx_stage_statuses_stage ON stage_statuses(stage);\n `);\n migratedDb = db;\n }\n\n return db;\n}\n\nfunction isRequiredStage(stage: string): boolean {\n return REQUIRED_STAGE_NAMES.includes(stage as (typeof REQUIRED_STAGE_NAMES)[number]);\n}\n\nexport function recordStageStatus(\n runId: number,\n stage: string,\n params: {\n status: StageLifecycleStatus;\n lastError?: string | null;\n required?: boolean;\n },\n): void {\n const database = getDb();\n database\n .prepare(`\n INSERT INTO stage_statuses (\n run_id,\n stage,\n required,\n status,\n attempt_count,\n last_error,\n created_at,\n updated_at\n ) VALUES (?, ?, ?, ?, 1, ?, datetime('now'), datetime('now'))\n ON CONFLICT(run_id, stage) DO UPDATE SET\n required = excluded.required,\n status = excluded.status,\n attempt_count = stage_statuses.attempt_count + 1,\n last_error = excluded.last_error,\n updated_at = datetime('now')\n `)\n .run(\n runId,\n stage,\n (params.required ?? isRequiredStage(stage)) ? 1 : 0,\n params.status,\n params.lastError ?? null,\n );\n}\n\nexport function getStageStatuses(runId: number): StageStatusRecord[] {\n const database = getDb();\n const rows = database\n .prepare(`\n SELECT run_id, stage, required, status, attempt_count, last_error, updated_at, created_at\n FROM stage_statuses\n WHERE run_id = ?\n ORDER BY stage\n `)\n .all(runId) as Array<{\n run_id: number;\n stage: string;\n required: number;\n status: StageLifecycleStatus;\n attempt_count: number;\n last_error: string | null;\n updated_at: string;\n created_at: string;\n }>;\n\n return rows.map(row => ({\n runId: row.run_id,\n stage: row.stage,\n required: row.required === 1,\n status: row.status,\n attemptCount: row.attempt_count,\n lastError: row.last_error,\n updatedAt: row.updated_at,\n createdAt: row.created_at,\n }));\n}\n\n/** Save a stage output. Replaces existing output for same run+stage. */\nexport function saveStageOutput(runId: number, stage: string, data: unknown): void {\n const database = getDb();\n database\n .prepare(\n `INSERT OR REPLACE INTO stage_outputs (run_id, stage, data_json)\n VALUES (?, ?, ?)`,\n )\n .run(runId, stage, JSON.stringify(data));\n}\n\n/** Get a stage output for a run. Returns null if not found. */\nexport function getStageOutput(runId: number, stage: string): T | null {\n const database = getDb();\n const row = database\n .prepare('SELECT data_json FROM stage_outputs WHERE run_id = ? AND stage = ?')\n .get(runId, stage) as { data_json: string } | undefined;\n\n return row ? JSON.parse(row.data_json) as T : null;\n}\n\n/** Get all stage outputs for a run. */\nexport function getAllStageOutputs(runId: number): Record {\n const database = getDb();\n const rows = database\n .prepare('SELECT stage, data_json FROM stage_outputs WHERE run_id = ? ORDER BY stage')\n .all(runId) as Array<{ stage: string; data_json: string }>;\n\n const result: Record = {};\n for (const row of rows) {\n result[row.stage] = JSON.parse(row.data_json);\n }\n return result;\n}\n\nexport function getStageGateIssues(runId: number): StageGateIssue[] {\n const statuses = getStageStatuses(runId);\n const statusLookup = new Map(statuses.map(status => [status.stage, status]));\n const issues: StageGateIssue[] = [];\n\n for (const stage of REQUIRED_STAGE_NAMES) {\n const status = statusLookup.get(stage);\n if (!status) {\n issues.push({\n stage,\n required: true,\n status: 'missing',\n attemptCount: 0,\n lastError: null,\n updatedAt: null,\n });\n continue;\n }\n\n if (status.status !== 'validated') {\n issues.push({\n stage,\n required: status.required,\n status: status.status,\n attemptCount: status.attemptCount,\n lastError: status.lastError,\n updatedAt: status.updatedAt,\n });\n }\n }\n\n return issues;\n}\n\n/** No-op: connection lifecycle is managed by results-db. */\nexport function closeStageDb(): void {\n // Connection is shared via results-db; call closeResultsDb() instead.\n migratedDb = null;\n}\n"],"mappings":"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","names":["getDb","db"]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-UNYQVFLT.js b/packages/plugin/dist/chunk-UNYQVFLT.js new file mode 100644 index 00000000..5bdab609 --- /dev/null +++ b/packages/plugin/dist/chunk-UNYQVFLT.js @@ -0,0 +1,1955 @@ +import { + getScanCacheDir +} from "./chunk-UORQZYNI.js"; +import { + __require +} from "./chunk-NSBPE2FW.js"; + +// lib/project-filters.ts +var TEMP_PROJECT_PREFIXES = [ + "private/tmp/", + "tmp/", + "temp/", + "var/folders/", + "private/var/" +]; +function normalizeSlashes(value) { + return value.trim().replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, ""); +} +function normalizeProjectNameValue(value) { + const normalized = value ? normalizeSlashes(value) : ""; + if (!normalized) { + return "unknown"; + } + const lower = normalized.toLowerCase(); + if (TEMP_PROJECT_PREFIXES.some((prefix) => lower.startsWith(prefix))) { + const segments = normalized.split("/").filter(Boolean); + return segments[segments.length - 1] ?? normalized; + } + return normalized; +} +function normalizeProjectFilter(value) { + const normalized = normalizeSlashes(value); + if (!normalized) { + return ""; + } + const segments = normalized.split("/").filter(Boolean); + return segments[segments.length - 1] ?? normalized; +} +function normalizeProjectFilters(includeProjects) { + if (!includeProjects?.length) { + return includeProjects; + } + const normalized = Array.from( + new Set(includeProjects.map(normalizeProjectFilter).filter(Boolean)) + ); + return normalized.length ? normalized : void 0; +} + +// lib/core/multi-source-session-scanner.ts +import { mkdir, readFile as readFile2, writeFile } from "fs/promises"; +import { join as join6 } from "path"; + +// lib/scanner/project-name-resolver.ts +import { readdirSync, statSync } from "fs"; +import { join } from "path"; +import { homedir } from "os"; + +// lib/scanner/levenshtein.ts +function levenshteinDistance(a, b) { + const m = a.length; + const n = b.length; + if (m === 0) return n; + if (n === 0) return m; + let prev = new Array(n + 1); + let curr = new Array(n + 1); + for (let j = 0; j <= n; j++) { + prev[j] = j; + } + for (let i = 1; i <= m; i++) { + curr[0] = i; + for (let j = 1; j <= n; j++) { + const cost = a[i - 1] === b[j - 1] ? 0 : 1; + curr[j] = Math.min( + prev[j] + 1, + curr[j - 1] + 1, + prev[j - 1] + cost + ); + } + [prev, curr] = [curr, prev]; + } + return prev[n]; +} + +// lib/scanner/path-encoding.ts +function isWindowsEncodedPath(encoded) { + return /^[A-Za-z]--/.test(encoded); +} +function decodeProjectPathCrossPlatform(encoded) { + if (isWindowsEncodedPath(encoded)) { + const driveLetter = encoded[0]; + const rest = encoded.slice(3); + if (!rest) return `${driveLetter}:/`; + return `${driveLetter}:/${rest.replace(/-/g, "/")}`; + } + if (encoded.startsWith("-")) { + return encoded.replace(/-/g, "/"); + } + return encoded; +} + +// lib/scanner/project-name-resolver.ts +var UNIX_TEMP_PREFIXES = ["-private-var-", "-tmp-", "-temp-", "-var-folders-"]; +var WINDOWS_TEMP_SEGMENTS = ["appdata-local-temp", "temp", "tmp"]; +var CONTAINER_DIRS = /* @__PURE__ */ new Set([ + "projects", + "repos", + "code", + "src", + "work", + "dev", + "workspace", + "github", + "development", + "coding", + "repo", + "git" +]); +var cache = /* @__PURE__ */ new Map(); +function dirExists(path) { + try { + return statSync(path).isDirectory(); + } catch { + return false; + } +} +function findClosestDirectory(parentPath, targetName) { + try { + const entries = readdirSync(parentPath, { withFileTypes: true }); + let bestMatch = null; + let bestDistance = Infinity; + for (const entry of entries) { + if (!entry.isDirectory()) continue; + const dist = levenshteinDistance(entry.name.toLowerCase(), targetName.toLowerCase()); + if (dist > 0 && dist <= 1 && dist < bestDistance) { + bestDistance = dist; + bestMatch = entry.name; + } + } + return bestMatch; + } catch { + return null; + } +} +function resolveSegments(basePath, segments) { + if (segments.length === 0) return []; + for (let len = segments.length; len >= 1; len--) { + const candidate = segments.slice(0, len).join("-"); + const candidatePath = basePath ? join(basePath, candidate) : `/${candidate}`; + if (dirExists(candidatePath)) { + const rest = resolveSegments(candidatePath, segments.slice(len)); + return [candidate, ...rest]; + } + } + const fallbackName = segments.join("-"); + if (basePath && fallbackName.length >= 4) { + const fuzzyMatch = findClosestDirectory(basePath, fallbackName); + if (fuzzyMatch) return [fuzzyMatch]; + } + return [fallbackName]; +} +function resolveProjectName(encodedDirName) { + const cached = cache.get(encodedDirName); + if (cached !== void 0) return cached; + const result = resolveProjectNameUncached(encodedDirName); + cache.set(encodedDirName, result); + return result; +} +function resolveProjectNameUncached(encodedDirName) { + if (isWindowsEncodedPath(encodedDirName)) { + return resolveWindowsPath(encodedDirName); + } + if (!encodedDirName.startsWith("-")) { + return encodedDirName || "unknown"; + } + const lower = encodedDirName.toLowerCase(); + for (const prefix of UNIX_TEMP_PREFIXES) { + if (lower.startsWith(prefix)) { + return "(temp)"; + } + } + const segments = encodedDirName.slice(1).split("-").filter(Boolean); + if (segments.length === 0) return "unknown"; + const home = homedir(); + const homeParts = home.split(/[/\\]/).filter(Boolean); + let startSegments = segments; + if (homeParts.length > 0 && segments.length > homeParts.length) { + let matchesHome = true; + for (let i = 0; i < homeParts.length; i++) { + if (segments[i] !== homeParts[i]) { + matchesHome = false; + break; + } + } + if (matchesHome) { + startSegments = segments.slice(homeParts.length); + if (startSegments.length === 0) return "unknown"; + const resolved2 = resolveSegments(home, startSegments); + return stripContainerDirs(resolved2); + } + } + const resolved = resolveSegments("", segments); + if (resolved.length === 0) return "unknown"; + return stripContainerDirs(resolved); +} +function resolveWindowsPath(encodedDirName) { + const driveLetter = encodedDirName[0]; + const rest = encodedDirName.slice(3); + if (!rest) return "unknown"; + const segments = rest.split("-").filter(Boolean); + if (segments.length === 0) return "unknown"; + const lowerRest = rest.toLowerCase(); + for (const tempSeg of WINDOWS_TEMP_SEGMENTS) { + if (lowerRest.startsWith(tempSeg)) { + return "(temp)"; + } + } + const home = homedir(); + const homeParts = home.split(/[/\\]/).filter(Boolean); + const homePartsNoDrive = homeParts[0]?.match(/^[A-Za-z]:$/) ? homeParts.slice(1) : homeParts; + if (homePartsNoDrive.length > 0 && segments.length > homePartsNoDrive.length) { + let matchesHome = true; + for (let i = 0; i < homePartsNoDrive.length; i++) { + if (segments[i] !== homePartsNoDrive[i]) { + matchesHome = false; + break; + } + } + if (matchesHome) { + const afterHome = segments.slice(homePartsNoDrive.length); + if (afterHome.length === 0) return "unknown"; + const resolved2 = resolveSegments(home, afterHome); + return stripContainerDirs(resolved2); + } + } + const driveRoot = `${driveLetter}:/`; + const resolved = resolveSegments(driveRoot, segments); + if (resolved.length === 0) return "unknown"; + return stripContainerDirs(resolved); +} +function stripContainerDirs(parts) { + if (parts.length === 0) return "unknown"; + let start = 0; + while (start < parts.length - 1 && CONTAINER_DIRS.has(parts[start].toLowerCase())) { + start++; + } + const remaining = parts.slice(start); + return remaining.join("/") || "unknown"; +} + +// lib/scanner/sources/base.ts +var BaseSessionSource = class { + /** + * Decode project path from encoded directory name. + * Handles both Unix (-Users-dev-app) and Windows (C--alphacut) formats. + */ + decodeProjectPath(encoded) { + return decodeProjectPathCrossPlatform(encoded); + } + /** + * Resolve project name from encoded directory name using filesystem probing + */ + resolveProjectName(encodedDirName) { + return resolveProjectName(encodedDirName); + } + /** + * Get project name from path (last segment) + * @deprecated Use resolveProjectName() for accurate names + */ + getProjectName(projectPath) { + const parts = projectPath.split(/[/\\]/).filter(Boolean); + const filtered = parts.filter((p) => !/^[A-Za-z]:$/.test(p)); + return filtered[filtered.length - 1] || "unknown"; + } + /** + * Calculate session duration in seconds + */ + calculateDuration(startTime, endTime) { + return Math.floor((endTime.getTime() - startTime.getTime()) / 1e3); + } + /** + * Compute session statistics from parsed messages + */ + computeStats(messages) { + let userMessageCount = 0; + let assistantMessageCount = 0; + let toolCallCount = 0; + let totalInputTokens = 0; + let totalOutputTokens = 0; + const toolsUsed = /* @__PURE__ */ new Set(); + for (const msg of messages) { + if (msg.role === "user") { + userMessageCount++; + } else { + assistantMessageCount++; + if (msg.toolCalls) { + toolCallCount += msg.toolCalls.length; + for (const tool of msg.toolCalls) { + toolsUsed.add(tool.name); + } + } + if (msg.tokenUsage) { + totalInputTokens += msg.tokenUsage.input; + totalOutputTokens += msg.tokenUsage.output; + } + } + } + return { + userMessageCount, + assistantMessageCount, + toolCallCount, + uniqueToolsUsed: Array.from(toolsUsed).sort(), + totalInputTokens, + totalOutputTokens + }; + } +}; + +// lib/scanner/sources/claude-code.ts +import { readFile, readdir, stat } from "fs/promises"; +import { join as join2, basename } from "path"; +import { homedir as homedir2 } from "os"; +var CLAUDE_PROJECTS_DIR = join2(homedir2(), ".claude", "projects"); +var ClaudeCodeSource = class extends BaseSessionSource { + name = "claude-code"; + displayName = "Claude Code"; + baseDir; + constructor(baseDir) { + super(); + this.baseDir = baseDir ?? CLAUDE_PROJECTS_DIR; + } + getBaseDir() { + return this.baseDir; + } + async isAvailable() { + try { + await stat(this.baseDir); + return true; + } catch { + return false; + } + } + async collectFileMetadata(config) { + const minSize = config?.minFileSize ?? 0; + const maxSize = config?.maxFileSize ?? Infinity; + const projectDirs = await this.listProjectDirs(); + const allFiles = []; + for (const dir of projectDirs) { + const files = await this.listSessionFiles(dir); + for (const file of files) { + try { + const stats = await stat(file); + if (stats.isFile() && stats.size >= minSize && stats.size <= maxSize) { + allFiles.push({ + filePath: file, + fileSize: stats.size, + mtime: stats.mtime, + projectDirName: basename(dir), + source: this.name + }); + } + } catch { + } + } + } + return allFiles; + } + async extractMetadata(filePath, content) { + const lines = content.split("\n").filter((l) => l.trim()); + if (lines.length === 0) return null; + const fileName = basename(filePath, ".jsonl"); + let messageCount = 0; + let firstTimestamp = null; + let lastTimestamp = null; + for (const line of lines) { + const parsed = this.parseJSONLLine(line); + if (parsed && (parsed.type === "user" || parsed.type === "assistant")) { + messageCount++; + const ts = new Date(parsed.timestamp); + if (!firstTimestamp || ts < firstTimestamp) { + firstTimestamp = ts; + } + if (!lastTimestamp || ts > lastTimestamp) { + lastTimestamp = ts; + } + } + } + if (!firstTimestamp || !lastTimestamp) return null; + const projectDirName = basename(join2(filePath, "..")); + const projectPath = this.decodeProjectPath(projectDirName); + const durationSeconds = this.calculateDuration(firstTimestamp, lastTimestamp); + return { + sessionId: fileName, + projectPath, + projectName: this.resolveProjectName(projectDirName), + timestamp: firstTimestamp, + messageCount, + durationSeconds, + filePath, + source: this.name + }; + } + async parseSessionContent(sessionId, projectPath, projectName, content) { + const lines = this.parseJSONLContent(content); + if (lines.length === 0) return null; + const timestamps = lines.map((m) => new Date(m.timestamp)); + const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime()))); + const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime()))); + const durationSeconds = this.calculateDuration(startTime, endTime); + const claudeCodeVersion = lines[0].version || "unknown"; + const toolResultsMap = /* @__PURE__ */ new Map(); + for (const line of lines) { + if (line.type === "user") { + const msgContent = line.message.content; + if (Array.isArray(msgContent)) { + for (const block of msgContent) { + if (block.type === "tool_result" && "tool_use_id" in block) { + const resultContent = typeof block.content === "string" ? block.content : JSON.stringify(block.content); + toolResultsMap.set(block.tool_use_id, { + content: resultContent, + isError: block.is_error ?? false + }); + } + } + } + } + } + const messages = []; + for (const line of lines) { + if (line.type === "user") { + const textContent = this.extractTextContent(line.message.content); + if (!textContent.trim()) continue; + messages.push({ + uuid: line.uuid, + role: "user", + timestamp: new Date(line.timestamp), + content: textContent, + ...line.isMeta ? { isMeta: true } : {}, + ...typeof line.sourceToolUseID === "string" ? { sourceToolUseID: line.sourceToolUseID } : {}, + ...line.toolUseResult !== void 0 ? { toolUseResult: line.toolUseResult } : {} + }); + } else if (line.type === "assistant") { + const textContent = this.extractTextContent(line.message.content); + const toolCalls = Array.isArray(line.message.content) ? this.extractToolCalls(line.message.content, toolResultsMap) : void 0; + messages.push({ + uuid: line.uuid, + role: "assistant", + timestamp: new Date(line.timestamp), + content: textContent, + toolCalls, + tokenUsage: line.message.usage ? { + input: line.message.usage.input_tokens, + output: line.message.usage.output_tokens + } : void 0 + }); + } + } + if (messages.length === 0) return null; + const stats = this.computeStats(messages); + return { + sessionId, + projectPath, + projectName, + startTime, + endTime, + durationSeconds, + claudeCodeVersion, + messages, + stats, + source: this.name + }; + } + async readSessionContent(filePath) { + return readFile(filePath, "utf-8"); + } + // ───────────────────────────────────────────────────────────────────────── + // Private helper methods + // ───────────────────────────────────────────────────────────────────────── + async listProjectDirs() { + try { + const entries = await readdir(this.baseDir); + const dirs = []; + for (const entry of entries) { + const fullPath = join2(this.baseDir, entry); + try { + const stats = await stat(fullPath); + if (stats.isDirectory()) { + dirs.push(fullPath); + } + } catch { + } + } + return dirs; + } catch { + return []; + } + } + async listSessionFiles(projectDir) { + try { + const files = await readdir(projectDir); + return files.filter((f) => f.endsWith(".jsonl")).map((f) => join2(projectDir, f)); + } catch { + return []; + } + } + parseJSONLLine(line) { + const trimmed = line.trim(); + if (!trimmed) return null; + try { + return JSON.parse(trimmed); + } catch { + return null; + } + } + parseJSONLContent(content) { + const lines = []; + for (const line of content.split("\n")) { + const trimmed = line.trim(); + if (!trimmed) continue; + try { + const parsed = JSON.parse(trimmed); + if (parsed.type === "user" || parsed.type === "assistant") { + lines.push(parsed); + } + } catch { + } + } + return lines; + } + extractTextContent(content) { + if (typeof content === "string") return content; + const textParts = []; + for (const block of content) { + if (block.type === "text" && "text" in block) { + textParts.push(block.text); + } + } + return textParts.join("\n"); + } + extractToolCalls(content, toolResultsMap) { + const toolCalls = []; + for (const block of content) { + if (block.type === "tool_use" && "id" in block && "name" in block) { + const result = toolResultsMap.get(block.id); + toolCalls.push({ + id: block.id, + name: block.name, + input: block.input || {}, + result: result?.content, + isError: result?.isError + }); + } + } + return toolCalls.length > 0 ? toolCalls : void 0; + } +}; +var claudeCodeSource = new ClaudeCodeSource(); + +// lib/scanner/sources/cursor.ts +import { readdir as readdir2, stat as stat2 } from "fs/promises"; +import { join as join3, basename as basename2, dirname } from "path"; +import { homedir as homedir3 } from "os"; + +// lib/scanner/tool-mapping.ts +var TOOL_MAPPING = { + /** + * Claude Code uses PascalCase tool names + * No mapping needed - this is the canonical format + */ + "claude-code": {}, + /** + * Cursor uses snake_case tool names + * Map to Claude Code equivalents + */ + "cursor": { + // File operations + "read_file": "Read", + "write_file": "Write", + "edit_file": "Edit", + "list_dir": "Bash", + // ls equivalent + "list_directory": "Bash", + "LS": "Bash", + // Cursor's PascalCase variant + // Search operations + "grep_search": "Grep", + "file_search": "Glob", + "codebase_search": "Grep", + "search": "Grep", + // Terminal operations + "run_terminal_cmd": "Bash", + "run_command": "Bash", + "terminal": "Bash", + // Web operations + "web_search": "WebSearch", + "fetch_url": "WebFetch", + "browser": "WebFetch", + // Code operations + "code_edit": "Edit", + "apply_diff": "Edit", + "insert_code": "Edit", + "replace_code": "Edit", + "ApplyPatch": "Edit", + // Cursor's PascalCase variant + // Shell operations (Cursor uses 'Shell' directly) + "Shell": "Bash", + // Notebook operations + "notebook_edit": "NotebookEdit", + "jupyter": "NotebookEdit", + // MCP/Plugin operations + "mcp_call": "Skill", + "plugin": "Skill", + // Task/Agent operations + "spawn_agent": "Task", + "delegate": "Task", + // Misc + "ask_user": "AskUserQuestion", + "user_input": "AskUserQuestion" + }, + /** + * Cursor Composer uses the same snake_case tool names as Cursor + * Reuses the same mapping for consistency + */ + "cursor-composer": { + // File operations + "read_file": "Read", + "write_file": "Write", + "edit_file": "Edit", + "list_dir": "Bash", + "list_directory": "Bash", + "LS": "Bash", + // Search operations + "grep_search": "Grep", + "file_search": "Glob", + "codebase_search": "Grep", + "search": "Grep", + // Terminal operations + "run_terminal_cmd": "Bash", + "run_command": "Bash", + "terminal": "Bash", + // Web operations + "web_search": "WebSearch", + "fetch_url": "WebFetch", + "browser": "WebFetch", + // Code operations + "code_edit": "Edit", + "apply_diff": "Edit", + "insert_code": "Edit", + "replace_code": "Edit", + "ApplyPatch": "Edit", + // Shell operations + "Shell": "Bash", + // Notebook operations + "notebook_edit": "NotebookEdit", + "jupyter": "NotebookEdit", + // MCP/Plugin operations + "mcp_call": "Skill", + "plugin": "Skill", + // Task/Agent operations + "spawn_agent": "Task", + "delegate": "Task", + // Misc + "ask_user": "AskUserQuestion", + "user_input": "AskUserQuestion" + } +}; +function normalizeToolName(toolName, source) { + const mapping = TOOL_MAPPING[source]; + if (mapping && toolName in mapping) { + return mapping[toolName]; + } + return toolName; +} +var CURSOR_COMPOSER_TOOL_IDS = { + 15: "run_terminal_cmd", + 38: "edit_file", + 39: "list_dir", + 40: "write_file" +}; +function resolveComposerToolId(numericId) { + const toolName = CURSOR_COMPOSER_TOOL_IDS[numericId]; + if (toolName) { + return normalizeToolName(toolName, "cursor-composer"); + } + return `tool_${numericId}`; +} + +// lib/scanner/sources/sqlite-loader.ts +var cachedConstructor = null; +var loadAttempted = false; +async function loadSqlite() { + if (loadAttempted) return cachedConstructor; + loadAttempted = true; + try { + const sqlite = await import("better-sqlite3"); + cachedConstructor = sqlite.default ?? sqlite; + return cachedConstructor; + } catch { + return null; + } +} + +// lib/scanner/sources/cursor.ts +var CURSOR_CHATS_DIR = join3(homedir3(), ".cursor", "chats"); +var CursorSource = class extends BaseSessionSource { + name = "cursor"; + displayName = "Cursor"; + baseDir; + constructor(baseDir) { + super(); + this.baseDir = baseDir ?? CURSOR_CHATS_DIR; + } + getBaseDir() { + return this.baseDir; + } + async isAvailable() { + try { + await stat2(this.baseDir); + const Database = await loadSqlite(); + return Database !== null; + } catch { + return false; + } + } + async collectFileMetadata(config) { + const minSize = config?.minFileSize ?? 0; + const maxSize = config?.maxFileSize ?? Infinity; + const allFiles = []; + try { + const workspaceDirs = await this.listWorkspaceDirs(); + for (const workspaceDir of workspaceDirs) { + const sessionDirs = await this.listSessionDirs(workspaceDir); + for (const sessionDir of sessionDirs) { + const storeDbPath = join3(sessionDir, "store.db"); + try { + const stats = await stat2(storeDbPath); + if (stats.isFile() && stats.size >= minSize && stats.size <= maxSize) { + const workspaceHash = basename2(workspaceDir); + allFiles.push({ + filePath: storeDbPath, + fileSize: stats.size, + mtime: stats.mtime, + projectDirName: workspaceHash, + source: this.name + }); + } + } catch { + } + } + } + } catch { + } + return allFiles; + } + async extractMetadata(filePath, _content) { + const Database = await loadSqlite(); + if (!Database) return null; + try { + const db = new Database(filePath); + try { + const conversation = this.parseConversation(db); + if (!conversation || conversation.messages.length === 0) { + db.close(); + return null; + } + const messages = conversation.messages.filter( + (m) => m.role === "user" || m.role === "assistant" + ); + if (messages.length === 0) { + db.close(); + return null; + } + const timestamps = messages.map((m) => this.extractTimestamp(m)).filter((t) => t !== null); + if (timestamps.length === 0) { + db.close(); + return null; + } + const firstTimestamp = new Date( + Math.min(...timestamps.map((t) => t.getTime())) + ); + const lastTimestamp = new Date( + Math.max(...timestamps.map((t) => t.getTime())) + ); + const sessionDir = dirname(filePath); + const sessionId = basename2(sessionDir); + const workspaceDir = dirname(sessionDir); + const workspaceHash = basename2(workspaceDir); + const projectPath = conversation.metadata?.workspacePath ?? conversation.metadata?.projectPath ?? this.decodeProjectPath(workspaceHash); + db.close(); + return { + sessionId, + projectPath, + projectName: this.getProjectName(projectPath), + timestamp: firstTimestamp, + messageCount: messages.length, + durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp), + filePath, + source: this.name + }; + } catch { + db.close(); + return null; + } + } catch { + return null; + } + } + async parseSessionContent(sessionId, projectPath, _projectName, _content) { + return null; + } + /** + * Parse session directly from SQLite file + */ + async parseFromFile(filePath) { + const Database = await loadSqlite(); + if (!Database) return null; + let db = null; + try { + db = new Database(filePath); + const conversation = this.parseConversation(db); + if (!conversation || conversation.messages.length === 0) { + return null; + } + const sessionDir = dirname(filePath); + const sessionId = basename2(sessionDir); + const workspaceDir = dirname(sessionDir); + const workspaceHash = basename2(workspaceDir); + const projectPath = conversation.metadata?.workspacePath ?? conversation.metadata?.projectPath ?? this.decodeProjectPath(workspaceHash); + const toolResultsMap = /* @__PURE__ */ new Map(); + for (const msg of conversation.messages) { + if (msg.role === "tool") { + if (Array.isArray(msg.content)) { + for (const block of msg.content) { + if (block.type === "tool-result") { + const resultBlock = block; + if (resultBlock.toolCallId) { + const resultText = resultBlock.result || ""; + const isError = resultText.toLowerCase().includes("error"); + toolResultsMap.set(resultBlock.toolCallId, { + content: resultText, + isError, + toolName: resultBlock.toolName || "unknown" + }); + } + } + } + } + if (msg.toolResults) { + for (const result of msg.toolResults) { + const toolId = result.tool_use_id ?? result.toolCallId; + if (toolId) { + toolResultsMap.set(toolId, { + content: result.content, + isError: result.isError ?? result.is_error ?? false, + toolName: "unknown" + }); + } + } + } + } + } + const messages = []; + for (const msg of conversation.messages) { + if (msg.role === "user") { + const content = typeof msg.content === "string" ? msg.content : msg.text ?? ""; + if (!content.trim()) continue; + messages.push({ + uuid: msg.id ?? this.generateUUID(), + role: "user", + timestamp: this.extractTimestamp(msg) ?? /* @__PURE__ */ new Date(), + content + }); + } else if (msg.role === "assistant") { + const { textContent, toolCallBlocks } = this.parseAssistantContent(msg); + const toolCalls = this.extractToolCallsFromBlocks(toolCallBlocks, toolResultsMap); + const legacyToolCalls = this.extractLegacyToolCalls(msg, toolResultsMap); + const allToolCalls = toolCalls.length > 0 ? toolCalls : legacyToolCalls && legacyToolCalls.length > 0 ? legacyToolCalls : void 0; + messages.push({ + uuid: msg.id ?? this.generateUUID(), + role: "assistant", + timestamp: this.extractTimestamp(msg) ?? /* @__PURE__ */ new Date(), + content: textContent, + toolCalls: allToolCalls + }); + } + } + if (messages.length === 0) return null; + const timestamps = messages.map((m) => m.timestamp); + const startTime = new Date( + Math.min(...timestamps.map((t) => t.getTime())) + ); + const endTime = new Date( + Math.max(...timestamps.map((t) => t.getTime())) + ); + const stats = this.computeStats(messages); + return { + sessionId, + projectPath, + startTime, + endTime, + durationSeconds: this.calculateDuration(startTime, endTime), + claudeCodeVersion: "cursor", + // Use 'cursor' as version identifier + messages, + stats, + source: this.name + }; + } catch { + return null; + } finally { + db?.close(); + } + } + async readSessionContent(filePath) { + return ""; + } + // ───────────────────────────────────────────────────────────────────────── + // Private helper methods + // ───────────────────────────────────────────────────────────────────────── + /** + * List all subdirectories within a given directory + */ + async listSubdirectories(parentDir) { + try { + const entries = await readdir2(parentDir); + const dirs = []; + for (const entry of entries) { + const fullPath = join3(parentDir, entry); + try { + const stats = await stat2(fullPath); + if (stats.isDirectory()) { + dirs.push(fullPath); + } + } catch { + } + } + return dirs; + } catch { + return []; + } + } + async listWorkspaceDirs() { + return this.listSubdirectories(this.baseDir); + } + async listSessionDirs(workspaceDir) { + return this.listSubdirectories(workspaceDir); + } + parseConversation(db) { + try { + const stmt = db.prepare("SELECT id, data FROM blobs"); + const rows = stmt.all(); + if (rows.length === 0) return null; + const messages = []; + let metadata; + for (const row of rows) { + try { + const data = this.parseBlob(row.data); + if (!data) continue; + if (data.messages && Array.isArray(data.messages)) { + messages.push(...data.messages); + } else if (data.role) { + const msg = { + id: data.id ?? row.id, + role: data.role, + // Preserve content array for assistant messages (contains tool-call blocks) + content: data.content, + text: data.text, + timestamp: data.timestamp, + createdAt: data.createdAt, + toolCalls: data.toolCalls ?? data.tool_calls, + signature: data.signature + }; + if (Array.isArray(data.content) && msg.role === "tool") { + for (const block of data.content) { + if (block.type === "tool-result" && typeof block.result === "string") { + const toolId = block.toolCallId; + if (toolId) { + msg.toolResults = msg.toolResults ?? []; + msg.toolResults.push({ + toolCallId: toolId, + content: block.result, + isError: block.result.toLowerCase().includes("error") + }); + } + } + } + } + if (msg.role !== "system") { + messages.push(msg); + } + } + if (data.metadata || data.workspacePath) { + metadata = { + workspacePath: data.workspacePath ?? data.metadata?.workspacePath, + projectPath: data.projectPath ?? data.metadata?.projectPath, + createdAt: data.createdAt ?? data.metadata?.createdAt, + updatedAt: data.updatedAt ?? data.metadata?.updatedAt + }; + } + } catch { + } + } + messages.sort((a, b) => { + const tsA = this.extractTimestamp(a); + const tsB = this.extractTimestamp(b); + if (!tsA || !tsB) return 0; + return tsA.getTime() - tsB.getTime(); + }); + return { + id: this.generateUUID(), + messages, + metadata + }; + } catch { + return null; + } + } + parseBlob(data) { + try { + const text = data.toString("utf-8"); + return JSON.parse(text); + } catch { + } + try { + const zlib = __require("zlib"); + const decompressed = zlib.inflateSync(data); + return JSON.parse(decompressed.toString("utf-8")); + } catch { + } + try { + return this.parseProtobuf(data); + } catch { + } + return null; + } + /** + * Parse a varint from buffer at given offset + * Protobuf uses variable-length encoding for integers + */ + parseVarint(data, offset) { + if (offset >= data.length) return null; + let value = 0; + let shift = 0; + let bytesRead = 0; + const MAX_VARINT_BYTES = 10; + while (offset + bytesRead < data.length) { + const byte = data[offset + bytesRead]; + value |= (byte & 127) << shift; + bytesRead++; + const isLastByte = (byte & 128) === 0; + if (isLastByte) break; + shift += 7; + if (bytesRead > MAX_VARINT_BYTES) return null; + } + return { value, bytesRead }; + } + /** + * Parse Cursor protobuf blob format + * + * Cursor stores some messages in a simple protobuf format: + * - field1 (wire2): text content (message body, tool results) + * - field2 (wire2): UUID (message ID) + * - field3 (wire2): usually empty + * - field4 (wire2): nested JSON (full message object) + * + * Wire type 2 = length-delimited (string, bytes, embedded messages) + */ + parseProtobuf(data) { + const fields = /* @__PURE__ */ new Map(); + let offset = 0; + while (offset < data.length) { + const tagVarint = this.parseVarint(data, offset); + if (!tagVarint) break; + const tag = tagVarint.value; + const fieldNumber = tag >> 3; + const wireType = tag & 7; + offset += tagVarint.bytesRead; + let fieldContent; + switch (wireType) { + case 0: { + const varint = this.parseVarint(data, offset); + if (!varint) break; + fieldContent = varint.value; + offset += varint.bytesRead; + break; + } + case 1: { + if (offset + 8 > data.length) return null; + fieldContent = data.subarray(offset, offset + 8); + offset += 8; + break; + } + case 2: { + const lengthVarint = this.parseVarint(data, offset); + if (!lengthVarint) return null; + const length = lengthVarint.value; + offset += lengthVarint.bytesRead; + if (offset + length > data.length) return null; + fieldContent = data.subarray(offset, offset + length); + offset += length; + break; + } + case 5: { + if (offset + 4 > data.length) return null; + fieldContent = data.subarray(offset, offset + 4); + offset += 4; + break; + } + default: + return null; + } + if (!fields.has(fieldNumber)) { + fields.set(fieldNumber, []); + } + fields.get(fieldNumber).push({ wireType, content: fieldContent }); + } + return this.mapProtobufFields(fields); + } + /** + * Map protobuf fields to a message-like structure + */ + mapProtobufFields(fields) { + const field4 = fields.get(4); + if (field4 && field4.length > 0) { + for (const { content } of field4) { + if (Buffer.isBuffer(content)) { + try { + const jsonStr = content.toString("utf-8"); + const parsed = JSON.parse(jsonStr); + if (parsed && (parsed.role || parsed.messages || parsed.content)) { + return parsed; + } + } catch { + } + } + } + } + const result = {}; + const field1 = fields.get(1); + if (field1 && field1.length > 0) { + const { content } = field1[0]; + if (Buffer.isBuffer(content)) { + const text = content.toString("utf-8"); + if (text.length > 0 && this.isPrintableText(text)) { + result.text = text; + } + } + } + const field2 = fields.get(2); + if (field2 && field2.length > 0) { + const { content } = field2[0]; + if (Buffer.isBuffer(content)) { + const uuid = content.toString("utf-8"); + if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid)) { + result.id = uuid; + } + } + } + if (Object.keys(result).length > 0) { + return result; + } + return null; + } + /** + * Check if a string is printable text (not binary garbage) + */ + isPrintableText(str) { + const sample = str.substring(0, 100); + return /^[\x20-\x7E\n\r\t\u00A0-\uFFFF]+$/.test(sample); + } + /** + * Convert Unix timestamp to Date, handling both seconds and milliseconds + */ + unixToDate(timestamp) { + const MILLISECONDS_THRESHOLD = 1e12; + const normalizedTs = timestamp > MILLISECONDS_THRESHOLD ? timestamp : timestamp * 1e3; + return new Date(normalizedTs); + } + extractTimestamp(msg) { + if (msg.timestamp) return new Date(msg.timestamp); + if (msg.createdAt) return this.unixToDate(msg.createdAt); + return null; + } + /** + * Parse assistant message content array to extract text and tool-call blocks + * Cursor stores tool calls in the content array with type: 'tool-call' + */ + parseAssistantContent(msg) { + const textParts = []; + const toolCallBlocks = []; + if (typeof msg.content === "string") { + return { textContent: msg.content, toolCallBlocks: [] }; + } + if (!Array.isArray(msg.content)) { + return { textContent: msg.text ?? "", toolCallBlocks: [] }; + } + for (const block of msg.content) { + if (block.type === "text" && typeof block.text === "string") { + textParts.push(block.text); + } else if (block.type === "reasoning" && typeof block.text === "string") { + textParts.push(block.text); + } else if (block.type === "tool-call") { + const toolBlock = block; + if (toolBlock.toolCallId && toolBlock.toolName) { + toolCallBlocks.push(toolBlock); + } + } + } + return { + textContent: textParts.join("\n"), + toolCallBlocks + }; + } + /** + * Extract tool calls from Cursor's tool-call blocks + */ + extractToolCallsFromBlocks(blocks, toolResultsMap) { + const toolCalls = []; + for (const block of blocks) { + const id = block.toolCallId; + const name = block.toolName; + const input = block.args || {}; + const result = toolResultsMap.get(id); + const normalizedName = normalizeToolName(name, this.name); + toolCalls.push({ + id, + name: normalizedName, + input, + result: result?.content, + isError: result?.isError + }); + } + return toolCalls; + } + /** + * Extract tool calls from legacy toolCalls/tool_calls fields + */ + extractLegacyToolCalls(msg, toolResultsMap) { + const rawCalls = msg.toolCalls ?? msg.tool_calls ?? []; + if (rawCalls.length === 0) return void 0; + const toolCalls = []; + for (const call of rawCalls) { + const name = call.name ?? call.function?.name ?? "unknown"; + const id = call.id ?? this.generateUUID(); + let input = {}; + if (call.input) { + input = call.input; + } else if (call.arguments) { + try { + input = typeof call.arguments === "string" ? JSON.parse(call.arguments) : call.arguments; + } catch { + input = { raw: call.arguments }; + } + } else if (call.function?.arguments) { + try { + input = typeof call.function.arguments === "string" ? JSON.parse(call.function.arguments) : call.function.arguments; + } catch { + input = { raw: call.function.arguments }; + } + } + const result = toolResultsMap.get(id); + const normalizedName = normalizeToolName(name, this.name); + toolCalls.push({ + id, + name: normalizedName, + input, + result: result?.content, + isError: result?.isError + }); + } + return toolCalls.length > 0 ? toolCalls : void 0; + } + generateUUID() { + return "cursor-" + Math.random().toString(36).substring(2, 15); + } +}; +var cursorSource = new CursorSource(); + +// lib/scanner/sources/cursor-composer.ts +import { stat as stat3 } from "fs/promises"; + +// lib/scanner/sources/cursor-paths.ts +import { join as join4 } from "path"; +import { homedir as homedir4, platform } from "os"; +function getCursorUserDir() { + const home = homedir4(); + switch (platform()) { + case "darwin": + return join4(home, "Library", "Application Support", "Cursor", "User"); + case "win32": + return join4(process.env.APPDATA ?? join4(home, "AppData", "Roaming"), "Cursor", "User"); + default: + return join4(home, ".config", "Cursor", "User"); + } +} +function getCursorGlobalStoragePath() { + return join4(getCursorUserDir(), "globalStorage"); +} +function getCursorGlobalStateDbPath() { + return join4(getCursorGlobalStoragePath(), "state.vscdb"); +} + +// lib/scanner/sources/cursor-composer.ts +var CursorComposerSource = class extends BaseSessionSource { + name = "cursor-composer"; + displayName = "Cursor Composer"; + dbPath; + constructor(dbPath) { + super(); + this.dbPath = dbPath ?? getCursorGlobalStateDbPath(); + } + getBaseDir() { + return this.dbPath; + } + async isAvailable() { + try { + await stat3(this.dbPath); + const Database = await loadSqlite(); + return Database !== null; + } catch { + return false; + } + } + /** + * Collect file metadata for all composer sessions in state.vscdb. + * + * Each composerId becomes a virtual "file" entry with a synthetic path + * of the form: state.vscdb#{composerId} + */ + async collectFileMetadata(config) { + const Database = await loadSqlite(); + if (!Database) return []; + let db = null; + try { + db = new Database(this.dbPath, { readonly: true }); + const composerIds = this.listComposerIds(db); + const results = []; + for (const composerId of composerIds) { + try { + const data = this.getComposerData(db, composerId); + if (!data) continue; + const bubbleCount = this.countBubbles(db, composerId); + const estimatedSize = bubbleCount * 2048; + if (config?.minFileSize && estimatedSize < config.minFileSize) continue; + if (config?.maxFileSize && estimatedSize > config.maxFileSize) continue; + const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbles(db, composerId) ?? "unknown"; + const createdAt = data.createdAt ? new Date(data.createdAt) : /* @__PURE__ */ new Date(); + const lastUpdated = data.lastUpdatedAt ? new Date(data.lastUpdatedAt) : createdAt; + results.push({ + filePath: `${this.dbPath}#${composerId}`, + fileSize: estimatedSize, + mtime: lastUpdated, + projectDirName: this.encodeProjectDir(projectDir), + source: this.name + }); + } catch { + } + } + return results; + } catch { + return []; + } finally { + db?.close(); + } + } + async extractMetadata(filePath, _content) { + const composerId = this.extractComposerId(filePath); + if (!composerId) return null; + const Database = await loadSqlite(); + if (!Database) return null; + let db = null; + try { + db = new Database(this.dbPath, { readonly: true }); + const data = this.getComposerData(db, composerId); + if (!data) return null; + const bubbles = this.getBubbles(db, composerId); + const conversationBubbles = bubbles.filter((b) => b.type === 1 || b.type === 2); + if (conversationBubbles.length === 0) return null; + const timestamps = conversationBubbles.map((b) => b.createdAt ? new Date(b.createdAt) : null).filter((t) => t !== null && !isNaN(t.getTime())); + if (timestamps.length === 0) return null; + const firstTimestamp = new Date(Math.min(...timestamps.map((t) => t.getTime()))); + const lastTimestamp = new Date(Math.max(...timestamps.map((t) => t.getTime()))); + const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbleList(bubbles) ?? "unknown"; + return { + sessionId: composerId, + projectPath: projectDir, + projectName: this.getProjectName(projectDir), + timestamp: firstTimestamp, + messageCount: conversationBubbles.length, + durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp), + filePath, + source: this.name + }; + } catch { + return null; + } finally { + db?.close(); + } + } + async parseSessionContent(_sessionId, _projectPath, _projectName, _content) { + return null; + } + /** + * Parse a composer session directly from state.vscdb + */ + async parseFromFile(filePath) { + const composerId = this.extractComposerId(filePath); + if (!composerId) return null; + const Database = await loadSqlite(); + if (!Database) return null; + let db = null; + try { + db = new Database(this.dbPath, { readonly: true }); + const data = this.getComposerData(db, composerId); + if (!data) return null; + const bubbles = this.getBubbles(db, composerId); + if (bubbles.length === 0) return null; + const messages = this.convertBubblesToMessages(bubbles); + if (messages.length === 0) return null; + const timestamps = messages.map((m) => m.timestamp); + const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime()))); + const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime()))); + const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbleList(bubbles) ?? "unknown"; + const stats = this.computeStats(messages); + return { + sessionId: composerId, + projectPath: projectDir, + projectName: this.getProjectName(projectDir), + startTime, + endTime, + durationSeconds: this.calculateDuration(startTime, endTime), + claudeCodeVersion: "cursor-composer", + messages, + stats, + source: this.name + }; + } catch { + return null; + } finally { + db?.close(); + } + } + async readSessionContent(_filePath) { + return ""; + } + // ───────────────────────────────────────────────────────────────────────── + // Private: Database query helpers + // ───────────────────────────────────────────────────────────────────────── + /** + * List all composer IDs from composerData:* keys + */ + listComposerIds(db) { + const stmt = db.prepare( + "SELECT key FROM cursorDiskKV WHERE key LIKE 'composerData:%'" + ); + const rows = stmt.all(); + return rows.map((r) => r.key.replace("composerData:", "")); + } + /** + * Get composer metadata for a specific composer ID + */ + getComposerData(db, composerId) { + const stmt = db.prepare( + "SELECT value FROM cursorDiskKV WHERE key = ?" + ); + const row = stmt.get(`composerData:${composerId}`); + if (!row?.value) return null; + try { + return JSON.parse(row.value); + } catch { + return null; + } + } + /** + * Count bubbles for a composer session + */ + countBubbles(db, composerId) { + const stmt = db.prepare( + "SELECT COUNT(*) as count FROM cursorDiskKV WHERE key LIKE ?" + ); + const row = stmt.get(`bubbleId:${composerId}:%`); + return row?.count ?? 0; + } + /** + * Get all bubbles for a composer session, sorted by creation time + */ + getBubbles(db, composerId) { + const stmt = db.prepare( + "SELECT key, value FROM cursorDiskKV WHERE key LIKE ?" + ); + const rows = stmt.all(`bubbleId:${composerId}:%`); + const bubbles = []; + for (const row of rows) { + try { + const bubble = JSON.parse(row.value); + bubbles.push(bubble); + } catch { + } + } + bubbles.sort((a, b) => { + const timeA = a.createdAt ? new Date(a.createdAt).getTime() : 0; + const timeB = b.createdAt ? new Date(b.createdAt).getTime() : 0; + return timeA - timeB; + }); + return bubbles; + } + /** + * Get project directory from the first bubble that has workspaceProjectDir + */ + getProjectDirFromBubbles(db, composerId) { + const stmt = db.prepare( + "SELECT value FROM cursorDiskKV WHERE key LIKE ? LIMIT 20" + ); + const rows = stmt.all(`bubbleId:${composerId}:%`); + for (const row of rows) { + try { + const bubble = JSON.parse(row.value); + if (bubble.workspaceProjectDir) { + return bubble.workspaceProjectDir; + } + } catch { + } + } + return null; + } + /** + * Get project directory from already-loaded bubbles + */ + getProjectDirFromBubbleList(bubbles) { + for (const bubble of bubbles) { + if (bubble.workspaceProjectDir) { + return bubble.workspaceProjectDir; + } + } + return null; + } + // ───────────────────────────────────────────────────────────────────────── + // Private: Bubble → ParsedMessage conversion + // ───────────────────────────────────────────────────────────────────────── + /** + * Convert sorted bubbles into ParsedMessages. + * + * Conversion rules: + * - User bubbles (type=1): → ParsedMessage { role: 'user' } + * - Assistant text bubbles (type=2, has text): → ParsedMessage { role: 'assistant' } + * - Assistant tool bubbles (type=2, has toolFormerData): → append toolCall to previous assistant message + * - Thinking bubbles (type=2, has thinking): → skip (not relevant for analysis) + * - Empty bubbles (type=2, no text, no tool): → skip + * + * Consecutive assistant tool bubbles are merged into the preceding text message. + */ + convertBubblesToMessages(bubbles) { + const messages = []; + let currentAssistant = null; + for (const bubble of bubbles) { + if (bubble.type === 1) { + const text = bubble.text?.trim(); + if (!text) continue; + currentAssistant = null; + messages.push({ + uuid: this.generateUUID(), + role: "user", + timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), + content: text + }); + } else if (bubble.type === 2) { + const hasText = bubble.text && bubble.text.trim().length > 0; + const hasTool = bubble.toolFormerData != null; + const hasThinking = bubble.thinking?.text != null; + if (hasThinking && !hasText && !hasTool) { + continue; + } + if (hasText) { + currentAssistant = { + uuid: this.generateUUID(), + role: "assistant", + timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), + content: bubble.text.trim(), + toolCalls: [], + tokenUsage: this.extractTokenUsage(bubble) + }; + messages.push(currentAssistant); + } + if (hasTool) { + const toolCall = this.convertToolFormerData(bubble.toolFormerData); + if (toolCall) { + if (currentAssistant) { + if (!currentAssistant.toolCalls) { + currentAssistant.toolCalls = []; + } + currentAssistant.toolCalls.push(toolCall); + } else { + currentAssistant = { + uuid: this.generateUUID(), + role: "assistant", + timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), + content: "", + toolCalls: [toolCall], + tokenUsage: this.extractTokenUsage(bubble) + }; + messages.push(currentAssistant); + } + } + } + if (bubble.tokenCount && currentAssistant) { + const usage = this.extractTokenUsage(bubble); + if (usage && (usage.input > 0 || usage.output > 0)) { + currentAssistant.tokenUsage = usage; + } + } + } + } + for (const msg of messages) { + if (msg.toolCalls && msg.toolCalls.length === 0) { + delete msg.toolCalls; + } + } + return messages; + } + /** + * Convert toolFormerData to a ToolCall + */ + convertToolFormerData(toolData) { + const toolName = resolveComposerToolId(toolData.tool); + let input = {}; + if (toolData.rawArgs) { + try { + input = JSON.parse(toolData.rawArgs); + } catch { + input = { raw: toolData.rawArgs }; + } + } + return { + id: toolData.toolCallId ?? this.generateUUID(), + name: toolName, + input + }; + } + /** + * Extract token usage from bubble + */ + extractTokenUsage(bubble) { + if (!bubble.tokenCount) return void 0; + const input = bubble.tokenCount.inputTokens ?? 0; + const output = bubble.tokenCount.outputTokens ?? 0; + if (input === 0 && output === 0) return void 0; + return { input, output }; + } + // ───────────────────────────────────────────────────────────────────────── + // Private: Utility helpers + // ───────────────────────────────────────────────────────────────────────── + /** + * Extract composerId from synthetic file path: state.vscdb#{composerId} + */ + extractComposerId(filePath) { + const hashIndex = filePath.indexOf("#"); + if (hashIndex === -1) return null; + return filePath.substring(hashIndex + 1); + } + /** + * Encode a project directory path into a safe directory name. + * Replaces '/' with '-' for consistency with ClaudeCodeSource encoding. + */ + encodeProjectDir(projectDir) { + return projectDir.replace(/\//g, "-"); + } + generateUUID() { + return "composer-" + Math.random().toString(36).substring(2, 15); + } +}; +var cursorComposerSource = new CursorComposerSource(); + +// lib/scanner/sources/claude-discovery.ts +import { readdir as readdir3, stat as stat4, realpath } from "fs/promises"; +import { join as join5 } from "path"; +import { homedir as homedir5 } from "os"; +async function validateClaudeDataDir(dir) { + try { + const projectsDir = join5(dir, "projects"); + const projectsStat = await stat4(projectsDir); + if (!projectsStat.isDirectory()) return false; + const entries = await readdir3(projectsDir); + for (const entry of entries) { + if (!entry.startsWith("-") && !isWindowsEncodedPath(entry)) continue; + const entryPath = join5(projectsDir, entry); + const entryStat = await stat4(entryPath); + if (!entryStat.isDirectory()) continue; + const files = await readdir3(entryPath); + if (files.some((f) => f.endsWith(".jsonl"))) { + return true; + } + } + return false; + } catch { + return false; + } +} +async function discoverClaudeDataDirs() { + const discovered = /* @__PURE__ */ new Map(); + const addIfValid = async (dir) => { + try { + const projectsDir = join5(dir, "projects"); + const resolved = await realpath(projectsDir); + if (discovered.has(resolved)) return true; + if (await validateClaudeDataDir(dir)) { + discovered.set(resolved, projectsDir); + return true; + } + } catch { + } + return false; + }; + const defaultDir = join5(homedir5(), ".claude"); + await addIfValid(defaultDir); + if (discovered.size > 0) { + return Array.from(discovered.values()); + } + try { + const home = homedir5(); + const entries = await readdir3(home); + for (const entry of entries) { + if (!entry.startsWith(".claude")) continue; + if (entry === ".claude") continue; + const candidateDir = join5(home, entry); + try { + const s = await stat4(candidateDir); + if (s.isDirectory()) { + await addIfValid(candidateDir); + } + } catch { + } + } + } catch { + } + return Array.from(discovered.values()); +} + +// lib/scanner/index.ts +var SourceRegistry = class { + sources = []; + claudeInitialized = false; + constructor() { + this.register(new CursorSource()); + this.register(new CursorComposerSource()); + } + /** + * Register a new session source + */ + register(source) { + this.sources.push(source); + } + /** + * Get all registered sources + */ + getAll() { + return [...this.sources]; + } + /** + * Get available sources (directory exists, dependencies met). + * Lazily initializes Claude Code sources on first call. + */ + async getAvailable() { + if (!this.claudeInitialized) { + await this.initClaudeSources(); + this.claudeInitialized = true; + } + const available = []; + for (const source of this.sources) { + if (await source.isAvailable()) { + available.push(source); + } + } + return available; + } + /** + * Get a specific source by name + */ + get(name) { + return this.sources.find((s) => s.name === name); + } + /** + * Discover and register Claude Code sources from available data directories. + */ + async initClaudeSources() { + const dirs = await discoverClaudeDataDirs(); + for (const dir of dirs) { + this.register(new ClaudeCodeSource(dir)); + } + } +}; +var sourceRegistry = new SourceRegistry(); +var MultiSourceScanner = class { + constructor(registry = sourceRegistry) { + this.registry = registry; + } + /** + * Collect file metadata from all available sources + */ + async collectAllFileMetadata(config) { + const sources = await this.getFilteredSources(config); + const allFiles = []; + const sourceStats = /* @__PURE__ */ new Map(); + for (const source of sources) { + const files = await source.collectFileMetadata({ + minFileSize: config?.minFileSize, + maxFileSize: config?.maxFileSize + }); + allFiles.push(...files); + sourceStats.set(source.name, files.length); + } + return { files: allFiles, sourceStats }; + } + /** + * Extract metadata for a file from the appropriate source + */ + async extractMetadata(file) { + const source = this.registry.get(file.source); + if (!source) return null; + try { + const content = await source.readSessionContent(file.filePath); + return source.extractMetadata(file.filePath, content); + } catch { + return null; + } + } + /** + * Parse a session from the appropriate source + */ + async parseSession(metadata) { + const source = this.registry.get(metadata.source); + if (!source) return null; + try { + if (metadata.source === "cursor") { + const cursorSource2 = source; + return cursorSource2.parseFromFile(metadata.filePath); + } + if (metadata.source === "cursor-composer") { + const composerSource = source; + return composerSource.parseFromFile(metadata.filePath); + } + const content = await source.readSessionContent(metadata.filePath); + return source.parseSessionContent( + metadata.sessionId, + metadata.projectPath, + metadata.projectName, + content + ); + } catch { + return null; + } + } + /** + * Get available source names + */ + async getAvailableSources() { + const sources = await this.registry.getAvailable(); + return sources.map((s) => s.name); + } + /** + * Check source availability status. + * Triggers lazy Claude source init if not yet done. + */ + async getSourceStatus() { + const available = await this.registry.getAvailable(); + const status = /* @__PURE__ */ new Map(); + for (const source of this.registry.getAll()) { + status.set(source.name, available.some((s) => s === source)); + } + return status; + } + // ───────────────────────────────────────────────────────────────────────── + // Private helpers + // ───────────────────────────────────────────────────────────────────────── + async getFilteredSources(config) { + let sources = await this.registry.getAvailable(); + if (config?.includeSources && config.includeSources.length > 0) { + sources = sources.filter((s) => config.includeSources.includes(s.name)); + } + if (config?.excludeSources && config.excludeSources.length > 0) { + sources = sources.filter((s) => !config.excludeSources.includes(s.name)); + } + return sources; + } +}; +var multiSourceScanner = new MultiSourceScanner(); + +// lib/core/multi-source-session-scanner.ts +function getParsedSessionsCachePath() { + return join6(getScanCacheDir(), "parsed-sessions.json"); +} +function isNonNull(value) { + return value !== null; +} +function serializeParsedSession(session) { + let projectName = session.projectName; + if (!projectName && session.projectPath) { + const encoded = session.projectPath.replace(/\//g, "-"); + projectName = resolveProjectName(encoded); + } + projectName = normalizeProjectNameValue(projectName); + return { + sessionId: session.sessionId, + projectPath: session.projectPath, + projectName, + startTime: session.startTime.toISOString(), + endTime: session.endTime.toISOString(), + durationSeconds: session.durationSeconds, + claudeCodeVersion: session.claudeCodeVersion, + messages: session.messages.map((message) => ({ + uuid: message.uuid, + role: message.role, + timestamp: message.timestamp.toISOString(), + content: message.content, + toolCalls: message.toolCalls, + tokenUsage: message.tokenUsage + })), + stats: session.stats, + source: session.source + }; +} +async function scanAndCacheParsedSessions() { + const { files } = await multiSourceScanner.collectAllFileMetadata({ + minFileSize: 1024, + maxFileSize: 50 * 1024 * 1024 + }); + const metadata = (await Promise.all(files.map((file) => multiSourceScanner.extractMetadata(file)))).filter(isNonNull).sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime()); + const parsedSessions = (await Promise.all(metadata.map((item) => multiSourceScanner.parseSession(item)))).filter(isNonNull).map(serializeParsedSession).sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime()); + await cacheParsedSessions(parsedSessions); + return parsedSessions; +} +async function cacheParsedSessions(sessions) { + const scanCacheDir = getScanCacheDir(); + const cachePath = getParsedSessionsCachePath(); + await mkdir(scanCacheDir, { recursive: true }); + await writeFile(cachePath, JSON.stringify(sessions, null, 2), "utf-8"); + return cachePath; +} +async function readCachedParsedSessions() { + try { + const raw = await readFile2(getParsedSessionsCachePath(), "utf-8"); + return JSON.parse(raw); + } catch (error) { + if (error instanceof Error && "code" in error && error.code === "ENOENT") { + return []; + } + throw error; + } +} + +export { + normalizeProjectNameValue, + normalizeProjectFilters, + scanAndCacheParsedSessions, + readCachedParsedSessions +}; +//# sourceMappingURL=chunk-UNYQVFLT.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-UNYQVFLT.js.map b/packages/plugin/dist/chunk-UNYQVFLT.js.map new file mode 100644 index 00000000..c0d7f3c8 --- /dev/null +++ b/packages/plugin/dist/chunk-UNYQVFLT.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../lib/project-filters.ts","../lib/core/multi-source-session-scanner.ts","../lib/scanner/project-name-resolver.ts","../lib/scanner/levenshtein.ts","../lib/scanner/path-encoding.ts","../lib/scanner/sources/base.ts","../lib/scanner/sources/claude-code.ts","../lib/scanner/sources/cursor.ts","../lib/scanner/tool-mapping.ts","../lib/scanner/sources/sqlite-loader.ts","../lib/scanner/sources/cursor-composer.ts","../lib/scanner/sources/cursor-paths.ts","../lib/scanner/sources/claude-discovery.ts","../lib/scanner/index.ts"],"sourcesContent":["/**\n * Normalize project identifiers into canonical names.\n *\n * BetterPrompt tools filter sessions by `projectName`, but setup flows may\n * sometimes persist path-like values. This helper defensively collapses those\n * values back to the terminal project segment so filtering still works.\n */\n\nconst TEMP_PROJECT_PREFIXES = [\n 'private/tmp/',\n 'tmp/',\n 'temp/',\n 'var/folders/',\n 'private/var/',\n];\n\nfunction normalizeSlashes(value: string): string {\n return value.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '').replace(/\\/+$/, '');\n}\n\nexport function normalizeProjectNameValue(value?: string | null): string {\n const normalized = value ? normalizeSlashes(value) : '';\n if (!normalized) {\n return 'unknown';\n }\n\n const lower = normalized.toLowerCase();\n if (TEMP_PROJECT_PREFIXES.some(prefix => lower.startsWith(prefix))) {\n const segments = normalized.split('/').filter(Boolean);\n return segments[segments.length - 1] ?? normalized;\n }\n\n return normalized;\n}\n\nfunction normalizeProjectFilter(value: string): string {\n const normalized = normalizeSlashes(value);\n if (!normalized) {\n return '';\n }\n\n const segments = normalized.split('/').filter(Boolean);\n return segments[segments.length - 1] ?? normalized;\n}\n\nexport function normalizeProjectFilters(includeProjects?: string[]): string[] | undefined {\n if (!includeProjects?.length) {\n return includeProjects;\n }\n\n const normalized = Array.from(\n new Set(includeProjects.map(normalizeProjectFilter).filter(Boolean)),\n );\n\n return normalized.length ? normalized : undefined;\n}\n","/**\n * Multi-source session scanner wrapper for the plugin.\n *\n * Uses the plugin's scanner library to discover and parse sessions from\n * multiple AI coding assistant sources (Claude Code, Cursor) into a\n * canonical parsed-session format.\n *\n * @module plugin/lib/core/multi-source-session-scanner\n */\n\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { multiSourceScanner } from '../scanner/index.js';\nimport type {\n SourcedParsedSession,\n} from '../scanner/index.js';\nimport { resolveProjectName } from '../scanner/project-name-resolver.js';\nimport { normalizeProjectNameValue } from '../project-filters.js';\nimport type { ParsedSession } from './types.js';\nimport { getScanCacheDir } from './session-scanner.js';\n\nfunction getParsedSessionsCachePath(): string {\n return join(getScanCacheDir(), 'parsed-sessions.json');\n}\n\nfunction isNonNull(value: T | null): value is T {\n return value !== null;\n}\n\nfunction serializeParsedSession(session: SourcedParsedSession): ParsedSession {\n // Defensive: derive projectName from projectPath if missing.\n // resolveProjectName expects the encoded form (e.g. \"-Users-foo-projects-bar\"),\n // so re-encode projectPath by replacing \"/\" with \"-\".\n let projectName = session.projectName;\n if (!projectName && session.projectPath) {\n const encoded = session.projectPath.replace(/\\//g, '-');\n projectName = resolveProjectName(encoded);\n }\n\n projectName = normalizeProjectNameValue(projectName);\n\n return {\n sessionId: session.sessionId,\n projectPath: session.projectPath,\n projectName,\n startTime: session.startTime.toISOString(),\n endTime: session.endTime.toISOString(),\n durationSeconds: session.durationSeconds,\n claudeCodeVersion: session.claudeCodeVersion,\n messages: session.messages.map(message => ({\n uuid: message.uuid,\n role: message.role,\n timestamp: message.timestamp.toISOString(),\n content: message.content,\n toolCalls: message.toolCalls,\n tokenUsage: message.tokenUsage,\n })),\n stats: session.stats,\n source: session.source,\n };\n}\n\n/**\n * Discover, parse, normalize, and cache sessions from all available sources.\n */\nexport async function scanAndCacheParsedSessions(): Promise {\n const { files } = await multiSourceScanner.collectAllFileMetadata({\n minFileSize: 1024,\n maxFileSize: 50 * 1024 * 1024,\n });\n\n const metadata = (await Promise.all(files.map(file => multiSourceScanner.extractMetadata(file))))\n .filter(isNonNull)\n .sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n\n const parsedSessions = (await Promise.all(metadata.map(item => multiSourceScanner.parseSession(item))))\n .filter(isNonNull)\n .map(serializeParsedSession)\n .sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());\n\n await cacheParsedSessions(parsedSessions);\n return parsedSessions;\n}\n\nexport async function cacheParsedSessions(sessions: ParsedSession[]): Promise {\n const scanCacheDir = getScanCacheDir();\n const cachePath = getParsedSessionsCachePath();\n await mkdir(scanCacheDir, { recursive: true });\n await writeFile(cachePath, JSON.stringify(sessions, null, 2), 'utf-8');\n return cachePath;\n}\n\nexport async function readCachedParsedSessions(): Promise {\n try {\n const raw = await readFile(getParsedSessionsCachePath(), 'utf-8');\n return JSON.parse(raw) as ParsedSession[];\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && (error as NodeJS.ErrnoException).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n}\n","/**\n * Project Name Resolver\n *\n * Resolves project names from Claude Code's encoded directory names\n * by probing the actual filesystem. This fixes the problem where\n * `decodeProjectPath` replaces ALL hyphens with slashes, losing the\n * distinction between path separators and literal hyphens in directory names.\n *\n * Algorithm: Greedy left-to-right segment matching against the filesystem.\n *\n * @example\n * \"-Users-sungmancho-projects-youtube-enlgish-mobile\"\n * → probes ~/projects/ and finds \"youtube-enlgish-mobile\" exists\n * → returns \"youtube-enlgish-mobile\"\n *\n * @module project-name-resolver\n */\n\nimport { readdirSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { levenshteinDistance } from './levenshtein.js';\nimport { isWindowsEncodedPath } from './path-encoding.js';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Temp directory prefixes that produce meaningless project names (Unix) */\nconst UNIX_TEMP_PREFIXES = ['-private-var-', '-tmp-', '-temp-', '-var-folders-'];\n\n/** Temp directory segments for Windows (after drive letter removal) */\nconst WINDOWS_TEMP_SEGMENTS = ['appdata-local-temp', 'temp', 'tmp'];\n\n/** Container directories to strip from the resolved path (case-insensitive) */\nconst CONTAINER_DIRS = new Set([\n 'projects', 'repos', 'code', 'src', 'work', 'dev', 'workspace', 'github',\n 'development', 'coding', 'repo', 'git',\n]);\n\n/** Module-level cache: encodedDirName → resolved project name */\nconst cache = new Map();\n\n// ============================================================================\n// Core Resolution\n// ============================================================================\n\n/**\n * Check if a directory exists on the filesystem.\n */\nfunction dirExists(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Find the closest directory name in `parentPath` to `targetName` using\n * Levenshtein distance. Only returns a match if distance is exactly 1.\n */\nfunction findClosestDirectory(parentPath: string, targetName: string): string | null {\n try {\n const entries = readdirSync(parentPath, { withFileTypes: true });\n let bestMatch: string | null = null;\n let bestDistance = Infinity;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n const dist = levenshteinDistance(entry.name.toLowerCase(), targetName.toLowerCase());\n if (dist > 0 && dist <= 1 && dist < bestDistance) {\n bestDistance = dist;\n bestMatch = entry.name;\n }\n }\n\n return bestMatch;\n } catch {\n return null;\n }\n}\n\n/**\n * Resolve segments starting from `basePath` using greedy matching.\n * Tries joining progressively fewer segments until a match is found.\n */\nfunction resolveSegments(basePath: string, segments: string[]): string[] {\n if (segments.length === 0) return [];\n\n for (let len = segments.length; len >= 1; len--) {\n const candidate = segments.slice(0, len).join('-');\n const candidatePath = basePath ? join(basePath, candidate) : `/${candidate}`;\n\n if (dirExists(candidatePath)) {\n const rest = resolveSegments(candidatePath, segments.slice(len));\n return [candidate, ...rest];\n }\n }\n\n const fallbackName = segments.join('-');\n if (basePath && fallbackName.length >= 4) {\n const fuzzyMatch = findClosestDirectory(basePath, fallbackName);\n if (fuzzyMatch) return [fuzzyMatch];\n }\n\n return [fallbackName];\n}\n\n/**\n * Resolve a project name from Claude Code's encoded directory name.\n *\n * @param encodedDirName - The encoded directory name (e.g. \"-Users-sungmancho-projects-betterprompt\")\n * @returns The resolved project name (e.g. \"betterprompt\")\n */\nexport function resolveProjectName(encodedDirName: string): string {\n // Check cache first\n const cached = cache.get(encodedDirName);\n if (cached !== undefined) return cached;\n\n const result = resolveProjectNameUncached(encodedDirName);\n cache.set(encodedDirName, result);\n return result;\n}\n\nfunction resolveProjectNameUncached(encodedDirName: string): string {\n // Windows encoded path: 'C--alphacut-channel'\n if (isWindowsEncodedPath(encodedDirName)) {\n return resolveWindowsPath(encodedDirName);\n }\n\n // Unix encoded path must start with '-'\n if (!encodedDirName.startsWith('-')) {\n return encodedDirName || 'unknown';\n }\n\n const lower = encodedDirName.toLowerCase();\n for (const prefix of UNIX_TEMP_PREFIXES) {\n if (lower.startsWith(prefix)) {\n return '(temp)';\n }\n }\n\n const segments = encodedDirName.slice(1).split('-').filter(Boolean);\n if (segments.length === 0) return 'unknown';\n\n const home = homedir();\n const homeParts = home.split(/[/\\\\]/).filter(Boolean);\n\n let startSegments = segments;\n\n if (homeParts.length > 0 && segments.length > homeParts.length) {\n let matchesHome = true;\n for (let i = 0; i < homeParts.length; i++) {\n if (segments[i] !== homeParts[i]) {\n matchesHome = false;\n break;\n }\n }\n\n if (matchesHome) {\n startSegments = segments.slice(homeParts.length);\n\n if (startSegments.length === 0) return 'unknown';\n\n const resolved = resolveSegments(home, startSegments);\n return stripContainerDirs(resolved);\n }\n }\n\n const resolved = resolveSegments('', segments);\n if (resolved.length === 0) return 'unknown';\n\n return stripContainerDirs(resolved);\n}\n\n/**\n * Resolve a Windows encoded path: 'C--alphacut-channel' → project name\n */\nfunction resolveWindowsPath(encodedDirName: string): string {\n const driveLetter = encodedDirName[0];\n const rest = encodedDirName.slice(3); // skip 'X--'\n\n if (!rest) return 'unknown';\n\n const segments = rest.split('-').filter(Boolean);\n if (segments.length === 0) return 'unknown';\n\n // Check for Windows temp paths\n const lowerRest = rest.toLowerCase();\n for (const tempSeg of WINDOWS_TEMP_SEGMENTS) {\n if (lowerRest.startsWith(tempSeg)) {\n return '(temp)';\n }\n }\n\n // Try to match home directory (e.g. C:\\Users\\ehdto → homeParts = ['Users','ehdto'])\n const home = homedir();\n const homeParts = home.split(/[/\\\\]/).filter(Boolean);\n\n // Remove drive letter from homeParts if present (e.g. 'C:' from 'C:\\Users\\ehdto')\n const homePartsNoDrive = homeParts[0]?.match(/^[A-Za-z]:$/)\n ? homeParts.slice(1)\n : homeParts;\n\n if (homePartsNoDrive.length > 0 && segments.length > homePartsNoDrive.length) {\n let matchesHome = true;\n for (let i = 0; i < homePartsNoDrive.length; i++) {\n if (segments[i] !== homePartsNoDrive[i]) {\n matchesHome = false;\n break;\n }\n }\n\n if (matchesHome) {\n const afterHome = segments.slice(homePartsNoDrive.length);\n if (afterHome.length === 0) return 'unknown';\n\n const resolved = resolveSegments(home, afterHome);\n return stripContainerDirs(resolved);\n }\n }\n\n // No home match — resolve from drive root\n const driveRoot = `${driveLetter}:/`;\n const resolved = resolveSegments(driveRoot, segments);\n if (resolved.length === 0) return 'unknown';\n\n return stripContainerDirs(resolved);\n}\n\n/**\n * Strip well-known container directories from the front of resolved path parts.\n */\nfunction stripContainerDirs(parts: string[]): string {\n if (parts.length === 0) return 'unknown';\n\n let start = 0;\n while (start < parts.length - 1 && CONTAINER_DIRS.has(parts[start].toLowerCase())) {\n start++;\n }\n\n const remaining = parts.slice(start);\n return remaining.join('/') || 'unknown';\n}\n\n/**\n * Batch resolve multiple encoded directory names.\n * Leverages the internal cache for efficiency.\n */\nexport function resolveProjectNames(encodedDirNames: string[]): Map {\n const results = new Map();\n for (const name of encodedDirNames) {\n results.set(name, resolveProjectName(name));\n }\n return results;\n}\n\n/**\n * Clear the resolver cache. Useful for testing.\n */\nexport function clearResolverCache(): void {\n cache.clear();\n}\n","/**\n * Levenshtein Distance\n *\n * Simple edit distance implementation for fuzzy directory name matching.\n * Used by project-name-resolver to merge renamed project directories\n * (e.g. \"alfreadworks\" → \"alfredworks\").\n *\n * No external dependencies.\n *\n * @module levenshtein\n */\n\n/**\n * Compute the Levenshtein (edit) distance between two strings.\n * Returns the minimum number of single-character edits (insertions,\n * deletions, or substitutions) needed to transform `a` into `b`.\n */\nexport function levenshteinDistance(a: string, b: string): number {\n const m = a.length;\n const n = b.length;\n\n if (m === 0) return n;\n if (n === 0) return m;\n\n let prev = new Array(n + 1);\n let curr = new Array(n + 1);\n\n for (let j = 0; j <= n; j++) {\n prev[j] = j;\n }\n\n for (let i = 1; i <= m; i++) {\n curr[0] = i;\n for (let j = 1; j <= n; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n curr[j] = Math.min(\n prev[j] + 1,\n curr[j - 1] + 1,\n prev[j - 1] + cost\n );\n }\n [prev, curr] = [curr, prev];\n }\n\n return prev[n];\n}\n","/**\n * Cross-Platform Path Encoding/Decoding\n *\n * Single source of truth for detecting and handling Windows vs Unix\n * encoded project paths from Claude Code.\n *\n * Encoding rules:\n * - Unix: /Users/dev/app → -Users-dev-app (/ → -)\n * - Windows: C:\\alphacut → C--alphacut (C:\\ → C--, \\ → -)\n *\n * Detection:\n * - Unix paths start with '-' (from leading /)\n * - Windows paths match /^[A-Za-z]--/ (drive letter + colon-backslash)\n *\n * @module path-encoding\n */\n\n/**\n * Check if an encoded directory name represents a Windows path.\n * Pattern: single letter followed by '--' (e.g. 'C--alphacut')\n */\nexport function isWindowsEncodedPath(encoded: string): boolean {\n return /^[A-Za-z]--/.test(encoded);\n}\n\n/**\n * Decode an encoded project directory name to its original filesystem path.\n * Handles both Unix and Windows encoded formats.\n *\n * @example\n * decodeProjectPathCrossPlatform('-Users-dev-app') → '/Users/dev/app'\n * decodeProjectPathCrossPlatform('C--alphacut') → 'C:/alphacut'\n * decodeProjectPathCrossPlatform('C--alphacut-tools') → 'C:/alphacut/tools'\n */\nexport function decodeProjectPathCrossPlatform(encoded: string): string {\n if (isWindowsEncodedPath(encoded)) {\n // Windows: 'C--alphacut-tools' → 'C:/alphacut/tools'\n const driveLetter = encoded[0];\n const rest = encoded.slice(3); // skip 'X--'\n if (!rest) return `${driveLetter}:/`;\n return `${driveLetter}:/${rest.replace(/-/g, '/')}`;\n }\n\n // Unix: '-Users-dev-app' → '/Users/dev/app'\n if (encoded.startsWith('-')) {\n return encoded.replace(/-/g, '/');\n }\n\n return encoded;\n}\n","/**\n * Session Source Base Interface\n *\n * Abstract interface for different AI coding assistant session sources.\n * Enables multi-source scanning while maintaining a unified data model.\n *\n * Supported sources:\n * - claude-code: Claude Code JSONL logs (~/.claude/projects/)\n * - cursor: Cursor SQLite databases (~/.cursor/chats/)\n */\n\nimport type { ParsedSession, ParsedMessage, SessionStats, SessionSourceType } from '../session-types.js';\nimport { resolveProjectName } from '../project-name-resolver.js';\nimport { decodeProjectPathCrossPlatform } from '../path-encoding.js';\n\n// Re-export SessionSourceType for convenience\nexport type { SessionSourceType };\n\n/**\n * Lightweight file/session metadata for pre-filtering (no content read)\n */\nexport interface FileMetadata {\n filePath: string;\n fileSize: number;\n mtime: Date;\n projectDirName: string;\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Session metadata with source information\n */\nexport interface SourcedSessionMetadata {\n sessionId: string;\n projectPath: string;\n projectName: string;\n timestamp: Date;\n messageCount: number;\n durationSeconds: number;\n filePath: string;\n qualityScore?: number;\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Parsed session with source information\n */\nexport interface SourcedParsedSession extends ParsedSession {\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Configuration for session discovery\n */\nexport interface DiscoveryConfig {\n /** Minimum file size to consider (bytes) */\n minFileSize?: number;\n /** Maximum file size to consider (bytes) */\n maxFileSize?: number;\n}\n\n/**\n * Session source interface\n *\n * Each source implementation handles:\n * - Discovering session files in its specific location\n * - Parsing source-specific formats into unified ParsedSession\n * - Normalizing tool names to match Claude Code conventions\n */\nexport interface SessionSource {\n /**\n * Source identifier\n */\n readonly name: SessionSourceType;\n\n /**\n * Human-readable display name\n */\n readonly displayName: string;\n\n /**\n * Get the base directory for this source\n */\n getBaseDir(): string;\n\n /**\n * Check if this source is available (directory exists, dependencies met)\n */\n isAvailable(): Promise;\n\n /**\n * Collect lightweight file metadata for pre-filtering\n * Should not read file contents - only uses fs.stat\n */\n collectFileMetadata(config?: DiscoveryConfig): Promise;\n\n /**\n * Extract session metadata from file content\n * Used for quality scoring after pre-filtering\n */\n extractMetadata(\n filePath: string,\n content: string\n ): Promise;\n\n /**\n * Parse session content into unified format\n */\n parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise;\n\n /**\n * Read raw session content from file\n */\n readSessionContent(filePath: string): Promise;\n}\n\n/**\n * Abstract base class with common utility methods\n */\nexport abstract class BaseSessionSource implements SessionSource {\n abstract readonly name: SessionSourceType;\n abstract readonly displayName: string;\n\n abstract getBaseDir(): string;\n abstract isAvailable(): Promise;\n abstract collectFileMetadata(config?: DiscoveryConfig): Promise;\n abstract extractMetadata(\n filePath: string,\n content: string\n ): Promise;\n abstract parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise;\n abstract readSessionContent(filePath: string): Promise;\n\n /**\n * Decode project path from encoded directory name.\n * Handles both Unix (-Users-dev-app) and Windows (C--alphacut) formats.\n */\n protected decodeProjectPath(encoded: string): string {\n return decodeProjectPathCrossPlatform(encoded);\n }\n\n /**\n * Resolve project name from encoded directory name using filesystem probing\n */\n protected resolveProjectName(encodedDirName: string): string {\n return resolveProjectName(encodedDirName);\n }\n\n /**\n * Get project name from path (last segment)\n * @deprecated Use resolveProjectName() for accurate names\n */\n protected getProjectName(projectPath: string): string {\n const parts = projectPath.split(/[/\\\\]/).filter(Boolean);\n // Filter out drive letter (e.g. 'C:')\n const filtered = parts.filter(p => !/^[A-Za-z]:$/.test(p));\n return filtered[filtered.length - 1] || 'unknown';\n }\n\n /**\n * Calculate session duration in seconds\n */\n protected calculateDuration(startTime: Date, endTime: Date): number {\n return Math.floor((endTime.getTime() - startTime.getTime()) / 1000);\n }\n\n /**\n * Compute session statistics from parsed messages\n */\n protected computeStats(messages: ParsedMessage[]): SessionStats {\n let userMessageCount = 0;\n let assistantMessageCount = 0;\n let toolCallCount = 0;\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n const toolsUsed = new Set();\n\n for (const msg of messages) {\n if (msg.role === 'user') {\n userMessageCount++;\n } else {\n assistantMessageCount++;\n\n if (msg.toolCalls) {\n toolCallCount += msg.toolCalls.length;\n for (const tool of msg.toolCalls) {\n toolsUsed.add(tool.name);\n }\n }\n\n if (msg.tokenUsage) {\n totalInputTokens += msg.tokenUsage.input;\n totalOutputTokens += msg.tokenUsage.output;\n }\n }\n }\n\n return {\n userMessageCount,\n assistantMessageCount,\n toolCallCount,\n uniqueToolsUsed: Array.from(toolsUsed).sort(),\n totalInputTokens,\n totalOutputTokens,\n };\n }\n}\n","/**\n * Claude Code Session Source\n *\n * Parses Claude Code session logs stored as JSONL files in ~/.claude/projects/\n *\n * File format:\n * - Path: ~/.claude/projects/{encoded-path}/{session-uuid}.jsonl\n * - Format: JSONL (one JSON object per line)\n * - Message types: user, assistant, queue-operation, file-history-snapshot\n *\n * Path encoding: Paths are encoded by replacing '/' with '-'\n * Example: /Users/dev/myapp -> -Users-dev-myapp\n */\n\nimport { readFile, readdir, stat } from 'node:fs/promises';\nimport { join, basename } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage } from '../session-types.js';\n\n/**\n * Default Claude Code projects directory.\n * @deprecated Use {@link discoverClaudeDataDirs} from `claude-discovery.ts` for robust path resolution.\n */\nexport const CLAUDE_PROJECTS_DIR = join(homedir(), '.claude', 'projects');\n\n/**\n * Content block types in Claude messages\n */\ninterface TextBlock {\n type: 'text';\n text: string;\n}\n\ninterface ToolUseBlock {\n type: 'tool_use';\n id: string;\n name: string;\n input: Record;\n}\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string | unknown;\n is_error?: boolean;\n}\n\ntype ContentBlock = TextBlock | ToolUseBlock | ToolResultBlock;\n\n/**\n * Raw JSONL line structure\n */\ninterface JSONLLine {\n type: string;\n uuid: string;\n timestamp: string;\n version?: string;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n message: {\n role?: string;\n content: string | ContentBlock[];\n usage?: {\n input_tokens: number;\n output_tokens: number;\n };\n };\n}\n\n/**\n * Claude Code session source implementation\n */\nexport class ClaudeCodeSource extends BaseSessionSource {\n readonly name = 'claude-code' as const;\n readonly displayName = 'Claude Code';\n\n private readonly baseDir: string;\n\n constructor(baseDir?: string) {\n super();\n this.baseDir = baseDir ?? CLAUDE_PROJECTS_DIR;\n }\n\n getBaseDir(): string {\n return this.baseDir;\n }\n\n async isAvailable(): Promise {\n try {\n await stat(this.baseDir);\n return true;\n } catch {\n return false;\n }\n }\n\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const minSize = config?.minFileSize ?? 0;\n const maxSize = config?.maxFileSize ?? Infinity;\n\n const projectDirs = await this.listProjectDirs();\n const allFiles: FileMetadata[] = [];\n\n for (const dir of projectDirs) {\n const files = await this.listSessionFiles(dir);\n for (const file of files) {\n try {\n const stats = await stat(file);\n if (\n stats.isFile() &&\n stats.size >= minSize &&\n stats.size <= maxSize\n ) {\n allFiles.push({\n filePath: file,\n fileSize: stats.size,\n mtime: stats.mtime,\n projectDirName: basename(dir),\n source: this.name,\n });\n }\n } catch {\n // Skip inaccessible files\n }\n }\n }\n\n return allFiles;\n }\n\n async extractMetadata(\n filePath: string,\n content: string\n ): Promise {\n const lines = content.split('\\n').filter((l) => l.trim());\n\n if (lines.length === 0) return null;\n\n const fileName = basename(filePath, '.jsonl');\n let messageCount = 0;\n let firstTimestamp: Date | null = null;\n let lastTimestamp: Date | null = null;\n\n for (const line of lines) {\n const parsed = this.parseJSONLLine(line);\n if (parsed && (parsed.type === 'user' || parsed.type === 'assistant')) {\n messageCount++;\n const ts = new Date(parsed.timestamp);\n\n if (!firstTimestamp || ts < firstTimestamp) {\n firstTimestamp = ts;\n }\n if (!lastTimestamp || ts > lastTimestamp) {\n lastTimestamp = ts;\n }\n }\n }\n\n if (!firstTimestamp || !lastTimestamp) return null;\n\n const projectDirName = basename(join(filePath, '..'));\n const projectPath = this.decodeProjectPath(projectDirName);\n const durationSeconds = this.calculateDuration(firstTimestamp, lastTimestamp);\n\n return {\n sessionId: fileName,\n projectPath,\n projectName: this.resolveProjectName(projectDirName),\n timestamp: firstTimestamp,\n messageCount,\n durationSeconds,\n filePath,\n source: this.name,\n };\n }\n\n async parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise {\n const lines = this.parseJSONLContent(content);\n\n if (lines.length === 0) return null;\n\n // Parse timestamps\n const timestamps = lines.map((m) => new Date(m.timestamp));\n const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime())));\n const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime())));\n const durationSeconds = this.calculateDuration(startTime, endTime);\n\n // Get version from first message\n const claudeCodeVersion = lines[0].version || 'unknown';\n\n // Collect tool results first\n const toolResultsMap = new Map();\n\n for (const line of lines) {\n if (line.type === 'user') {\n const msgContent = line.message.content;\n if (Array.isArray(msgContent)) {\n for (const block of msgContent) {\n if (block.type === 'tool_result' && 'tool_use_id' in block) {\n const resultContent =\n typeof block.content === 'string'\n ? block.content\n : JSON.stringify(block.content);\n toolResultsMap.set(block.tool_use_id, {\n content: resultContent,\n isError: block.is_error ?? false,\n });\n }\n }\n }\n }\n }\n\n // Parse messages\n const messages: ParsedMessage[] = [];\n\n for (const line of lines) {\n if (line.type === 'user') {\n const textContent = this.extractTextContent(line.message.content);\n if (!textContent.trim()) continue;\n\n messages.push({\n uuid: line.uuid,\n role: 'user',\n timestamp: new Date(line.timestamp),\n content: textContent,\n ...(line.isMeta ? { isMeta: true } : {}),\n ...(typeof line.sourceToolUseID === 'string'\n ? { sourceToolUseID: line.sourceToolUseID }\n : {}),\n ...(line.toolUseResult !== undefined ? { toolUseResult: line.toolUseResult } : {}),\n });\n } else if (line.type === 'assistant') {\n const textContent = this.extractTextContent(line.message.content);\n const toolCalls = Array.isArray(line.message.content)\n ? this.extractToolCalls(line.message.content, toolResultsMap)\n : undefined;\n\n messages.push({\n uuid: line.uuid,\n role: 'assistant',\n timestamp: new Date(line.timestamp),\n content: textContent,\n toolCalls,\n tokenUsage: line.message.usage\n ? {\n input: line.message.usage.input_tokens,\n output: line.message.usage.output_tokens,\n }\n : undefined,\n });\n }\n }\n\n if (messages.length === 0) return null;\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId,\n projectPath,\n projectName,\n startTime,\n endTime,\n durationSeconds,\n claudeCodeVersion,\n messages,\n stats,\n source: this.name,\n };\n }\n\n async readSessionContent(filePath: string): Promise {\n return readFile(filePath, 'utf-8');\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helper methods\n // ─────────────────────────────────────────────────────────────────────────\n\n private async listProjectDirs(): Promise {\n try {\n const entries = await readdir(this.baseDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(this.baseDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n }\n\n private async listSessionFiles(projectDir: string): Promise {\n try {\n const files = await readdir(projectDir);\n return files\n .filter((f) => f.endsWith('.jsonl'))\n .map((f) => join(projectDir, f));\n } catch {\n return [];\n }\n }\n\n private parseJSONLLine(line: string): JSONLLine | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n\n try {\n return JSON.parse(trimmed) as JSONLLine;\n } catch {\n return null;\n }\n }\n\n private parseJSONLContent(content: string): JSONLLine[] {\n const lines: JSONLLine[] = [];\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n\n try {\n const parsed = JSON.parse(trimmed);\n if (parsed.type === 'user' || parsed.type === 'assistant') {\n lines.push(parsed as JSONLLine);\n }\n } catch {\n // Skip invalid lines\n }\n }\n\n return lines;\n }\n\n private extractTextContent(content: string | ContentBlock[]): string {\n if (typeof content === 'string') return content;\n\n const textParts: string[] = [];\n for (const block of content) {\n if (block.type === 'text' && 'text' in block) {\n textParts.push(block.text);\n }\n }\n return textParts.join('\\n');\n }\n\n private extractToolCalls(\n content: ContentBlock[],\n toolResultsMap: Map\n ): ParsedMessage['toolCalls'] {\n const toolCalls: NonNullable = [];\n\n for (const block of content) {\n if (block.type === 'tool_use' && 'id' in block && 'name' in block) {\n const result = toolResultsMap.get(block.id);\n toolCalls.push({\n id: block.id,\n name: block.name,\n input: block.input || {},\n result: result?.content,\n isError: result?.isError,\n });\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : undefined;\n }\n}\n\n// Export singleton instance for convenience\nexport const claudeCodeSource = new ClaudeCodeSource();\n","/**\n * Cursor Session Source\n *\n * Parses Cursor AI session logs stored as SQLite databases in ~/.cursor/chats/\n *\n * File structure:\n * - Path: ~/.cursor/chats/{workspace-hash}/{session-uuid}/store.db\n * - Format: SQLite database with blobs table\n * - Schema: blobs (id TEXT PRIMARY KEY, data BLOB)\n *\n * Note: Requires better-sqlite3 package for SQLite parsing.\n * If not available, this source will report as unavailable.\n */\n\nimport { readdir, stat } from 'node:fs/promises';\nimport { join, basename, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage } from '../session-types.js';\nimport { normalizeToolName } from '../tool-mapping.js';\n\n/**\n * Default Cursor chats directory\n */\nexport const CURSOR_CHATS_DIR = join(homedir(), '.cursor', 'chats');\n\nimport { loadSqlite, type SqliteDatabase } from './sqlite-loader.js';\n\n/**\n * SQLite Database interface (from better-sqlite3)\n * Kept for internal blob row typing\n */\ntype Database = SqliteDatabase;\n\ninterface BlobRow {\n id: string;\n data: Buffer;\n}\n\n/**\n * Cursor message structure (parsed from blob)\n * Cursor stores messages in individual JSON blobs with role field\n */\ninterface CursorMessage {\n id?: string;\n role: 'user' | 'assistant' | 'tool' | 'system';\n content?: string | Array<{ type: string; [key: string]: unknown }>;\n text?: string;\n timestamp?: string;\n createdAt?: number;\n toolCalls?: CursorToolCall[];\n tool_calls?: CursorToolCall[];\n toolResults?: CursorToolResult[];\n signature?: string;\n}\n\ninterface CursorToolCall {\n id: string;\n name: string;\n type?: string;\n function?: {\n name: string;\n arguments?: string | Record;\n };\n input?: Record;\n arguments?: string | Record;\n}\n\n/**\n * Cursor tool-call content block (inside content array)\n * This is how Cursor actually stores tool calls - in the content array\n */\ninterface CursorToolCallBlock {\n type: 'tool-call';\n toolCallId: string;\n toolName: string;\n args: Record;\n}\n\n/**\n * Cursor tool-result content block (inside tool message content array)\n */\ninterface CursorToolResultBlock {\n type: 'tool-result';\n toolCallId: string;\n toolName: string;\n result: string;\n experimental_content?: Array<{ type: string; text?: string }>;\n}\n\ninterface CursorToolResult {\n tool_use_id?: string;\n toolCallId?: string;\n content: string;\n isError?: boolean;\n is_error?: boolean;\n}\n\n/**\n * Cursor conversation structure\n */\ninterface CursorConversation {\n id: string;\n messages: CursorMessage[];\n metadata?: {\n workspacePath?: string;\n projectPath?: string;\n createdAt?: number;\n updatedAt?: number;\n };\n}\n\n/**\n * Parsed blob data structure\n * Cursor blobs can contain:\n * 1. Individual messages with { role, content, ... }\n * 2. Array of messages with { messages: [...] }\n * 3. Metadata with workspace info\n */\ninterface ParsedBlobData {\n messages?: CursorMessage[];\n role?: 'user' | 'assistant' | 'tool' | 'system';\n content?: string | Array<{ type: string; [key: string]: unknown }>;\n text?: string;\n id?: string;\n timestamp?: string;\n createdAt?: number;\n signature?: string;\n toolCalls?: CursorToolCall[];\n tool_calls?: CursorToolCall[];\n metadata?: {\n workspacePath?: string;\n projectPath?: string;\n createdAt?: number;\n updatedAt?: number;\n };\n workspacePath?: string;\n projectPath?: string;\n updatedAt?: number;\n}\n\n// loadSqlite is imported from shared sqlite-loader.ts\n\n/**\n * Cursor session source implementation\n */\nexport class CursorSource extends BaseSessionSource {\n readonly name = 'cursor' as const;\n readonly displayName = 'Cursor';\n\n private readonly baseDir: string;\n\n constructor(baseDir?: string) {\n super();\n this.baseDir = baseDir ?? CURSOR_CHATS_DIR;\n }\n\n getBaseDir(): string {\n return this.baseDir;\n }\n\n async isAvailable(): Promise {\n try {\n // Check if directory exists\n await stat(this.baseDir);\n\n // Check if better-sqlite3 is available\n const Database = await loadSqlite();\n return Database !== null;\n } catch {\n return false;\n }\n }\n\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const minSize = config?.minFileSize ?? 0;\n const maxSize = config?.maxFileSize ?? Infinity;\n\n const allFiles: FileMetadata[] = [];\n\n try {\n // List workspace directories\n const workspaceDirs = await this.listWorkspaceDirs();\n\n for (const workspaceDir of workspaceDirs) {\n // List session directories within each workspace\n const sessionDirs = await this.listSessionDirs(workspaceDir);\n\n for (const sessionDir of sessionDirs) {\n const storeDbPath = join(sessionDir, 'store.db');\n\n try {\n const stats = await stat(storeDbPath);\n if (\n stats.isFile() &&\n stats.size >= minSize &&\n stats.size <= maxSize\n ) {\n // Use workspace hash as project dir name\n const workspaceHash = basename(workspaceDir);\n\n allFiles.push({\n filePath: storeDbPath,\n fileSize: stats.size,\n mtime: stats.mtime,\n projectDirName: workspaceHash,\n source: this.name,\n });\n }\n } catch {\n // Skip inaccessible files\n }\n }\n }\n } catch {\n // Directory doesn't exist or is inaccessible\n }\n\n return allFiles;\n }\n\n async extractMetadata(\n filePath: string,\n _content: string\n ): Promise {\n // For SQLite, we need to read from the database directly\n const Database = await loadSqlite();\n if (!Database) return null;\n\n try {\n const db = new Database(filePath);\n\n try {\n const conversation = this.parseConversation(db);\n if (!conversation || conversation.messages.length === 0) {\n db.close();\n return null;\n }\n\n const messages = conversation.messages.filter(\n (m) => m.role === 'user' || m.role === 'assistant'\n );\n\n if (messages.length === 0) {\n db.close();\n return null;\n }\n\n // Extract timestamps\n const timestamps = messages\n .map((m) => this.extractTimestamp(m))\n .filter((t): t is Date => t !== null);\n\n if (timestamps.length === 0) {\n db.close();\n return null;\n }\n\n const firstTimestamp = new Date(\n Math.min(...timestamps.map((t) => t.getTime()))\n );\n const lastTimestamp = new Date(\n Math.max(...timestamps.map((t) => t.getTime()))\n );\n\n // Get session ID from directory name\n const sessionDir = dirname(filePath);\n const sessionId = basename(sessionDir);\n\n // Get project path from workspace hash or metadata\n const workspaceDir = dirname(sessionDir);\n const workspaceHash = basename(workspaceDir);\n const projectPath = conversation.metadata?.workspacePath\n ?? conversation.metadata?.projectPath\n ?? this.decodeProjectPath(workspaceHash);\n\n db.close();\n\n return {\n sessionId,\n projectPath,\n projectName: this.getProjectName(projectPath),\n timestamp: firstTimestamp,\n messageCount: messages.length,\n durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp),\n filePath,\n source: this.name,\n };\n } catch {\n db.close();\n return null;\n }\n } catch {\n return null;\n }\n }\n\n async parseSessionContent(\n sessionId: string,\n projectPath: string,\n _projectName: string,\n _content: string\n ): Promise {\n // For Cursor, we need the file path instead of content\n // This method signature is for compatibility - actual parsing happens in parseFromFile\n return null;\n }\n\n /**\n * Parse session directly from SQLite file\n */\n async parseFromFile(filePath: string): Promise {\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: Database | null = null;\n try {\n db = new Database(filePath);\n\n const conversation = this.parseConversation(db);\n if (!conversation || conversation.messages.length === 0) {\n return null;\n }\n\n // Get session info\n const sessionDir = dirname(filePath);\n const sessionId = basename(sessionDir);\n const workspaceDir = dirname(sessionDir);\n const workspaceHash = basename(workspaceDir);\n const projectPath = conversation.metadata?.workspacePath\n ?? conversation.metadata?.projectPath\n ?? this.decodeProjectPath(workspaceHash);\n\n // Build tool results map for matching\n // Cursor stores tool results in 'tool' role messages with content array\n const toolResultsMap = new Map();\n for (const msg of conversation.messages) {\n if (msg.role === 'tool') {\n // Check for tool results in content array (Cursor's actual format)\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === 'tool-result') {\n const resultBlock = block as unknown as CursorToolResultBlock;\n if (resultBlock.toolCallId) {\n const resultText = resultBlock.result || '';\n const isError = resultText.toLowerCase().includes('error');\n toolResultsMap.set(resultBlock.toolCallId, {\n content: resultText,\n isError,\n toolName: resultBlock.toolName || 'unknown',\n });\n }\n }\n }\n }\n // Also check legacy format\n if (msg.toolResults) {\n for (const result of msg.toolResults) {\n const toolId = result.tool_use_id ?? result.toolCallId;\n if (toolId) {\n toolResultsMap.set(toolId, {\n content: result.content,\n isError: result.isError ?? result.is_error ?? false,\n toolName: 'unknown',\n });\n }\n }\n }\n }\n }\n\n // Parse messages\n const messages: ParsedMessage[] = [];\n\n for (const msg of conversation.messages) {\n if (msg.role === 'user') {\n // Content can be string or array (from tool messages)\n const content = typeof msg.content === 'string' ? msg.content : (msg.text ?? '');\n if (!content.trim()) continue;\n\n messages.push({\n uuid: msg.id ?? this.generateUUID(),\n role: 'user',\n timestamp: this.extractTimestamp(msg) ?? new Date(),\n content,\n });\n } else if (msg.role === 'assistant') {\n // Extract text content and tool calls from content array\n const { textContent, toolCallBlocks } = this.parseAssistantContent(msg);\n const toolCalls = this.extractToolCallsFromBlocks(toolCallBlocks, toolResultsMap);\n\n // Also check legacy toolCalls/tool_calls fields\n const legacyToolCalls = this.extractLegacyToolCalls(msg, toolResultsMap);\n const allToolCalls = toolCalls.length > 0 ? toolCalls :\n (legacyToolCalls && legacyToolCalls.length > 0 ? legacyToolCalls : undefined);\n\n messages.push({\n uuid: msg.id ?? this.generateUUID(),\n role: 'assistant',\n timestamp: this.extractTimestamp(msg) ?? new Date(),\n content: textContent,\n toolCalls: allToolCalls,\n });\n }\n }\n\n if (messages.length === 0) return null;\n\n // Calculate timestamps\n const timestamps = messages.map((m) => m.timestamp);\n const startTime = new Date(\n Math.min(...timestamps.map((t) => t.getTime()))\n );\n const endTime = new Date(\n Math.max(...timestamps.map((t) => t.getTime()))\n );\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId,\n projectPath,\n startTime,\n endTime,\n durationSeconds: this.calculateDuration(startTime, endTime),\n claudeCodeVersion: 'cursor', // Use 'cursor' as version identifier\n messages,\n stats,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async readSessionContent(filePath: string): Promise {\n // For SQLite, return empty string - use parseFromFile instead\n return '';\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helper methods\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all subdirectories within a given directory\n */\n private async listSubdirectories(parentDir: string): Promise {\n try {\n const entries = await readdir(parentDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(parentDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n }\n\n private async listWorkspaceDirs(): Promise {\n return this.listSubdirectories(this.baseDir);\n }\n\n private async listSessionDirs(workspaceDir: string): Promise {\n return this.listSubdirectories(workspaceDir);\n }\n\n private parseConversation(db: Database): CursorConversation | null {\n try {\n // Query blobs table\n const stmt = db.prepare('SELECT id, data FROM blobs');\n const rows = stmt.all();\n\n if (rows.length === 0) return null;\n\n const messages: CursorMessage[] = [];\n let metadata: CursorConversation['metadata'] | undefined;\n\n for (const row of rows as Array<{ id: string; data: Buffer }>) {\n try {\n // Parse blob data\n const data = this.parseBlob(row.data) as ParsedBlobData | null;\n if (!data) continue;\n\n if (data.messages && Array.isArray(data.messages)) {\n // This blob contains conversation messages array\n messages.push(...data.messages);\n } else if (data.role) {\n // This blob is a single message object\n // Convert to CursorMessage format\n const msg: CursorMessage = {\n id: data.id ?? row.id,\n role: data.role,\n // Preserve content array for assistant messages (contains tool-call blocks)\n content: data.content,\n text: data.text,\n timestamp: data.timestamp,\n createdAt: data.createdAt,\n toolCalls: data.toolCalls ?? data.tool_calls,\n signature: data.signature,\n };\n\n // Handle content array for tool messages (extract tool results)\n if (Array.isArray(data.content) && msg.role === 'tool') {\n for (const block of data.content) {\n if (block.type === 'tool-result' && typeof block.result === 'string') {\n const toolId = block.toolCallId as string | undefined;\n if (toolId) {\n msg.toolResults = msg.toolResults ?? [];\n msg.toolResults.push({\n toolCallId: toolId,\n content: block.result as string,\n isError: (block.result as string).toLowerCase().includes('error'),\n });\n }\n }\n }\n }\n\n // Skip system messages (prompts)\n if (msg.role !== 'system') {\n messages.push(msg);\n }\n }\n\n // Extract metadata if present\n if (data.metadata || data.workspacePath) {\n metadata = {\n workspacePath: data.workspacePath ?? data.metadata?.workspacePath,\n projectPath: data.projectPath ?? data.metadata?.projectPath,\n createdAt: data.createdAt ?? data.metadata?.createdAt,\n updatedAt: data.updatedAt ?? data.metadata?.updatedAt,\n };\n }\n } catch {\n // Skip unparseable blobs\n }\n }\n\n // Sort messages by timestamp\n messages.sort((a, b) => {\n const tsA = this.extractTimestamp(a);\n const tsB = this.extractTimestamp(b);\n if (!tsA || !tsB) return 0;\n return tsA.getTime() - tsB.getTime();\n });\n\n return {\n id: this.generateUUID(),\n messages,\n metadata,\n };\n } catch {\n return null;\n }\n }\n\n private parseBlob(data: Buffer): Record | null {\n // 1. Try parsing as UTF-8 JSON first\n try {\n const text = data.toString('utf-8');\n return JSON.parse(text);\n } catch {\n // Not JSON\n }\n\n // 2. Try decompressing if it looks like compressed data\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const zlib = require('zlib');\n const decompressed = zlib.inflateSync(data);\n return JSON.parse(decompressed.toString('utf-8'));\n } catch {\n // Not compressed JSON\n }\n\n // 3. Try parsing as Protobuf (Cursor uses protobuf for some blobs)\n try {\n return this.parseProtobuf(data);\n } catch {\n // Not protobuf\n }\n\n return null;\n }\n\n /**\n * Parse a varint from buffer at given offset\n * Protobuf uses variable-length encoding for integers\n */\n private parseVarint(data: Buffer, offset: number): { value: number; bytesRead: number } | null {\n if (offset >= data.length) return null;\n\n let value = 0;\n let shift = 0;\n let bytesRead = 0;\n const MAX_VARINT_BYTES = 10;\n\n while (offset + bytesRead < data.length) {\n const byte = data[offset + bytesRead]!;\n value |= (byte & 0x7f) << shift;\n bytesRead++;\n\n const isLastByte = (byte & 0x80) === 0;\n if (isLastByte) break;\n\n shift += 7;\n if (bytesRead > MAX_VARINT_BYTES) return null;\n }\n\n return { value, bytesRead };\n }\n\n /**\n * Parse Cursor protobuf blob format\n *\n * Cursor stores some messages in a simple protobuf format:\n * - field1 (wire2): text content (message body, tool results)\n * - field2 (wire2): UUID (message ID)\n * - field3 (wire2): usually empty\n * - field4 (wire2): nested JSON (full message object)\n *\n * Wire type 2 = length-delimited (string, bytes, embedded messages)\n */\n private parseProtobuf(data: Buffer): Record | null {\n const fields = new Map>();\n let offset = 0;\n\n while (offset < data.length) {\n // Read tag (varint)\n const tagVarint = this.parseVarint(data, offset);\n if (!tagVarint) break;\n\n const tag = tagVarint.value;\n const fieldNumber = tag >> 3;\n const wireType = tag & 0x07;\n offset += tagVarint.bytesRead;\n\n let fieldContent: Buffer | number;\n\n switch (wireType) {\n case 0: { // Varint\n const varint = this.parseVarint(data, offset);\n if (!varint) break;\n fieldContent = varint.value;\n offset += varint.bytesRead;\n break;\n }\n case 1: { // 64-bit fixed\n if (offset + 8 > data.length) return null;\n fieldContent = data.subarray(offset, offset + 8);\n offset += 8;\n break;\n }\n case 2: { // Length-delimited (string, bytes, nested message)\n const lengthVarint = this.parseVarint(data, offset);\n if (!lengthVarint) return null;\n const length = lengthVarint.value;\n offset += lengthVarint.bytesRead;\n if (offset + length > data.length) return null;\n fieldContent = data.subarray(offset, offset + length);\n offset += length;\n break;\n }\n case 5: { // 32-bit fixed\n if (offset + 4 > data.length) return null;\n fieldContent = data.subarray(offset, offset + 4);\n offset += 4;\n break;\n }\n default:\n // Unknown wire type, stop parsing\n return null;\n }\n\n if (!fields.has(fieldNumber)) {\n fields.set(fieldNumber, []);\n }\n fields.get(fieldNumber)!.push({ wireType, content: fieldContent! });\n }\n\n return this.mapProtobufFields(fields);\n }\n\n /**\n * Map protobuf fields to a message-like structure\n */\n private mapProtobufFields(\n fields: Map>\n ): Record | null {\n // Check for field4 first - it contains full JSON message\n const field4 = fields.get(4);\n if (field4 && field4.length > 0) {\n for (const { content } of field4) {\n if (Buffer.isBuffer(content)) {\n try {\n const jsonStr = content.toString('utf-8');\n const parsed = JSON.parse(jsonStr);\n // Return the full JSON object if it has message structure\n if (parsed && (parsed.role || parsed.messages || parsed.content)) {\n return parsed;\n }\n } catch {\n // Not JSON\n }\n }\n }\n }\n\n // Try to construct message from individual fields\n const result: Record = {};\n\n // Field 1: text content\n const field1 = fields.get(1);\n if (field1 && field1.length > 0) {\n const { content } = field1[0]!;\n if (Buffer.isBuffer(content)) {\n const text = content.toString('utf-8');\n // Check if it's printable text\n if (text.length > 0 && this.isPrintableText(text)) {\n result.text = text;\n }\n }\n }\n\n // Field 2: UUID\n const field2 = fields.get(2);\n if (field2 && field2.length > 0) {\n const { content } = field2[0]!;\n if (Buffer.isBuffer(content)) {\n const uuid = content.toString('utf-8');\n // Check if it looks like a UUID\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid)) {\n result.id = uuid;\n }\n }\n }\n\n // Only return if we found meaningful content\n if (Object.keys(result).length > 0) {\n return result;\n }\n\n return null;\n }\n\n /**\n * Check if a string is printable text (not binary garbage)\n */\n private isPrintableText(str: string): boolean {\n // Check first 100 characters for printability\n const sample = str.substring(0, 100);\n // Allow common printable characters, newlines, tabs\n return /^[\\x20-\\x7E\\n\\r\\t\\u00A0-\\uFFFF]+$/.test(sample);\n }\n\n /**\n * Convert Unix timestamp to Date, handling both seconds and milliseconds\n */\n private unixToDate(timestamp: number): Date {\n const MILLISECONDS_THRESHOLD = 1e12;\n const normalizedTs = timestamp > MILLISECONDS_THRESHOLD ? timestamp : timestamp * 1000;\n return new Date(normalizedTs);\n }\n\n private extractTimestamp(msg: CursorMessage): Date | null {\n if (msg.timestamp) return new Date(msg.timestamp);\n if (msg.createdAt) return this.unixToDate(msg.createdAt);\n return null;\n }\n\n /**\n * Parse assistant message content array to extract text and tool-call blocks\n * Cursor stores tool calls in the content array with type: 'tool-call'\n */\n private parseAssistantContent(msg: CursorMessage): {\n textContent: string;\n toolCallBlocks: CursorToolCallBlock[];\n } {\n const textParts: string[] = [];\n const toolCallBlocks: CursorToolCallBlock[] = [];\n\n if (typeof msg.content === 'string') {\n return { textContent: msg.content, toolCallBlocks: [] };\n }\n\n if (!Array.isArray(msg.content)) {\n return { textContent: msg.text ?? '', toolCallBlocks: [] };\n }\n\n for (const block of msg.content) {\n if (block.type === 'text' && typeof block.text === 'string') {\n textParts.push(block.text);\n } else if (block.type === 'reasoning' && typeof block.text === 'string') {\n // Include reasoning as part of content for analysis\n textParts.push(block.text);\n } else if (block.type === 'tool-call') {\n // Cursor's tool call format\n const toolBlock = block as unknown as CursorToolCallBlock;\n if (toolBlock.toolCallId && toolBlock.toolName) {\n toolCallBlocks.push(toolBlock);\n }\n }\n }\n\n return {\n textContent: textParts.join('\\n'),\n toolCallBlocks,\n };\n }\n\n /**\n * Extract tool calls from Cursor's tool-call blocks\n */\n private extractToolCallsFromBlocks(\n blocks: CursorToolCallBlock[],\n toolResultsMap: Map\n ): NonNullable {\n const toolCalls: NonNullable = [];\n\n for (const block of blocks) {\n const id = block.toolCallId;\n const name = block.toolName;\n const input = block.args || {};\n\n // Get result if available\n const result = toolResultsMap.get(id);\n\n // Normalize tool name to Claude Code format\n const normalizedName = normalizeToolName(name, this.name);\n\n toolCalls.push({\n id,\n name: normalizedName,\n input,\n result: result?.content,\n isError: result?.isError,\n });\n }\n\n return toolCalls;\n }\n\n /**\n * Extract tool calls from legacy toolCalls/tool_calls fields\n */\n private extractLegacyToolCalls(\n msg: CursorMessage,\n toolResultsMap: Map\n ): ParsedMessage['toolCalls'] {\n const rawCalls = msg.toolCalls ?? msg.tool_calls ?? [];\n if (rawCalls.length === 0) return undefined;\n\n const toolCalls: NonNullable = [];\n\n for (const call of rawCalls) {\n // Handle different tool call formats\n const name = call.name ?? call.function?.name ?? 'unknown';\n const id = call.id ?? this.generateUUID();\n\n // Parse input/arguments\n let input: Record = {};\n if (call.input) {\n input = call.input;\n } else if (call.arguments) {\n try {\n input = typeof call.arguments === 'string'\n ? JSON.parse(call.arguments)\n : call.arguments;\n } catch {\n input = { raw: call.arguments };\n }\n } else if (call.function?.arguments) {\n try {\n input = typeof call.function.arguments === 'string'\n ? JSON.parse(call.function.arguments)\n : call.function.arguments;\n } catch {\n input = { raw: call.function.arguments };\n }\n }\n\n // Get result if available\n const result = toolResultsMap.get(id);\n\n // Normalize tool name to Claude Code format\n const normalizedName = normalizeToolName(name, this.name);\n\n toolCalls.push({\n id,\n name: normalizedName,\n input,\n result: result?.content,\n isError: result?.isError,\n });\n }\n\n return toolCalls.length > 0 ? toolCalls : undefined;\n }\n\n private generateUUID(): string {\n return 'cursor-' + Math.random().toString(36).substring(2, 15);\n }\n}\n\n// Export singleton instance for convenience\nexport const cursorSource = new CursorSource();\n","/**\n * Tool Name Mapping\n *\n * Maps tool names from different AI coding assistants to a unified format.\n * The canonical format follows Claude Code naming conventions.\n *\n * This ensures consistent analysis regardless of which assistant\n * generated the session logs.\n */\n\nimport type { SessionSourceType } from './sources/base.js';\n\n/**\n * Mapping from source-specific tool names to canonical names\n *\n * Keys are source-specific names, values are Claude Code equivalents\n */\nexport const TOOL_MAPPING: Record> = {\n /**\n * Claude Code uses PascalCase tool names\n * No mapping needed - this is the canonical format\n */\n 'claude-code': {},\n\n /**\n * Cursor uses snake_case tool names\n * Map to Claude Code equivalents\n */\n 'cursor': {\n // File operations\n 'read_file': 'Read',\n 'write_file': 'Write',\n 'edit_file': 'Edit',\n 'list_dir': 'Bash', // ls equivalent\n 'list_directory': 'Bash',\n 'LS': 'Bash', // Cursor's PascalCase variant\n\n // Search operations\n 'grep_search': 'Grep',\n 'file_search': 'Glob',\n 'codebase_search': 'Grep',\n 'search': 'Grep',\n\n // Terminal operations\n 'run_terminal_cmd': 'Bash',\n 'run_command': 'Bash',\n 'terminal': 'Bash',\n\n // Web operations\n 'web_search': 'WebSearch',\n 'fetch_url': 'WebFetch',\n 'browser': 'WebFetch',\n\n // Code operations\n 'code_edit': 'Edit',\n 'apply_diff': 'Edit',\n 'insert_code': 'Edit',\n 'replace_code': 'Edit',\n 'ApplyPatch': 'Edit', // Cursor's PascalCase variant\n\n // Shell operations (Cursor uses 'Shell' directly)\n 'Shell': 'Bash',\n\n // Notebook operations\n 'notebook_edit': 'NotebookEdit',\n 'jupyter': 'NotebookEdit',\n\n // MCP/Plugin operations\n 'mcp_call': 'Skill',\n 'plugin': 'Skill',\n\n // Task/Agent operations\n 'spawn_agent': 'Task',\n 'delegate': 'Task',\n\n // Misc\n 'ask_user': 'AskUserQuestion',\n 'user_input': 'AskUserQuestion',\n },\n\n /**\n * Cursor Composer uses the same snake_case tool names as Cursor\n * Reuses the same mapping for consistency\n */\n 'cursor-composer': {\n // File operations\n 'read_file': 'Read',\n 'write_file': 'Write',\n 'edit_file': 'Edit',\n 'list_dir': 'Bash',\n 'list_directory': 'Bash',\n 'LS': 'Bash',\n\n // Search operations\n 'grep_search': 'Grep',\n 'file_search': 'Glob',\n 'codebase_search': 'Grep',\n 'search': 'Grep',\n\n // Terminal operations\n 'run_terminal_cmd': 'Bash',\n 'run_command': 'Bash',\n 'terminal': 'Bash',\n\n // Web operations\n 'web_search': 'WebSearch',\n 'fetch_url': 'WebFetch',\n 'browser': 'WebFetch',\n\n // Code operations\n 'code_edit': 'Edit',\n 'apply_diff': 'Edit',\n 'insert_code': 'Edit',\n 'replace_code': 'Edit',\n 'ApplyPatch': 'Edit',\n\n // Shell operations\n 'Shell': 'Bash',\n\n // Notebook operations\n 'notebook_edit': 'NotebookEdit',\n 'jupyter': 'NotebookEdit',\n\n // MCP/Plugin operations\n 'mcp_call': 'Skill',\n 'plugin': 'Skill',\n\n // Task/Agent operations\n 'spawn_agent': 'Task',\n 'delegate': 'Task',\n\n // Misc\n 'ask_user': 'AskUserQuestion',\n 'user_input': 'AskUserQuestion',\n },\n};\n\n/**\n * Normalize a tool name to its canonical form\n *\n * @param toolName - The source-specific tool name\n * @param source - The session source type\n * @returns The canonical tool name (Claude Code format)\n */\nexport function normalizeToolName(\n toolName: string,\n source: SessionSourceType\n): string {\n const mapping = TOOL_MAPPING[source];\n\n // Check if there's a direct mapping\n if (mapping && toolName in mapping) {\n return mapping[toolName];\n }\n\n // For Claude Code or unmapped tools, return as-is\n return toolName;\n}\n\n/**\n * Get all known tool names for a source\n */\nexport function getKnownTools(source: SessionSourceType): string[] {\n return Object.keys(TOOL_MAPPING[source] || {});\n}\n\n/**\n * Check if a tool name needs normalization\n */\nexport function needsNormalization(\n toolName: string,\n source: SessionSourceType\n): boolean {\n if (source === 'claude-code') return false;\n\n const mapping = TOOL_MAPPING[source];\n return mapping ? toolName in mapping : false;\n}\n\n/**\n * Canonical tool categories for analysis\n *\n * Groups tools by their primary function for pattern analysis\n */\nexport const TOOL_CATEGORIES = {\n /** File reading operations */\n READ: ['Read', 'Glob', 'Grep'],\n\n /** File modification operations */\n WRITE: ['Write', 'Edit', 'NotebookEdit'],\n\n /** Command execution */\n EXECUTE: ['Bash', 'Task'],\n\n /** External resources */\n EXTERNAL: ['WebSearch', 'WebFetch'],\n\n /** User interaction */\n INTERACTION: ['AskUserQuestion', 'Skill'],\n} as const;\n\n/**\n * Get the category for a canonical tool name\n */\nexport function getToolCategory(\n canonicalToolName: string\n): keyof typeof TOOL_CATEGORIES | 'OTHER' {\n for (const [category, tools] of Object.entries(TOOL_CATEGORIES)) {\n if ((tools as readonly string[]).includes(canonicalToolName)) {\n return category as keyof typeof TOOL_CATEGORIES;\n }\n }\n return 'OTHER';\n}\n\n/**\n * Cursor Composer numeric tool ID → tool name mapping\n *\n * Cursor Composer stores tool calls with numeric capabilityType IDs\n * in the toolFormerData.tool field. This maps known IDs to tool names\n * which can then be normalized via TOOL_MAPPING['cursor-composer'].\n *\n * Known IDs verified from real state.vscdb data (2026-02-05).\n * Unknown IDs will fall through as 'tool_{id}'.\n */\nexport const CURSOR_COMPOSER_TOOL_IDS: Record = {\n 15: 'run_terminal_cmd',\n 38: 'edit_file',\n 39: 'list_dir',\n 40: 'write_file',\n};\n\n/**\n * Resolve a Cursor Composer numeric tool ID to a canonical tool name\n */\nexport function resolveComposerToolId(numericId: number): string {\n const toolName = CURSOR_COMPOSER_TOOL_IDS[numericId];\n if (toolName) {\n return normalizeToolName(toolName, 'cursor-composer');\n }\n // Unknown ID: return a descriptive fallback\n return `tool_${numericId}`;\n}\n","/**\n * Shared SQLite Loader\n *\n * Dynamic import wrapper for better-sqlite3.\n * Used by both CursorSource and CursorComposerSource.\n */\n\n/**\n * Minimal SQLite Database interface (from better-sqlite3)\n */\nexport interface SqliteDatabase {\n prepare(sql: string): SqliteStatement;\n close(): void;\n}\n\nexport interface SqliteStatement {\n all(...params: unknown[]): unknown[];\n get(...params: unknown[]): unknown | undefined;\n}\n\nexport interface SqliteOpenOptions {\n readonly?: boolean;\n}\n\ntype DatabaseConstructorType = new (path: string, options?: SqliteOpenOptions) => SqliteDatabase;\n\nlet cachedConstructor: DatabaseConstructorType | null = null;\nlet loadAttempted = false;\n\n/**\n * Dynamically load better-sqlite3 and return the Database constructor.\n * Returns null if better-sqlite3 is not installed.\n * Caches the result after first load attempt.\n */\nexport async function loadSqlite(): Promise {\n if (loadAttempted) return cachedConstructor;\n loadAttempted = true;\n\n try {\n // @ts-ignore - better-sqlite3 may not be installed\n const sqlite = await import('better-sqlite3');\n cachedConstructor = (sqlite.default ?? sqlite) as unknown as DatabaseConstructorType;\n return cachedConstructor;\n } catch {\n return null;\n }\n}\n","/**\n * Cursor Composer Session Source\n *\n * Parses Cursor AI sessions stored in globalStorage/state.vscdb.\n * This is the modern Cursor storage format (2025+), replacing the\n * legacy ~/.cursor/chats/ directory structure.\n *\n * Storage: ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb\n * Format: SQLite database with `cursorDiskKV` table\n *\n * Key patterns:\n * - composerData:{composerId} → session metadata (JSON)\n * - bubbleId:{composerId}:{messageId} → individual messages (JSON)\n *\n * Bubble types:\n * - type 1: user message\n * - type 2: assistant message (text, tool calls, or thinking)\n *\n * Note: Requires better-sqlite3. Opens database in readonly mode\n * to avoid conflicts with running Cursor process.\n */\n\nimport { stat } from 'node:fs/promises';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage, ToolCall } from '../session-types.js';\nimport { resolveComposerToolId } from '../tool-mapping.js';\nimport { getCursorGlobalStateDbPath } from './cursor-paths.js';\nimport { loadSqlite, type SqliteDatabase } from './sqlite-loader.js';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Types for Cursor Composer data structures\n// ─────────────────────────────────────────────────────────────────────────\n\n/** Row from cursorDiskKV table */\ninterface KVRow {\n key: string;\n value: string;\n}\n\n/** ComposerData metadata stored under composerData:{id} key */\ninterface ComposerData {\n composerId?: string;\n name?: string;\n unifiedMode?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n context?: unknown;\n tokenCount?: { inputTokens?: number; outputTokens?: number };\n richText?: unknown;\n workspaceProjectDir?: string;\n}\n\n/** Bubble (message) stored under bubbleId:{composerId}:{messageId} key */\ninterface ComposerBubble {\n type: number; // 1 = user, 2 = assistant\n text?: string;\n createdAt?: string;\n tokenCount?: { inputTokens?: number; outputTokens?: number };\n capabilityType?: number;\n toolFormerData?: {\n tool: number;\n toolCallId?: string;\n status?: string;\n rawArgs?: string;\n };\n thinking?: { text?: string };\n codeBlocks?: unknown[];\n workspaceProjectDir?: string;\n context?: {\n fileSelections?: unknown[];\n terminalSelections?: unknown[];\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// CursorComposerSource implementation\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Cursor Composer session source\n *\n * Reads sessions from Cursor's globalStorage/state.vscdb SQLite database.\n * Each composer session is identified by a composerId and contains\n * multiple bubbles (messages) stored as individual key-value entries.\n */\nexport class CursorComposerSource extends BaseSessionSource {\n readonly name = 'cursor-composer' as const;\n readonly displayName = 'Cursor Composer';\n\n private readonly dbPath: string;\n\n constructor(dbPath?: string) {\n super();\n this.dbPath = dbPath ?? getCursorGlobalStateDbPath();\n }\n\n getBaseDir(): string {\n return this.dbPath;\n }\n\n async isAvailable(): Promise {\n try {\n await stat(this.dbPath);\n const Database = await loadSqlite();\n return Database !== null;\n } catch {\n return false;\n }\n }\n\n /**\n * Collect file metadata for all composer sessions in state.vscdb.\n *\n * Each composerId becomes a virtual \"file\" entry with a synthetic path\n * of the form: state.vscdb#{composerId}\n */\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const Database = await loadSqlite();\n if (!Database) return [];\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n const composerIds = this.listComposerIds(db);\n const results: FileMetadata[] = [];\n\n for (const composerId of composerIds) {\n try {\n const data = this.getComposerData(db, composerId);\n if (!data) continue;\n\n // Count bubbles to estimate session size\n const bubbleCount = this.countBubbles(db, composerId);\n // Rough size estimate: each bubble averages ~2KB\n const estimatedSize = bubbleCount * 2048;\n\n if (config?.minFileSize && estimatedSize < config.minFileSize) continue;\n if (config?.maxFileSize && estimatedSize > config.maxFileSize) continue;\n\n // Determine project path from bubble data or composerData\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbles(db, composerId)\n ?? 'unknown';\n\n // Parse timestamp\n const createdAt = data.createdAt ? new Date(data.createdAt) : new Date();\n const lastUpdated = data.lastUpdatedAt ? new Date(data.lastUpdatedAt) : createdAt;\n\n results.push({\n filePath: `${this.dbPath}#${composerId}`,\n fileSize: estimatedSize,\n mtime: lastUpdated,\n projectDirName: this.encodeProjectDir(projectDir),\n source: this.name,\n });\n } catch {\n // Skip problematic sessions\n }\n }\n\n return results;\n } catch {\n return [];\n } finally {\n db?.close();\n }\n }\n\n async extractMetadata(\n filePath: string,\n _content: string,\n ): Promise {\n const composerId = this.extractComposerId(filePath);\n if (!composerId) return null;\n\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n const data = this.getComposerData(db, composerId);\n if (!data) return null;\n\n const bubbles = this.getBubbles(db, composerId);\n const conversationBubbles = bubbles.filter(b => b.type === 1 || b.type === 2);\n if (conversationBubbles.length === 0) return null;\n\n const timestamps = conversationBubbles\n .map(b => b.createdAt ? new Date(b.createdAt) : null)\n .filter((t): t is Date => t !== null && !isNaN(t.getTime()));\n\n if (timestamps.length === 0) return null;\n\n const firstTimestamp = new Date(Math.min(...timestamps.map(t => t.getTime())));\n const lastTimestamp = new Date(Math.max(...timestamps.map(t => t.getTime())));\n\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbleList(bubbles)\n ?? 'unknown';\n\n return {\n sessionId: composerId,\n projectPath: projectDir,\n projectName: this.getProjectName(projectDir),\n timestamp: firstTimestamp,\n messageCount: conversationBubbles.length,\n durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp),\n filePath,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async parseSessionContent(\n _sessionId: string,\n _projectPath: string,\n _projectName: string,\n _content: string,\n ): Promise {\n // SQLite-based source: use parseFromFile instead\n return null;\n }\n\n /**\n * Parse a composer session directly from state.vscdb\n */\n async parseFromFile(filePath: string): Promise {\n const composerId = this.extractComposerId(filePath);\n if (!composerId) return null;\n\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n\n const data = this.getComposerData(db, composerId);\n if (!data) return null;\n\n const bubbles = this.getBubbles(db, composerId);\n if (bubbles.length === 0) return null;\n\n const messages = this.convertBubblesToMessages(bubbles);\n if (messages.length === 0) return null;\n\n // Extract timestamps\n const timestamps = messages.map(m => m.timestamp);\n const startTime = new Date(Math.min(...timestamps.map(t => t.getTime())));\n const endTime = new Date(Math.max(...timestamps.map(t => t.getTime())));\n\n // Determine project path\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbleList(bubbles)\n ?? 'unknown';\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId: composerId,\n projectPath: projectDir,\n projectName: this.getProjectName(projectDir),\n startTime,\n endTime,\n durationSeconds: this.calculateDuration(startTime, endTime),\n claudeCodeVersion: 'cursor-composer',\n messages,\n stats,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async readSessionContent(_filePath: string): Promise {\n // SQLite source: return empty string\n return '';\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Database query helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all composer IDs from composerData:* keys\n */\n private listComposerIds(db: SqliteDatabase): string[] {\n const stmt = db.prepare(\n \"SELECT key FROM cursorDiskKV WHERE key LIKE 'composerData:%'\",\n );\n const rows = stmt.all() as KVRow[];\n return rows.map(r => r.key.replace('composerData:', ''));\n }\n\n /**\n * Get composer metadata for a specific composer ID\n */\n private getComposerData(db: SqliteDatabase, composerId: string): ComposerData | null {\n const stmt = db.prepare(\n \"SELECT value FROM cursorDiskKV WHERE key = ?\",\n );\n const row = stmt.get(`composerData:${composerId}`) as KVRow | undefined;\n if (!row?.value) return null;\n\n try {\n return JSON.parse(row.value) as ComposerData;\n } catch {\n return null;\n }\n }\n\n /**\n * Count bubbles for a composer session\n */\n private countBubbles(db: SqliteDatabase, composerId: string): number {\n const stmt = db.prepare(\n \"SELECT COUNT(*) as count FROM cursorDiskKV WHERE key LIKE ?\",\n );\n const row = stmt.get(`bubbleId:${composerId}:%`) as { count: number } | undefined;\n return row?.count ?? 0;\n }\n\n /**\n * Get all bubbles for a composer session, sorted by creation time\n */\n private getBubbles(db: SqliteDatabase, composerId: string): ComposerBubble[] {\n const stmt = db.prepare(\n \"SELECT key, value FROM cursorDiskKV WHERE key LIKE ?\",\n );\n const rows = stmt.all(`bubbleId:${composerId}:%`) as KVRow[];\n\n const bubbles: ComposerBubble[] = [];\n for (const row of rows) {\n try {\n const bubble = JSON.parse(row.value) as ComposerBubble;\n bubbles.push(bubble);\n } catch {\n // Skip unparseable bubbles\n }\n }\n\n // Sort by createdAt timestamp\n bubbles.sort((a, b) => {\n const timeA = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const timeB = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return timeA - timeB;\n });\n\n return bubbles;\n }\n\n /**\n * Get project directory from the first bubble that has workspaceProjectDir\n */\n private getProjectDirFromBubbles(db: SqliteDatabase, composerId: string): string | null {\n const stmt = db.prepare(\n \"SELECT value FROM cursorDiskKV WHERE key LIKE ? LIMIT 20\",\n );\n const rows = stmt.all(`bubbleId:${composerId}:%`) as KVRow[];\n\n for (const row of rows) {\n try {\n const bubble = JSON.parse(row.value) as ComposerBubble;\n if (bubble.workspaceProjectDir) {\n return bubble.workspaceProjectDir;\n }\n } catch {\n // Skip\n }\n }\n\n return null;\n }\n\n /**\n * Get project directory from already-loaded bubbles\n */\n private getProjectDirFromBubbleList(bubbles: ComposerBubble[]): string | null {\n for (const bubble of bubbles) {\n if (bubble.workspaceProjectDir) {\n return bubble.workspaceProjectDir;\n }\n }\n return null;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Bubble → ParsedMessage conversion\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Convert sorted bubbles into ParsedMessages.\n *\n * Conversion rules:\n * - User bubbles (type=1): → ParsedMessage { role: 'user' }\n * - Assistant text bubbles (type=2, has text): → ParsedMessage { role: 'assistant' }\n * - Assistant tool bubbles (type=2, has toolFormerData): → append toolCall to previous assistant message\n * - Thinking bubbles (type=2, has thinking): → skip (not relevant for analysis)\n * - Empty bubbles (type=2, no text, no tool): → skip\n *\n * Consecutive assistant tool bubbles are merged into the preceding text message.\n */\n private convertBubblesToMessages(bubbles: ComposerBubble[]): ParsedMessage[] {\n const messages: ParsedMessage[] = [];\n let currentAssistant: ParsedMessage | null = null;\n\n for (const bubble of bubbles) {\n if (bubble.type === 1) {\n // User message\n const text = bubble.text?.trim();\n if (!text) continue;\n\n // Close any pending assistant message\n currentAssistant = null;\n\n messages.push({\n uuid: this.generateUUID(),\n role: 'user',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: text,\n });\n } else if (bubble.type === 2) {\n // Assistant message — determine subtype\n const hasText = bubble.text && bubble.text.trim().length > 0;\n const hasTool = bubble.toolFormerData != null;\n const hasThinking = bubble.thinking?.text != null;\n\n if (hasThinking && !hasText && !hasTool) {\n // Thinking-only bubble: skip\n continue;\n }\n\n if (hasText) {\n // Text bubble: create new assistant message\n currentAssistant = {\n uuid: this.generateUUID(),\n role: 'assistant',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: bubble.text!.trim(),\n toolCalls: [],\n tokenUsage: this.extractTokenUsage(bubble),\n };\n messages.push(currentAssistant);\n }\n\n if (hasTool) {\n const toolCall = this.convertToolFormerData(bubble.toolFormerData!);\n if (toolCall) {\n if (currentAssistant) {\n // Append to existing assistant message\n if (!currentAssistant.toolCalls) {\n currentAssistant.toolCalls = [];\n }\n currentAssistant.toolCalls.push(toolCall);\n } else {\n // No preceding text bubble: create a new assistant message for the tool call\n currentAssistant = {\n uuid: this.generateUUID(),\n role: 'assistant',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: '',\n toolCalls: [toolCall],\n tokenUsage: this.extractTokenUsage(bubble),\n };\n messages.push(currentAssistant);\n }\n }\n }\n\n // Update token usage if this bubble has it (last bubble often has cumulative tokens)\n if (bubble.tokenCount && currentAssistant) {\n const usage = this.extractTokenUsage(bubble);\n if (usage && (usage.input > 0 || usage.output > 0)) {\n currentAssistant.tokenUsage = usage;\n }\n }\n }\n // type !== 1 && type !== 2: skip unknown types\n }\n\n // Clean up empty toolCalls arrays\n for (const msg of messages) {\n if (msg.toolCalls && msg.toolCalls.length === 0) {\n delete msg.toolCalls;\n }\n }\n\n return messages;\n }\n\n /**\n * Convert toolFormerData to a ToolCall\n */\n private convertToolFormerData(\n toolData: NonNullable,\n ): ToolCall | null {\n const toolName = resolveComposerToolId(toolData.tool);\n\n // Parse rawArgs into input object\n let input: Record = {};\n if (toolData.rawArgs) {\n try {\n input = JSON.parse(toolData.rawArgs);\n } catch {\n input = { raw: toolData.rawArgs };\n }\n }\n\n return {\n id: toolData.toolCallId ?? this.generateUUID(),\n name: toolName,\n input,\n };\n }\n\n /**\n * Extract token usage from bubble\n */\n private extractTokenUsage(\n bubble: ComposerBubble,\n ): { input: number; output: number } | undefined {\n if (!bubble.tokenCount) return undefined;\n const input = bubble.tokenCount.inputTokens ?? 0;\n const output = bubble.tokenCount.outputTokens ?? 0;\n if (input === 0 && output === 0) return undefined;\n return { input, output };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Utility helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Extract composerId from synthetic file path: state.vscdb#{composerId}\n */\n private extractComposerId(filePath: string): string | null {\n const hashIndex = filePath.indexOf('#');\n if (hashIndex === -1) return null;\n return filePath.substring(hashIndex + 1);\n }\n\n /**\n * Encode a project directory path into a safe directory name.\n * Replaces '/' with '-' for consistency with ClaudeCodeSource encoding.\n */\n private encodeProjectDir(projectDir: string): string {\n return projectDir.replace(/\\//g, '-');\n }\n\n private generateUUID(): string {\n return 'composer-' + Math.random().toString(36).substring(2, 15);\n }\n}\n\n// Export singleton instance\nexport const cursorComposerSource = new CursorComposerSource();\n","/**\n * Cursor Platform Paths\n *\n * Cross-platform path resolution for Cursor's data directories.\n * Cursor stores data in platform-specific locations following each OS's conventions.\n */\n\nimport { join } from 'node:path';\nimport { homedir, platform } from 'node:os';\n\n/**\n * Get the Cursor User data directory for the current platform\n *\n * - macOS: ~/Library/Application Support/Cursor/User\n * - Linux: ~/.config/Cursor/User\n * - Windows: %APPDATA%/Cursor/User\n */\nfunction getCursorUserDir(): string {\n const home = homedir();\n\n switch (platform()) {\n case 'darwin':\n return join(home, 'Library', 'Application Support', 'Cursor', 'User');\n case 'win32':\n return join(process.env.APPDATA ?? join(home, 'AppData', 'Roaming'), 'Cursor', 'User');\n default: // linux, freebsd, etc.\n return join(home, '.config', 'Cursor', 'User');\n }\n}\n\n/**\n * Get the globalStorage directory path\n */\nexport function getCursorGlobalStoragePath(): string {\n return join(getCursorUserDir(), 'globalStorage');\n}\n\n/**\n * Get the workspaceStorage directory path\n */\nexport function getCursorWorkspaceStoragePath(): string {\n return join(getCursorUserDir(), 'workspaceStorage');\n}\n\n/**\n * Get the full path to globalStorage/state.vscdb\n */\nexport function getCursorGlobalStateDbPath(): string {\n return join(getCursorGlobalStoragePath(), 'state.vscdb');\n}\n","/**\n * Claude Data Directory Discovery\n *\n * Discovers Claude Code data directories using a 2-step waterfall:\n * 1. Default ~/.claude/projects/ path\n * 2. Prefix glob: scan homedir for .claude* directories\n *\n * Each candidate is validated with a fingerprint check:\n * - Has a projects/ subdirectory\n * - Contains at least one encoded directory (dash-prefixed or Windows drive pattern)\n * - Contains at least one .jsonl session file\n *\n * Symlink dedup ensures the same physical directory isn't registered twice.\n */\n\nimport { readdir, stat, realpath } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { isWindowsEncodedPath } from '../path-encoding.js';\n\n/**\n * Validate that a directory looks like a Claude Code data directory.\n *\n * Fingerprint criteria:\n * 1. {dir}/projects/ exists and is a directory\n * 2. projects/ contains at least one encoded directory\n * (Unix: /Users/dev/app → -Users-dev-app, Windows: C:\\app → C--app)\n * 3. That subdirectory contains at least one .jsonl file\n */\nexport async function validateClaudeDataDir(dir: string): Promise {\n try {\n const projectsDir = join(dir, 'projects');\n const projectsStat = await stat(projectsDir);\n if (!projectsStat.isDirectory()) return false;\n\n const entries = await readdir(projectsDir);\n\n for (const entry of entries) {\n // Claude encodes paths: Unix starts with '-', Windows matches X--\n if (!entry.startsWith('-') && !isWindowsEncodedPath(entry)) continue;\n\n const entryPath = join(projectsDir, entry);\n const entryStat = await stat(entryPath);\n if (!entryStat.isDirectory()) continue;\n\n // Check for at least one .jsonl file\n const files = await readdir(entryPath);\n if (files.some((f) => f.endsWith('.jsonl'))) {\n return true;\n }\n }\n\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Discover Claude Code data directories using a 3-step waterfall.\n *\n * Returns validated projects/ directory paths (ready to pass to ClaudeCodeSource).\n * Results are deduped by resolved real path to handle symlinks.\n *\n * Waterfall:\n * 1. ~/.claude/projects/ → check existence → use if valid\n * 2. Scan homedir for .claude* directories → validate each\n */\nexport async function discoverClaudeDataDirs(): Promise {\n const discovered = new Map(); // realPath → projectsDir\n\n const addIfValid = async (dir: string): Promise => {\n try {\n const projectsDir = join(dir, 'projects');\n const resolved = await realpath(projectsDir);\n\n // Already discovered this physical path\n if (discovered.has(resolved)) return true;\n\n if (await validateClaudeDataDir(dir)) {\n discovered.set(resolved, projectsDir);\n return true;\n }\n } catch {\n // Path doesn't exist or isn't accessible\n }\n return false;\n };\n\n // Step 1: Default path ~/.claude/projects/\n const defaultDir = join(homedir(), '.claude');\n await addIfValid(defaultDir);\n\n // If default path works, return it (most common case — fast path)\n if (discovered.size > 0) {\n return Array.from(discovered.values());\n }\n\n // Step 2: Prefix glob — scan homedir for .claude* directories\n try {\n const home = homedir();\n const entries = await readdir(home);\n\n for (const entry of entries) {\n if (!entry.startsWith('.claude')) continue;\n // Skip the default .claude (already checked in step 2)\n if (entry === '.claude') continue;\n\n const candidateDir = join(home, entry);\n try {\n const s = await stat(candidateDir);\n if (s.isDirectory()) {\n await addIfValid(candidateDir);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n } catch {\n // homedir not readable — unusual but handle gracefully\n }\n\n return Array.from(discovered.values());\n}\n","/**\n * Multi-Source Session Scanner\n *\n * Unified scanner that discovers and parses sessions from multiple\n * AI coding assistant sources (Claude Code, Cursor, etc.)\n *\n * Architecture:\n * - SessionSource interface defines the contract for each source\n * - SourceRegistry maintains available sources\n * - MultiSourceScanner coordinates scanning across all sources\n */\n\n// Export types\nexport type {\n SessionSourceType,\n FileMetadata,\n SourcedSessionMetadata,\n SourcedParsedSession,\n DiscoveryConfig,\n SessionSource,\n} from './sources/base.js';\n\nexport { BaseSessionSource } from './sources/base.js';\n\n// Export source implementations\nexport { ClaudeCodeSource, claudeCodeSource, CLAUDE_PROJECTS_DIR } from './sources/claude-code.js';\nexport { CursorSource, cursorSource, CURSOR_CHATS_DIR } from './sources/cursor.js';\nexport { CursorComposerSource, cursorComposerSource } from './sources/cursor-composer.js';\nexport { discoverClaudeDataDirs, validateClaudeDataDir } from './sources/claude-discovery.js';\n\n// Export tool mapping utilities\nexport {\n TOOL_MAPPING,\n TOOL_CATEGORIES,\n CURSOR_COMPOSER_TOOL_IDS,\n normalizeToolName,\n resolveComposerToolId,\n getKnownTools,\n needsNormalization,\n getToolCategory,\n} from './tool-mapping.js';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Source Registry\n// ─────────────────────────────────────────────────────────────────────────\n\nimport type { SessionSource, FileMetadata, SourcedSessionMetadata, SourcedParsedSession } from './sources/base.js';\nimport { ClaudeCodeSource } from './sources/claude-code.js';\nimport { CursorSource } from './sources/cursor.js';\nimport { CursorComposerSource } from './sources/cursor-composer.js';\nimport { discoverClaudeDataDirs } from './sources/claude-discovery.js';\n\n/**\n * Registry of all available session sources\n *\n * Claude Code sources are lazily discovered on first getAvailable() call\n * using waterfall discovery (default path → prefix glob).\n * Cursor sources are registered synchronously in the constructor.\n */\nexport class SourceRegistry {\n private sources: SessionSource[] = [];\n private claudeInitialized = false;\n\n constructor() {\n // Claude Code sources are registered lazily via initClaudeSources()\n this.register(new CursorSource());\n this.register(new CursorComposerSource());\n }\n\n /**\n * Register a new session source\n */\n register(source: SessionSource): void {\n this.sources.push(source);\n }\n\n /**\n * Get all registered sources\n */\n getAll(): SessionSource[] {\n return [...this.sources];\n }\n\n /**\n * Get available sources (directory exists, dependencies met).\n * Lazily initializes Claude Code sources on first call.\n */\n async getAvailable(): Promise {\n if (!this.claudeInitialized) {\n await this.initClaudeSources();\n this.claudeInitialized = true;\n }\n\n const available: SessionSource[] = [];\n\n for (const source of this.sources) {\n if (await source.isAvailable()) {\n available.push(source);\n }\n }\n\n return available;\n }\n\n /**\n * Get a specific source by name\n */\n get(name: string): SessionSource | undefined {\n return this.sources.find((s) => s.name === name);\n }\n\n /**\n * Discover and register Claude Code sources from available data directories.\n */\n private async initClaudeSources(): Promise {\n const dirs = await discoverClaudeDataDirs();\n for (const dir of dirs) {\n this.register(new ClaudeCodeSource(dir));\n }\n }\n}\n\n// Default registry instance\nexport const sourceRegistry = new SourceRegistry();\n\n// ─────────────────────────────────────────────────────────────────────────\n// Multi-Source Scanner\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Configuration for multi-source scanning\n */\nexport interface MultiSourceScanConfig {\n /** Maximum candidates per source for pre-filtering */\n maxCandidatesPerSource?: number;\n /** Minimum file size to consider */\n minFileSize?: number;\n /** Maximum file size to consider */\n maxFileSize?: number;\n /** Source types to include (all if undefined) */\n includeSources?: string[];\n /** Source types to exclude */\n excludeSources?: string[];\n}\n\n/**\n * Result of multi-source file metadata collection\n */\nexport interface MultiSourceFileResult {\n files: FileMetadata[];\n sourceStats: Map;\n}\n\n/**\n * Multi-source session scanner\n *\n * Coordinates scanning across multiple session sources and\n * merges results into a unified format.\n */\nexport class MultiSourceScanner {\n constructor(private registry: SourceRegistry = sourceRegistry) {}\n\n /**\n * Collect file metadata from all available sources\n */\n async collectAllFileMetadata(\n config?: MultiSourceScanConfig\n ): Promise {\n const sources = await this.getFilteredSources(config);\n const allFiles: FileMetadata[] = [];\n const sourceStats = new Map();\n\n for (const source of sources) {\n const files = await source.collectFileMetadata({\n minFileSize: config?.minFileSize,\n maxFileSize: config?.maxFileSize,\n });\n\n allFiles.push(...files);\n sourceStats.set(source.name, files.length);\n }\n\n return { files: allFiles, sourceStats };\n }\n\n /**\n * Extract metadata for a file from the appropriate source\n */\n async extractMetadata(\n file: FileMetadata\n ): Promise {\n const source = this.registry.get(file.source);\n if (!source) return null;\n\n try {\n const content = await source.readSessionContent(file.filePath);\n return source.extractMetadata(file.filePath, content);\n } catch {\n return null;\n }\n }\n\n /**\n * Parse a session from the appropriate source\n */\n async parseSession(\n metadata: SourcedSessionMetadata\n ): Promise {\n const source = this.registry.get(metadata.source);\n if (!source) return null;\n\n try {\n // Handle SQLite-based sources (requires parseFromFile)\n if (metadata.source === 'cursor') {\n const cursorSource = source as CursorSource;\n return cursorSource.parseFromFile(metadata.filePath);\n }\n\n if (metadata.source === 'cursor-composer') {\n const composerSource = source as CursorComposerSource;\n return composerSource.parseFromFile(metadata.filePath);\n }\n\n // Standard path: read content and parse\n const content = await source.readSessionContent(metadata.filePath);\n return source.parseSessionContent(\n metadata.sessionId,\n metadata.projectPath,\n metadata.projectName,\n content\n );\n } catch {\n return null;\n }\n }\n\n /**\n * Get available source names\n */\n async getAvailableSources(): Promise {\n const sources = await this.registry.getAvailable();\n return sources.map((s) => s.name);\n }\n\n /**\n * Check source availability status.\n * Triggers lazy Claude source init if not yet done.\n */\n async getSourceStatus(): Promise> {\n // Ensure Claude sources are discovered before checking status\n const available = await this.registry.getAvailable();\n const status = new Map();\n\n for (const source of this.registry.getAll()) {\n status.set(source.name, available.some((s) => s === source));\n }\n\n return status;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n private async getFilteredSources(\n config?: MultiSourceScanConfig\n ): Promise {\n let sources = await this.registry.getAvailable();\n\n // Apply include filter\n if (config?.includeSources && config.includeSources.length > 0) {\n sources = sources.filter((s) => config.includeSources!.includes(s.name));\n }\n\n // Apply exclude filter\n if (config?.excludeSources && config.excludeSources.length > 0) {\n sources = sources.filter((s) => !config.excludeSources!.includes(s.name));\n }\n\n return sources;\n }\n}\n\n// Default scanner instance\nexport const multiSourceScanner = new MultiSourceScanner();\n\n// ─────────────────────────────────────────────────────────────────────────\n// Convenience functions\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Check if any session sources are available\n */\nexport async function hasAnySources(): Promise {\n const sources = await sourceRegistry.getAvailable();\n return sources.length > 0;\n}\n\n/**\n * Get display names for available sources\n */\nexport async function getAvailableSourceNames(): Promise<{ name: string; displayName: string }[]> {\n const sources = await sourceRegistry.getAvailable();\n return sources.map((s) => ({\n name: s.name,\n displayName: s.displayName,\n }));\n}\n"],"mappings":"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","names":["readFile","join","resolved","join","homedir","join","homedir","readdir","stat","join","basename","homedir","join","homedir","stat","basename","readdir","stat","join","homedir","join","stat","readdir","stat","join","homedir","join","stat","readdir","homedir","cursorSource","join","readFile"]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-UORQZYNI.js b/packages/plugin/dist/chunk-UORQZYNI.js new file mode 100644 index 00000000..24d9fb10 --- /dev/null +++ b/packages/plugin/dist/chunk-UORQZYNI.js @@ -0,0 +1,15692 @@ +import { + __export +} from "./chunk-NSBPE2FW.js"; + +// ../../node_modules/zod/v4/classic/external.js +var external_exports = {}; +__export(external_exports, { + $brand: () => $brand, + $input: () => $input, + $output: () => $output, + NEVER: () => NEVER, + TimePrecision: () => TimePrecision, + ZodAny: () => ZodAny, + ZodArray: () => ZodArray, + ZodBase64: () => ZodBase64, + ZodBase64URL: () => ZodBase64URL, + ZodBigInt: () => ZodBigInt, + ZodBigIntFormat: () => ZodBigIntFormat, + ZodBoolean: () => ZodBoolean, + ZodCIDRv4: () => ZodCIDRv4, + ZodCIDRv6: () => ZodCIDRv6, + ZodCUID: () => ZodCUID, + ZodCUID2: () => ZodCUID2, + ZodCatch: () => ZodCatch, + ZodCodec: () => ZodCodec, + ZodCustom: () => ZodCustom, + ZodCustomStringFormat: () => ZodCustomStringFormat, + ZodDate: () => ZodDate, + ZodDefault: () => ZodDefault, + ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, + ZodE164: () => ZodE164, + ZodEmail: () => ZodEmail, + ZodEmoji: () => ZodEmoji, + ZodEnum: () => ZodEnum, + ZodError: () => ZodError, + ZodExactOptional: () => ZodExactOptional, + ZodFile: () => ZodFile, + ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind, + ZodFunction: () => ZodFunction, + ZodGUID: () => ZodGUID, + ZodIPv4: () => ZodIPv4, + ZodIPv6: () => ZodIPv6, + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + ZodIntersection: () => ZodIntersection, + ZodIssueCode: () => ZodIssueCode, + ZodJWT: () => ZodJWT, + ZodKSUID: () => ZodKSUID, + ZodLazy: () => ZodLazy, + ZodLiteral: () => ZodLiteral, + ZodMAC: () => ZodMAC, + ZodMap: () => ZodMap, + ZodNaN: () => ZodNaN, + ZodNanoID: () => ZodNanoID, + ZodNever: () => ZodNever, + ZodNonOptional: () => ZodNonOptional, + ZodNull: () => ZodNull, + ZodNullable: () => ZodNullable, + ZodNumber: () => ZodNumber, + ZodNumberFormat: () => ZodNumberFormat, + ZodObject: () => ZodObject, + ZodOptional: () => ZodOptional, + ZodPipe: () => ZodPipe, + ZodPrefault: () => ZodPrefault, + ZodPromise: () => ZodPromise, + ZodReadonly: () => ZodReadonly, + ZodRealError: () => ZodRealError, + ZodRecord: () => ZodRecord, + ZodSet: () => ZodSet, + ZodString: () => ZodString, + ZodStringFormat: () => ZodStringFormat, + ZodSuccess: () => ZodSuccess, + ZodSymbol: () => ZodSymbol, + ZodTemplateLiteral: () => ZodTemplateLiteral, + ZodTransform: () => ZodTransform, + ZodTuple: () => ZodTuple, + ZodType: () => ZodType, + ZodULID: () => ZodULID, + ZodURL: () => ZodURL, + ZodUUID: () => ZodUUID, + ZodUndefined: () => ZodUndefined, + ZodUnion: () => ZodUnion, + ZodUnknown: () => ZodUnknown, + ZodVoid: () => ZodVoid, + ZodXID: () => ZodXID, + ZodXor: () => ZodXor, + _ZodString: () => _ZodString, + _default: () => _default2, + _function: () => _function, + any: () => any, + array: () => array, + base64: () => base642, + base64url: () => base64url2, + bigint: () => bigint2, + boolean: () => boolean2, + catch: () => _catch2, + check: () => check, + cidrv4: () => cidrv42, + cidrv6: () => cidrv62, + clone: () => clone, + codec: () => codec, + coerce: () => coerce_exports, + config: () => config, + core: () => core_exports2, + cuid: () => cuid3, + cuid2: () => cuid22, + custom: () => custom, + date: () => date3, + decode: () => decode2, + decodeAsync: () => decodeAsync2, + describe: () => describe2, + discriminatedUnion: () => discriminatedUnion, + e164: () => e1642, + email: () => email2, + emoji: () => emoji2, + encode: () => encode2, + encodeAsync: () => encodeAsync2, + endsWith: () => _endsWith, + enum: () => _enum2, + exactOptional: () => exactOptional, + file: () => file, + flattenError: () => flattenError, + float32: () => float32, + float64: () => float64, + formatError: () => formatError, + fromJSONSchema: () => fromJSONSchema, + function: () => _function, + getErrorMap: () => getErrorMap, + globalRegistry: () => globalRegistry, + gt: () => _gt, + gte: () => _gte, + guid: () => guid2, + hash: () => hash, + hex: () => hex2, + hostname: () => hostname2, + httpUrl: () => httpUrl, + includes: () => _includes, + instanceof: () => _instanceof, + int: () => int, + int32: () => int32, + int64: () => int64, + intersection: () => intersection, + ipv4: () => ipv42, + ipv6: () => ipv62, + iso: () => iso_exports, + json: () => json, + jwt: () => jwt, + keyof: () => keyof, + ksuid: () => ksuid2, + lazy: () => lazy, + length: () => _length, + literal: () => literal, + locales: () => locales_exports, + looseObject: () => looseObject, + looseRecord: () => looseRecord, + lowercase: () => _lowercase, + lt: () => _lt, + lte: () => _lte, + mac: () => mac2, + map: () => map, + maxLength: () => _maxLength, + maxSize: () => _maxSize, + meta: () => meta2, + mime: () => _mime, + minLength: () => _minLength, + minSize: () => _minSize, + multipleOf: () => _multipleOf, + nan: () => nan, + nanoid: () => nanoid2, + nativeEnum: () => nativeEnum, + negative: () => _negative, + never: () => never, + nonnegative: () => _nonnegative, + nonoptional: () => nonoptional, + nonpositive: () => _nonpositive, + normalize: () => _normalize, + null: () => _null3, + nullable: () => nullable, + nullish: () => nullish2, + number: () => number2, + object: () => object, + optional: () => optional, + overwrite: () => _overwrite, + parse: () => parse2, + parseAsync: () => parseAsync2, + partialRecord: () => partialRecord, + pipe: () => pipe, + positive: () => _positive, + prefault: () => prefault, + preprocess: () => preprocess, + prettifyError: () => prettifyError, + promise: () => promise, + property: () => _property, + readonly: () => readonly, + record: () => record, + refine: () => refine, + regex: () => _regex, + regexes: () => regexes_exports, + registry: () => registry, + safeDecode: () => safeDecode2, + safeDecodeAsync: () => safeDecodeAsync2, + safeEncode: () => safeEncode2, + safeEncodeAsync: () => safeEncodeAsync2, + safeParse: () => safeParse2, + safeParseAsync: () => safeParseAsync2, + set: () => set, + setErrorMap: () => setErrorMap, + size: () => _size, + slugify: () => _slugify, + startsWith: () => _startsWith, + strictObject: () => strictObject, + string: () => string2, + stringFormat: () => stringFormat, + stringbool: () => stringbool, + success: () => success, + superRefine: () => superRefine, + symbol: () => symbol, + templateLiteral: () => templateLiteral, + toJSONSchema: () => toJSONSchema, + toLowerCase: () => _toLowerCase, + toUpperCase: () => _toUpperCase, + transform: () => transform, + treeifyError: () => treeifyError, + trim: () => _trim, + tuple: () => tuple, + uint32: () => uint32, + uint64: () => uint64, + ulid: () => ulid2, + undefined: () => _undefined3, + union: () => union, + unknown: () => unknown, + uppercase: () => _uppercase, + url: () => url, + util: () => util_exports, + uuid: () => uuid2, + uuidv4: () => uuidv4, + uuidv6: () => uuidv6, + uuidv7: () => uuidv7, + void: () => _void2, + xid: () => xid2, + xor: () => xor +}); + +// ../../node_modules/zod/v4/core/index.js +var core_exports2 = {}; +__export(core_exports2, { + $ZodAny: () => $ZodAny, + $ZodArray: () => $ZodArray, + $ZodAsyncError: () => $ZodAsyncError, + $ZodBase64: () => $ZodBase64, + $ZodBase64URL: () => $ZodBase64URL, + $ZodBigInt: () => $ZodBigInt, + $ZodBigIntFormat: () => $ZodBigIntFormat, + $ZodBoolean: () => $ZodBoolean, + $ZodCIDRv4: () => $ZodCIDRv4, + $ZodCIDRv6: () => $ZodCIDRv6, + $ZodCUID: () => $ZodCUID, + $ZodCUID2: () => $ZodCUID2, + $ZodCatch: () => $ZodCatch, + $ZodCheck: () => $ZodCheck, + $ZodCheckBigIntFormat: () => $ZodCheckBigIntFormat, + $ZodCheckEndsWith: () => $ZodCheckEndsWith, + $ZodCheckGreaterThan: () => $ZodCheckGreaterThan, + $ZodCheckIncludes: () => $ZodCheckIncludes, + $ZodCheckLengthEquals: () => $ZodCheckLengthEquals, + $ZodCheckLessThan: () => $ZodCheckLessThan, + $ZodCheckLowerCase: () => $ZodCheckLowerCase, + $ZodCheckMaxLength: () => $ZodCheckMaxLength, + $ZodCheckMaxSize: () => $ZodCheckMaxSize, + $ZodCheckMimeType: () => $ZodCheckMimeType, + $ZodCheckMinLength: () => $ZodCheckMinLength, + $ZodCheckMinSize: () => $ZodCheckMinSize, + $ZodCheckMultipleOf: () => $ZodCheckMultipleOf, + $ZodCheckNumberFormat: () => $ZodCheckNumberFormat, + $ZodCheckOverwrite: () => $ZodCheckOverwrite, + $ZodCheckProperty: () => $ZodCheckProperty, + $ZodCheckRegex: () => $ZodCheckRegex, + $ZodCheckSizeEquals: () => $ZodCheckSizeEquals, + $ZodCheckStartsWith: () => $ZodCheckStartsWith, + $ZodCheckStringFormat: () => $ZodCheckStringFormat, + $ZodCheckUpperCase: () => $ZodCheckUpperCase, + $ZodCodec: () => $ZodCodec, + $ZodCustom: () => $ZodCustom, + $ZodCustomStringFormat: () => $ZodCustomStringFormat, + $ZodDate: () => $ZodDate, + $ZodDefault: () => $ZodDefault, + $ZodDiscriminatedUnion: () => $ZodDiscriminatedUnion, + $ZodE164: () => $ZodE164, + $ZodEmail: () => $ZodEmail, + $ZodEmoji: () => $ZodEmoji, + $ZodEncodeError: () => $ZodEncodeError, + $ZodEnum: () => $ZodEnum, + $ZodError: () => $ZodError, + $ZodExactOptional: () => $ZodExactOptional, + $ZodFile: () => $ZodFile, + $ZodFunction: () => $ZodFunction, + $ZodGUID: () => $ZodGUID, + $ZodIPv4: () => $ZodIPv4, + $ZodIPv6: () => $ZodIPv6, + $ZodISODate: () => $ZodISODate, + $ZodISODateTime: () => $ZodISODateTime, + $ZodISODuration: () => $ZodISODuration, + $ZodISOTime: () => $ZodISOTime, + $ZodIntersection: () => $ZodIntersection, + $ZodJWT: () => $ZodJWT, + $ZodKSUID: () => $ZodKSUID, + $ZodLazy: () => $ZodLazy, + $ZodLiteral: () => $ZodLiteral, + $ZodMAC: () => $ZodMAC, + $ZodMap: () => $ZodMap, + $ZodNaN: () => $ZodNaN, + $ZodNanoID: () => $ZodNanoID, + $ZodNever: () => $ZodNever, + $ZodNonOptional: () => $ZodNonOptional, + $ZodNull: () => $ZodNull, + $ZodNullable: () => $ZodNullable, + $ZodNumber: () => $ZodNumber, + $ZodNumberFormat: () => $ZodNumberFormat, + $ZodObject: () => $ZodObject, + $ZodObjectJIT: () => $ZodObjectJIT, + $ZodOptional: () => $ZodOptional, + $ZodPipe: () => $ZodPipe, + $ZodPrefault: () => $ZodPrefault, + $ZodPromise: () => $ZodPromise, + $ZodReadonly: () => $ZodReadonly, + $ZodRealError: () => $ZodRealError, + $ZodRecord: () => $ZodRecord, + $ZodRegistry: () => $ZodRegistry, + $ZodSet: () => $ZodSet, + $ZodString: () => $ZodString, + $ZodStringFormat: () => $ZodStringFormat, + $ZodSuccess: () => $ZodSuccess, + $ZodSymbol: () => $ZodSymbol, + $ZodTemplateLiteral: () => $ZodTemplateLiteral, + $ZodTransform: () => $ZodTransform, + $ZodTuple: () => $ZodTuple, + $ZodType: () => $ZodType, + $ZodULID: () => $ZodULID, + $ZodURL: () => $ZodURL, + $ZodUUID: () => $ZodUUID, + $ZodUndefined: () => $ZodUndefined, + $ZodUnion: () => $ZodUnion, + $ZodUnknown: () => $ZodUnknown, + $ZodVoid: () => $ZodVoid, + $ZodXID: () => $ZodXID, + $ZodXor: () => $ZodXor, + $brand: () => $brand, + $constructor: () => $constructor, + $input: () => $input, + $output: () => $output, + Doc: () => Doc, + JSONSchema: () => json_schema_exports, + JSONSchemaGenerator: () => JSONSchemaGenerator, + NEVER: () => NEVER, + TimePrecision: () => TimePrecision, + _any: () => _any, + _array: () => _array, + _base64: () => _base64, + _base64url: () => _base64url, + _bigint: () => _bigint, + _boolean: () => _boolean, + _catch: () => _catch, + _check: () => _check, + _cidrv4: () => _cidrv4, + _cidrv6: () => _cidrv6, + _coercedBigint: () => _coercedBigint, + _coercedBoolean: () => _coercedBoolean, + _coercedDate: () => _coercedDate, + _coercedNumber: () => _coercedNumber, + _coercedString: () => _coercedString, + _cuid: () => _cuid, + _cuid2: () => _cuid2, + _custom: () => _custom, + _date: () => _date, + _decode: () => _decode, + _decodeAsync: () => _decodeAsync, + _default: () => _default, + _discriminatedUnion: () => _discriminatedUnion, + _e164: () => _e164, + _email: () => _email, + _emoji: () => _emoji2, + _encode: () => _encode, + _encodeAsync: () => _encodeAsync, + _endsWith: () => _endsWith, + _enum: () => _enum, + _file: () => _file, + _float32: () => _float32, + _float64: () => _float64, + _gt: () => _gt, + _gte: () => _gte, + _guid: () => _guid, + _includes: () => _includes, + _int: () => _int, + _int32: () => _int32, + _int64: () => _int64, + _intersection: () => _intersection, + _ipv4: () => _ipv4, + _ipv6: () => _ipv6, + _isoDate: () => _isoDate, + _isoDateTime: () => _isoDateTime, + _isoDuration: () => _isoDuration, + _isoTime: () => _isoTime, + _jwt: () => _jwt, + _ksuid: () => _ksuid, + _lazy: () => _lazy, + _length: () => _length, + _literal: () => _literal, + _lowercase: () => _lowercase, + _lt: () => _lt, + _lte: () => _lte, + _mac: () => _mac, + _map: () => _map, + _max: () => _lte, + _maxLength: () => _maxLength, + _maxSize: () => _maxSize, + _mime: () => _mime, + _min: () => _gte, + _minLength: () => _minLength, + _minSize: () => _minSize, + _multipleOf: () => _multipleOf, + _nan: () => _nan, + _nanoid: () => _nanoid, + _nativeEnum: () => _nativeEnum, + _negative: () => _negative, + _never: () => _never, + _nonnegative: () => _nonnegative, + _nonoptional: () => _nonoptional, + _nonpositive: () => _nonpositive, + _normalize: () => _normalize, + _null: () => _null2, + _nullable: () => _nullable, + _number: () => _number, + _optional: () => _optional, + _overwrite: () => _overwrite, + _parse: () => _parse, + _parseAsync: () => _parseAsync, + _pipe: () => _pipe, + _positive: () => _positive, + _promise: () => _promise, + _property: () => _property, + _readonly: () => _readonly, + _record: () => _record, + _refine: () => _refine, + _regex: () => _regex, + _safeDecode: () => _safeDecode, + _safeDecodeAsync: () => _safeDecodeAsync, + _safeEncode: () => _safeEncode, + _safeEncodeAsync: () => _safeEncodeAsync, + _safeParse: () => _safeParse, + _safeParseAsync: () => _safeParseAsync, + _set: () => _set, + _size: () => _size, + _slugify: () => _slugify, + _startsWith: () => _startsWith, + _string: () => _string, + _stringFormat: () => _stringFormat, + _stringbool: () => _stringbool, + _success: () => _success, + _superRefine: () => _superRefine, + _symbol: () => _symbol, + _templateLiteral: () => _templateLiteral, + _toLowerCase: () => _toLowerCase, + _toUpperCase: () => _toUpperCase, + _transform: () => _transform, + _trim: () => _trim, + _tuple: () => _tuple, + _uint32: () => _uint32, + _uint64: () => _uint64, + _ulid: () => _ulid, + _undefined: () => _undefined2, + _union: () => _union, + _unknown: () => _unknown, + _uppercase: () => _uppercase, + _url: () => _url, + _uuid: () => _uuid, + _uuidv4: () => _uuidv4, + _uuidv6: () => _uuidv6, + _uuidv7: () => _uuidv7, + _void: () => _void, + _xid: () => _xid, + _xor: () => _xor, + clone: () => clone, + config: () => config, + createStandardJSONSchemaMethod: () => createStandardJSONSchemaMethod, + createToJSONSchemaMethod: () => createToJSONSchemaMethod, + decode: () => decode, + decodeAsync: () => decodeAsync, + describe: () => describe, + encode: () => encode, + encodeAsync: () => encodeAsync, + extractDefs: () => extractDefs, + finalize: () => finalize, + flattenError: () => flattenError, + formatError: () => formatError, + globalConfig: () => globalConfig, + globalRegistry: () => globalRegistry, + initializeContext: () => initializeContext, + isValidBase64: () => isValidBase64, + isValidBase64URL: () => isValidBase64URL, + isValidJWT: () => isValidJWT, + locales: () => locales_exports, + meta: () => meta, + parse: () => parse, + parseAsync: () => parseAsync, + prettifyError: () => prettifyError, + process: () => process, + regexes: () => regexes_exports, + registry: () => registry, + safeDecode: () => safeDecode, + safeDecodeAsync: () => safeDecodeAsync, + safeEncode: () => safeEncode, + safeEncodeAsync: () => safeEncodeAsync, + safeParse: () => safeParse, + safeParseAsync: () => safeParseAsync, + toDotPath: () => toDotPath, + toJSONSchema: () => toJSONSchema, + treeifyError: () => treeifyError, + util: () => util_exports, + version: () => version +}); + +// ../../node_modules/zod/v4/core/core.js +var NEVER = Object.freeze({ + status: "aborted" +}); +// @__NO_SIDE_EFFECTS__ +function $constructor(name, initializer3, params) { + function init(inst, def) { + if (!inst._zod) { + Object.defineProperty(inst, "_zod", { + value: { + def, + constr: _, + traits: /* @__PURE__ */ new Set() + }, + enumerable: false + }); + } + if (inst._zod.traits.has(name)) { + return; + } + inst._zod.traits.add(name); + initializer3(inst, def); + const proto = _.prototype; + const keys = Object.keys(proto); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + if (!(k in inst)) { + inst[k] = proto[k].bind(inst); + } + } + } + const Parent = params?.Parent ?? Object; + class Definition extends Parent { + } + Object.defineProperty(Definition, "name", { value: name }); + function _(def) { + var _a2; + const inst = params?.Parent ? new Definition() : this; + init(inst, def); + (_a2 = inst._zod).deferred ?? (_a2.deferred = []); + for (const fn of inst._zod.deferred) { + fn(); + } + return inst; + } + Object.defineProperty(_, "init", { value: init }); + Object.defineProperty(_, Symbol.hasInstance, { + value: (inst) => { + if (params?.Parent && inst instanceof params.Parent) + return true; + return inst?._zod?.traits?.has(name); + } + }); + Object.defineProperty(_, "name", { value: name }); + return _; +} +var $brand = /* @__PURE__ */ Symbol("zod_brand"); +var $ZodAsyncError = class extends Error { + constructor() { + super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`); + } +}; +var $ZodEncodeError = class extends Error { + constructor(name) { + super(`Encountered unidirectional transform during encode: ${name}`); + this.name = "ZodEncodeError"; + } +}; +var globalConfig = {}; +function config(newConfig) { + if (newConfig) + Object.assign(globalConfig, newConfig); + return globalConfig; +} + +// ../../node_modules/zod/v4/core/util.js +var util_exports = {}; +__export(util_exports, { + BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES, + Class: () => Class, + NUMBER_FORMAT_RANGES: () => NUMBER_FORMAT_RANGES, + aborted: () => aborted, + allowsEval: () => allowsEval, + assert: () => assert, + assertEqual: () => assertEqual, + assertIs: () => assertIs, + assertNever: () => assertNever, + assertNotEqual: () => assertNotEqual, + assignProp: () => assignProp, + base64ToUint8Array: () => base64ToUint8Array, + base64urlToUint8Array: () => base64urlToUint8Array, + cached: () => cached, + captureStackTrace: () => captureStackTrace, + cleanEnum: () => cleanEnum, + cleanRegex: () => cleanRegex, + clone: () => clone, + cloneDef: () => cloneDef, + createTransparentProxy: () => createTransparentProxy, + defineLazy: () => defineLazy, + esc: () => esc, + escapeRegex: () => escapeRegex, + extend: () => extend, + finalizeIssue: () => finalizeIssue, + floatSafeRemainder: () => floatSafeRemainder, + getElementAtPath: () => getElementAtPath, + getEnumValues: () => getEnumValues, + getLengthableOrigin: () => getLengthableOrigin, + getParsedType: () => getParsedType, + getSizableOrigin: () => getSizableOrigin, + hexToUint8Array: () => hexToUint8Array, + isObject: () => isObject, + isPlainObject: () => isPlainObject, + issue: () => issue, + joinValues: () => joinValues, + jsonStringifyReplacer: () => jsonStringifyReplacer, + merge: () => merge, + mergeDefs: () => mergeDefs, + normalizeParams: () => normalizeParams, + nullish: () => nullish, + numKeys: () => numKeys, + objectClone: () => objectClone, + omit: () => omit, + optionalKeys: () => optionalKeys, + parsedType: () => parsedType, + partial: () => partial, + pick: () => pick, + prefixIssues: () => prefixIssues, + primitiveTypes: () => primitiveTypes, + promiseAllObject: () => promiseAllObject, + propertyKeyTypes: () => propertyKeyTypes, + randomString: () => randomString, + required: () => required, + safeExtend: () => safeExtend, + shallowClone: () => shallowClone, + slugify: () => slugify, + stringifyPrimitive: () => stringifyPrimitive, + uint8ArrayToBase64: () => uint8ArrayToBase64, + uint8ArrayToBase64url: () => uint8ArrayToBase64url, + uint8ArrayToHex: () => uint8ArrayToHex, + unwrapMessage: () => unwrapMessage +}); +function assertEqual(val) { + return val; +} +function assertNotEqual(val) { + return val; +} +function assertIs(_arg) { +} +function assertNever(_x) { + throw new Error("Unexpected value in exhaustive check"); +} +function assert(_) { +} +function getEnumValues(entries) { + const numericValues = Object.values(entries).filter((v) => typeof v === "number"); + const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); + return values; +} +function joinValues(array2, separator = "|") { + return array2.map((val) => stringifyPrimitive(val)).join(separator); +} +function jsonStringifyReplacer(_, value) { + if (typeof value === "bigint") + return value.toString(); + return value; +} +function cached(getter) { + const set2 = false; + return { + get value() { + if (!set2) { + const value = getter(); + Object.defineProperty(this, "value", { value }); + return value; + } + throw new Error("cached value already set"); + } + }; +} +function nullish(input) { + return input === null || input === void 0; +} +function cleanRegex(source) { + const start = source.startsWith("^") ? 1 : 0; + const end = source.endsWith("$") ? source.length - 1 : source.length; + return source.slice(start, end); +} +function floatSafeRemainder(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepString = step.toString(); + let stepDecCount = (stepString.split(".")[1] || "").length; + if (stepDecCount === 0 && /\d?e-\d?/.test(stepString)) { + const match = stepString.match(/\d?e-(\d?)/); + if (match?.[1]) { + stepDecCount = Number.parseInt(match[1]); + } + } + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); + return valInt % stepInt / 10 ** decCount; +} +var EVALUATING = /* @__PURE__ */ Symbol("evaluating"); +function defineLazy(object2, key, getter) { + let value = void 0; + Object.defineProperty(object2, key, { + get() { + if (value === EVALUATING) { + return void 0; + } + if (value === void 0) { + value = EVALUATING; + value = getter(); + } + return value; + }, + set(v) { + Object.defineProperty(object2, key, { + value: v + // configurable: true, + }); + }, + configurable: true + }); +} +function objectClone(obj) { + return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); +} +function assignProp(target, prop, value) { + Object.defineProperty(target, prop, { + value, + writable: true, + enumerable: true, + configurable: true + }); +} +function mergeDefs(...defs) { + const mergedDescriptors = {}; + for (const def of defs) { + const descriptors = Object.getOwnPropertyDescriptors(def); + Object.assign(mergedDescriptors, descriptors); + } + return Object.defineProperties({}, mergedDescriptors); +} +function cloneDef(schema) { + return mergeDefs(schema._zod.def); +} +function getElementAtPath(obj, path) { + if (!path) + return obj; + return path.reduce((acc, key) => acc?.[key], obj); +} +function promiseAllObject(promisesObj) { + const keys = Object.keys(promisesObj); + const promises = keys.map((key) => promisesObj[key]); + return Promise.all(promises).then((results) => { + const resolvedObj = {}; + for (let i = 0; i < keys.length; i++) { + resolvedObj[keys[i]] = results[i]; + } + return resolvedObj; + }); +} +function randomString(length = 10) { + const chars = "abcdefghijklmnopqrstuvwxyz"; + let str = ""; + for (let i = 0; i < length; i++) { + str += chars[Math.floor(Math.random() * chars.length)]; + } + return str; +} +function esc(str) { + return JSON.stringify(str); +} +function slugify(input) { + return input.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, ""); +} +var captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { +}; +function isObject(data) { + return typeof data === "object" && data !== null && !Array.isArray(data); +} +var allowsEval = cached(() => { + if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) { + return false; + } + try { + const F = Function; + new F(""); + return true; + } catch (_) { + return false; + } +}); +function isPlainObject(o) { + if (isObject(o) === false) + return false; + const ctor = o.constructor; + if (ctor === void 0) + return true; + if (typeof ctor !== "function") + return true; + const prot = ctor.prototype; + if (isObject(prot) === false) + return false; + if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) { + return false; + } + return true; +} +function shallowClone(o) { + if (isPlainObject(o)) + return { ...o }; + if (Array.isArray(o)) + return [...o]; + return o; +} +function numKeys(data) { + let keyCount = 0; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + keyCount++; + } + } + return keyCount; +} +var getParsedType = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return "undefined"; + case "string": + return "string"; + case "number": + return Number.isNaN(data) ? "nan" : "number"; + case "boolean": + return "boolean"; + case "function": + return "function"; + case "bigint": + return "bigint"; + case "symbol": + return "symbol"; + case "object": + if (Array.isArray(data)) { + return "array"; + } + if (data === null) { + return "null"; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return "promise"; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return "map"; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return "set"; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return "date"; + } + if (typeof File !== "undefined" && data instanceof File) { + return "file"; + } + return "object"; + default: + throw new Error(`Unknown data type: ${t}`); + } +}; +var propertyKeyTypes = /* @__PURE__ */ new Set(["string", "number", "symbol"]); +var primitiveTypes = /* @__PURE__ */ new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]); +function escapeRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +function clone(inst, def, params) { + const cl = new inst._zod.constr(def ?? inst._zod.def); + if (!def || params?.parent) + cl._zod.parent = inst; + return cl; +} +function normalizeParams(_params) { + const params = _params; + if (!params) + return {}; + if (typeof params === "string") + return { error: () => params }; + if (params?.message !== void 0) { + if (params?.error !== void 0) + throw new Error("Cannot specify both `message` and `error` params"); + params.error = params.message; + } + delete params.message; + if (typeof params.error === "string") + return { ...params, error: () => params.error }; + return params; +} +function createTransparentProxy(getter) { + let target; + return new Proxy({}, { + get(_, prop, receiver) { + target ?? (target = getter()); + return Reflect.get(target, prop, receiver); + }, + set(_, prop, value, receiver) { + target ?? (target = getter()); + return Reflect.set(target, prop, value, receiver); + }, + has(_, prop) { + target ?? (target = getter()); + return Reflect.has(target, prop); + }, + deleteProperty(_, prop) { + target ?? (target = getter()); + return Reflect.deleteProperty(target, prop); + }, + ownKeys(_) { + target ?? (target = getter()); + return Reflect.ownKeys(target); + }, + getOwnPropertyDescriptor(_, prop) { + target ?? (target = getter()); + return Reflect.getOwnPropertyDescriptor(target, prop); + }, + defineProperty(_, prop, descriptor) { + target ?? (target = getter()); + return Reflect.defineProperty(target, prop, descriptor); + } + }); +} +function stringifyPrimitive(value) { + if (typeof value === "bigint") + return value.toString() + "n"; + if (typeof value === "string") + return `"${value}"`; + return `${value}`; +} +function optionalKeys(shape) { + return Object.keys(shape).filter((k) => { + return shape[k]._zod.optin === "optional" && shape[k]._zod.optout === "optional"; + }); +} +var NUMBER_FORMAT_RANGES = { + safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], + int32: [-2147483648, 2147483647], + uint32: [0, 4294967295], + float32: [-34028234663852886e22, 34028234663852886e22], + float64: [-Number.MAX_VALUE, Number.MAX_VALUE] +}; +var BIGINT_FORMAT_RANGES = { + int64: [/* @__PURE__ */ BigInt("-9223372036854775808"), /* @__PURE__ */ BigInt("9223372036854775807")], + uint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt("18446744073709551615")] +}; +function pick(schema, mask) { + const currDef = schema._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(".pick() cannot be used on object schemas containing refinements"); + } + const def = mergeDefs(schema._zod.def, { + get shape() { + const newShape = {}; + for (const key in mask) { + if (!(key in currDef.shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + newShape[key] = currDef.shape[key]; + } + assignProp(this, "shape", newShape); + return newShape; + }, + checks: [] + }); + return clone(schema, def); +} +function omit(schema, mask) { + const currDef = schema._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(".omit() cannot be used on object schemas containing refinements"); + } + const def = mergeDefs(schema._zod.def, { + get shape() { + const newShape = { ...schema._zod.def.shape }; + for (const key in mask) { + if (!(key in currDef.shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + delete newShape[key]; + } + assignProp(this, "shape", newShape); + return newShape; + }, + checks: [] + }); + return clone(schema, def); +} +function extend(schema, shape) { + if (!isPlainObject(shape)) { + throw new Error("Invalid input to extend: expected a plain object"); + } + const checks = schema._zod.def.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + const existingShape = schema._zod.def.shape; + for (const key in shape) { + if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) { + throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead."); + } + } + } + const def = mergeDefs(schema._zod.def, { + get shape() { + const _shape = { ...schema._zod.def.shape, ...shape }; + assignProp(this, "shape", _shape); + return _shape; + } + }); + return clone(schema, def); +} +function safeExtend(schema, shape) { + if (!isPlainObject(shape)) { + throw new Error("Invalid input to safeExtend: expected a plain object"); + } + const def = mergeDefs(schema._zod.def, { + get shape() { + const _shape = { ...schema._zod.def.shape, ...shape }; + assignProp(this, "shape", _shape); + return _shape; + } + }); + return clone(schema, def); +} +function merge(a, b) { + const def = mergeDefs(a._zod.def, { + get shape() { + const _shape = { ...a._zod.def.shape, ...b._zod.def.shape }; + assignProp(this, "shape", _shape); + return _shape; + }, + get catchall() { + return b._zod.def.catchall; + }, + checks: [] + // delete existing checks + }); + return clone(a, def); +} +function partial(Class2, schema, mask) { + const currDef = schema._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(".partial() cannot be used on object schemas containing refinements"); + } + const def = mergeDefs(schema._zod.def, { + get shape() { + const oldShape = schema._zod.def.shape; + const shape = { ...oldShape }; + if (mask) { + for (const key in mask) { + if (!(key in oldShape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + shape[key] = Class2 ? new Class2({ + type: "optional", + innerType: oldShape[key] + }) : oldShape[key]; + } + } else { + for (const key in oldShape) { + shape[key] = Class2 ? new Class2({ + type: "optional", + innerType: oldShape[key] + }) : oldShape[key]; + } + } + assignProp(this, "shape", shape); + return shape; + }, + checks: [] + }); + return clone(schema, def); +} +function required(Class2, schema, mask) { + const def = mergeDefs(schema._zod.def, { + get shape() { + const oldShape = schema._zod.def.shape; + const shape = { ...oldShape }; + if (mask) { + for (const key in mask) { + if (!(key in shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + shape[key] = new Class2({ + type: "nonoptional", + innerType: oldShape[key] + }); + } + } else { + for (const key in oldShape) { + shape[key] = new Class2({ + type: "nonoptional", + innerType: oldShape[key] + }); + } + } + assignProp(this, "shape", shape); + return shape; + } + }); + return clone(schema, def); +} +function aborted(x, startIndex = 0) { + if (x.aborted === true) + return true; + for (let i = startIndex; i < x.issues.length; i++) { + if (x.issues[i]?.continue !== true) { + return true; + } + } + return false; +} +function prefixIssues(path, issues) { + return issues.map((iss) => { + var _a2; + (_a2 = iss).path ?? (_a2.path = []); + iss.path.unshift(path); + return iss; + }); +} +function unwrapMessage(message) { + return typeof message === "string" ? message : message?.message; +} +function finalizeIssue(iss, ctx, config2) { + const full = { ...iss, path: iss.path ?? [] }; + if (!iss.message) { + const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config2.customError?.(iss)) ?? unwrapMessage(config2.localeError?.(iss)) ?? "Invalid input"; + full.message = message; + } + delete full.inst; + delete full.continue; + if (!ctx?.reportInput) { + delete full.input; + } + return full; +} +function getSizableOrigin(input) { + if (input instanceof Set) + return "set"; + if (input instanceof Map) + return "map"; + if (input instanceof File) + return "file"; + return "unknown"; +} +function getLengthableOrigin(input) { + if (Array.isArray(input)) + return "array"; + if (typeof input === "string") + return "string"; + return "unknown"; +} +function parsedType(data) { + const t = typeof data; + switch (t) { + case "number": { + return Number.isNaN(data) ? "nan" : "number"; + } + case "object": { + if (data === null) { + return "null"; + } + if (Array.isArray(data)) { + return "array"; + } + const obj = data; + if (obj && Object.getPrototypeOf(obj) !== Object.prototype && "constructor" in obj && obj.constructor) { + return obj.constructor.name; + } + } + } + return t; +} +function issue(...args) { + const [iss, input, inst] = args; + if (typeof iss === "string") { + return { + message: iss, + code: "custom", + input, + inst + }; + } + return { ...iss }; +} +function cleanEnum(obj) { + return Object.entries(obj).filter(([k, _]) => { + return Number.isNaN(Number.parseInt(k, 10)); + }).map((el) => el[1]); +} +function base64ToUint8Array(base643) { + const binaryString = atob(base643); + const bytes = new Uint8Array(binaryString.length); + for (let i = 0; i < binaryString.length; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + return bytes; +} +function uint8ArrayToBase64(bytes) { + let binaryString = ""; + for (let i = 0; i < bytes.length; i++) { + binaryString += String.fromCharCode(bytes[i]); + } + return btoa(binaryString); +} +function base64urlToUint8Array(base64url3) { + const base643 = base64url3.replace(/-/g, "+").replace(/_/g, "/"); + const padding = "=".repeat((4 - base643.length % 4) % 4); + return base64ToUint8Array(base643 + padding); +} +function uint8ArrayToBase64url(bytes) { + return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); +} +function hexToUint8Array(hex3) { + const cleanHex = hex3.replace(/^0x/, ""); + if (cleanHex.length % 2 !== 0) { + throw new Error("Invalid hex string length"); + } + const bytes = new Uint8Array(cleanHex.length / 2); + for (let i = 0; i < cleanHex.length; i += 2) { + bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16); + } + return bytes; +} +function uint8ArrayToHex(bytes) { + return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join(""); +} +var Class = class { + constructor(..._args) { + } +}; + +// ../../node_modules/zod/v4/core/errors.js +var initializer = (inst, def) => { + inst.name = "$ZodError"; + Object.defineProperty(inst, "_zod", { + value: inst._zod, + enumerable: false + }); + Object.defineProperty(inst, "issues", { + value: def, + enumerable: false + }); + inst.message = JSON.stringify(def, jsonStringifyReplacer, 2); + Object.defineProperty(inst, "toString", { + value: () => inst.message, + enumerable: false + }); +}; +var $ZodError = $constructor("$ZodError", initializer); +var $ZodRealError = $constructor("$ZodError", initializer, { Parent: Error }); +function flattenError(error48, mapper = (issue2) => issue2.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of error48.issues) { + if (sub.path.length > 0) { + fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; + fieldErrors[sub.path[0]].push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; +} +function formatError(error48, mapper = (issue2) => issue2.message) { + const fieldErrors = { _errors: [] }; + const processError = (error49) => { + for (const issue2 of error49.issues) { + if (issue2.code === "invalid_union" && issue2.errors.length) { + issue2.errors.map((issues) => processError({ issues })); + } else if (issue2.code === "invalid_key") { + processError({ issues: issue2.issues }); + } else if (issue2.code === "invalid_element") { + processError({ issues: issue2.issues }); + } else if (issue2.path.length === 0) { + fieldErrors._errors.push(mapper(issue2)); + } else { + let curr = fieldErrors; + let i = 0; + while (i < issue2.path.length) { + const el = issue2.path[i]; + const terminal = i === issue2.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + } else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue2)); + } + curr = curr[el]; + i++; + } + } + } + }; + processError(error48); + return fieldErrors; +} +function treeifyError(error48, mapper = (issue2) => issue2.message) { + const result = { errors: [] }; + const processError = (error49, path = []) => { + var _a2, _b; + for (const issue2 of error49.issues) { + if (issue2.code === "invalid_union" && issue2.errors.length) { + issue2.errors.map((issues) => processError({ issues }, issue2.path)); + } else if (issue2.code === "invalid_key") { + processError({ issues: issue2.issues }, issue2.path); + } else if (issue2.code === "invalid_element") { + processError({ issues: issue2.issues }, issue2.path); + } else { + const fullpath = [...path, ...issue2.path]; + if (fullpath.length === 0) { + result.errors.push(mapper(issue2)); + continue; + } + let curr = result; + let i = 0; + while (i < fullpath.length) { + const el = fullpath[i]; + const terminal = i === fullpath.length - 1; + if (typeof el === "string") { + curr.properties ?? (curr.properties = {}); + (_a2 = curr.properties)[el] ?? (_a2[el] = { errors: [] }); + curr = curr.properties[el]; + } else { + curr.items ?? (curr.items = []); + (_b = curr.items)[el] ?? (_b[el] = { errors: [] }); + curr = curr.items[el]; + } + if (terminal) { + curr.errors.push(mapper(issue2)); + } + i++; + } + } + } + }; + processError(error48); + return result; +} +function toDotPath(_path) { + const segs = []; + const path = _path.map((seg) => typeof seg === "object" ? seg.key : seg); + for (const seg of path) { + if (typeof seg === "number") + segs.push(`[${seg}]`); + else if (typeof seg === "symbol") + segs.push(`[${JSON.stringify(String(seg))}]`); + else if (/[^\w$]/.test(seg)) + segs.push(`[${JSON.stringify(seg)}]`); + else { + if (segs.length) + segs.push("."); + segs.push(seg); + } + } + return segs.join(""); +} +function prettifyError(error48) { + const lines = []; + const issues = [...error48.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length); + for (const issue2 of issues) { + lines.push(`\u2716 ${issue2.message}`); + if (issue2.path?.length) + lines.push(` \u2192 at ${toDotPath(issue2.path)}`); + } + return lines.join("\n"); +} + +// ../../node_modules/zod/v4/core/parse.js +var _parse = (_Err) => (schema, value, _ctx, _params) => { + const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; + const result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + if (result.issues.length) { + const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e, _params?.callee); + throw e; + } + return result.value; +}; +var parse = /* @__PURE__ */ _parse($ZodRealError); +var _parseAsync = (_Err) => async (schema, value, _ctx, params) => { + const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; + let result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + if (result.issues.length) { + const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e, params?.callee); + throw e; + } + return result.value; +}; +var parseAsync = /* @__PURE__ */ _parseAsync($ZodRealError); +var _safeParse = (_Err) => (schema, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; + const result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + return result.issues.length ? { + success: false, + error: new (_Err ?? $ZodError)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + } : { success: true, data: result.value }; +}; +var safeParse = /* @__PURE__ */ _safeParse($ZodRealError); +var _safeParseAsync = (_Err) => async (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; + let result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + return result.issues.length ? { + success: false, + error: new _Err(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + } : { success: true, data: result.value }; +}; +var safeParseAsync = /* @__PURE__ */ _safeParseAsync($ZodRealError); +var _encode = (_Err) => (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; + return _parse(_Err)(schema, value, ctx); +}; +var encode = /* @__PURE__ */ _encode($ZodRealError); +var _decode = (_Err) => (schema, value, _ctx) => { + return _parse(_Err)(schema, value, _ctx); +}; +var decode = /* @__PURE__ */ _decode($ZodRealError); +var _encodeAsync = (_Err) => async (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; + return _parseAsync(_Err)(schema, value, ctx); +}; +var encodeAsync = /* @__PURE__ */ _encodeAsync($ZodRealError); +var _decodeAsync = (_Err) => async (schema, value, _ctx) => { + return _parseAsync(_Err)(schema, value, _ctx); +}; +var decodeAsync = /* @__PURE__ */ _decodeAsync($ZodRealError); +var _safeEncode = (_Err) => (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; + return _safeParse(_Err)(schema, value, ctx); +}; +var safeEncode = /* @__PURE__ */ _safeEncode($ZodRealError); +var _safeDecode = (_Err) => (schema, value, _ctx) => { + return _safeParse(_Err)(schema, value, _ctx); +}; +var safeDecode = /* @__PURE__ */ _safeDecode($ZodRealError); +var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { direction: "backward" }) : { direction: "backward" }; + return _safeParseAsync(_Err)(schema, value, ctx); +}; +var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync($ZodRealError); +var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => { + return _safeParseAsync(_Err)(schema, value, _ctx); +}; +var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); + +// ../../node_modules/zod/v4/core/regexes.js +var regexes_exports = {}; +__export(regexes_exports, { + base64: () => base64, + base64url: () => base64url, + bigint: () => bigint, + boolean: () => boolean, + browserEmail: () => browserEmail, + cidrv4: () => cidrv4, + cidrv6: () => cidrv6, + cuid: () => cuid, + cuid2: () => cuid2, + date: () => date, + datetime: () => datetime, + domain: () => domain, + duration: () => duration, + e164: () => e164, + email: () => email, + emoji: () => emoji, + extendedDuration: () => extendedDuration, + guid: () => guid, + hex: () => hex, + hostname: () => hostname, + html5Email: () => html5Email, + idnEmail: () => idnEmail, + integer: () => integer, + ipv4: () => ipv4, + ipv6: () => ipv6, + ksuid: () => ksuid, + lowercase: () => lowercase, + mac: () => mac, + md5_base64: () => md5_base64, + md5_base64url: () => md5_base64url, + md5_hex: () => md5_hex, + nanoid: () => nanoid, + null: () => _null, + number: () => number, + rfc5322Email: () => rfc5322Email, + sha1_base64: () => sha1_base64, + sha1_base64url: () => sha1_base64url, + sha1_hex: () => sha1_hex, + sha256_base64: () => sha256_base64, + sha256_base64url: () => sha256_base64url, + sha256_hex: () => sha256_hex, + sha384_base64: () => sha384_base64, + sha384_base64url: () => sha384_base64url, + sha384_hex: () => sha384_hex, + sha512_base64: () => sha512_base64, + sha512_base64url: () => sha512_base64url, + sha512_hex: () => sha512_hex, + string: () => string, + time: () => time, + ulid: () => ulid, + undefined: () => _undefined, + unicodeEmail: () => unicodeEmail, + uppercase: () => uppercase, + uuid: () => uuid, + uuid4: () => uuid4, + uuid6: () => uuid6, + uuid7: () => uuid7, + xid: () => xid +}); +var cuid = /^[cC][^\s-]{8,}$/; +var cuid2 = /^[0-9a-z]+$/; +var ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; +var xid = /^[0-9a-vA-V]{20}$/; +var ksuid = /^[A-Za-z0-9]{27}$/; +var nanoid = /^[a-zA-Z0-9_-]{21}$/; +var duration = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; +var extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; +var uuid = (version2) => { + if (!version2) + return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/; + return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version2}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`); +}; +var uuid4 = /* @__PURE__ */ uuid(4); +var uuid6 = /* @__PURE__ */ uuid(6); +var uuid7 = /* @__PURE__ */ uuid(7); +var email = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; +var html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var rfc5322Email = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; +var unicodeEmail = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u; +var idnEmail = unicodeEmail; +var browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var _emoji = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +function emoji() { + return new RegExp(_emoji, "u"); +} +var ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; +var mac = (delimiter) => { + const escapedDelim = escapeRegex(delimiter ?? ":"); + return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`); +}; +var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; +var cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; +var base64url = /^[A-Za-z0-9_-]*$/; +var hostname = /^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/; +var domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; +var e164 = /^\+[1-9]\d{6,14}$/; +var dateSource = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`; +var date = /* @__PURE__ */ new RegExp(`^${dateSource}$`); +function timeSource(args) { + const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`; + const regex = typeof args.precision === "number" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\d` : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`; + return regex; +} +function time(args) { + return new RegExp(`^${timeSource(args)}$`); +} +function datetime(args) { + const time3 = timeSource({ precision: args.precision }); + const opts = ["Z"]; + if (args.local) + opts.push(""); + if (args.offset) + opts.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`); + const timeRegex = `${time3}(?:${opts.join("|")})`; + return new RegExp(`^${dateSource}T(?:${timeRegex})$`); +} +var string = (params) => { + const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`; + return new RegExp(`^${regex}$`); +}; +var bigint = /^-?\d+n?$/; +var integer = /^-?\d+$/; +var number = /^-?\d+(?:\.\d+)?$/; +var boolean = /^(?:true|false)$/i; +var _null = /^null$/i; +var _undefined = /^undefined$/i; +var lowercase = /^[^A-Z]*$/; +var uppercase = /^[^a-z]*$/; +var hex = /^[0-9a-fA-F]*$/; +function fixedBase64(bodyLength, padding) { + return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`); +} +function fixedBase64url(length) { + return new RegExp(`^[A-Za-z0-9_-]{${length}}$`); +} +var md5_hex = /^[0-9a-fA-F]{32}$/; +var md5_base64 = /* @__PURE__ */ fixedBase64(22, "=="); +var md5_base64url = /* @__PURE__ */ fixedBase64url(22); +var sha1_hex = /^[0-9a-fA-F]{40}$/; +var sha1_base64 = /* @__PURE__ */ fixedBase64(27, "="); +var sha1_base64url = /* @__PURE__ */ fixedBase64url(27); +var sha256_hex = /^[0-9a-fA-F]{64}$/; +var sha256_base64 = /* @__PURE__ */ fixedBase64(43, "="); +var sha256_base64url = /* @__PURE__ */ fixedBase64url(43); +var sha384_hex = /^[0-9a-fA-F]{96}$/; +var sha384_base64 = /* @__PURE__ */ fixedBase64(64, ""); +var sha384_base64url = /* @__PURE__ */ fixedBase64url(64); +var sha512_hex = /^[0-9a-fA-F]{128}$/; +var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "=="); +var sha512_base64url = /* @__PURE__ */ fixedBase64url(86); + +// ../../node_modules/zod/v4/core/checks.js +var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { + var _a2; + inst._zod ?? (inst._zod = {}); + inst._zod.def = def; + (_a2 = inst._zod).onattach ?? (_a2.onattach = []); +}); +var numericOriginMap = { + number: "number", + bigint: "bigint", + object: "date" +}; +var $ZodCheckLessThan = /* @__PURE__ */ $constructor("$ZodCheckLessThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY; + if (def.value < curr) { + if (def.inclusive) + bag.maximum = def.value; + else + bag.exclusiveMaximum = def.value; + } + }); + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value <= def.value : payload.value < def.value) { + return; + } + payload.issues.push({ + origin, + code: "too_big", + maximum: typeof def.value === "object" ? def.value.getTime() : def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY; + if (def.value > curr) { + if (def.inclusive) + bag.minimum = def.value; + else + bag.exclusiveMinimum = def.value; + } + }); + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value >= def.value : payload.value > def.value) { + return; + } + payload.issues.push({ + origin, + code: "too_small", + minimum: typeof def.value === "object" ? def.value.getTime() : def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.onattach.push((inst2) => { + var _a2; + (_a2 = inst2._zod.bag).multipleOf ?? (_a2.multipleOf = def.value); + }); + inst._zod.check = (payload) => { + if (typeof payload.value !== typeof def.value) + throw new Error("Cannot mix number and bigint in multiple_of check."); + const isMultiple = typeof payload.value === "bigint" ? payload.value % def.value === BigInt(0) : floatSafeRemainder(payload.value, def.value) === 0; + if (isMultiple) + return; + payload.issues.push({ + origin: typeof payload.value, + code: "not_multiple_of", + divisor: def.value, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckNumberFormat = /* @__PURE__ */ $constructor("$ZodCheckNumberFormat", (inst, def) => { + $ZodCheck.init(inst, def); + def.format = def.format || "float64"; + const isInt = def.format?.includes("int"); + const origin = isInt ? "int" : "number"; + const [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = def.format; + bag.minimum = minimum; + bag.maximum = maximum; + if (isInt) + bag.pattern = integer; + }); + inst._zod.check = (payload) => { + const input = payload.value; + if (isInt) { + if (!Number.isInteger(input)) { + payload.issues.push({ + expected: origin, + format: def.format, + code: "invalid_type", + continue: false, + input, + inst + }); + return; + } + if (!Number.isSafeInteger(input)) { + if (input > 0) { + payload.issues.push({ + input, + code: "too_big", + maximum: Number.MAX_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + inclusive: true, + continue: !def.abort + }); + } else { + payload.issues.push({ + input, + code: "too_small", + minimum: Number.MIN_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + inclusive: true, + continue: !def.abort + }); + } + return; + } + } + if (input < minimum) { + payload.issues.push({ + origin: "number", + input, + code: "too_small", + minimum, + inclusive: true, + inst, + continue: !def.abort + }); + } + if (input > maximum) { + payload.issues.push({ + origin: "number", + input, + code: "too_big", + maximum, + inclusive: true, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat", (inst, def) => { + $ZodCheck.init(inst, def); + const [minimum, maximum] = BIGINT_FORMAT_RANGES[def.format]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = def.format; + bag.minimum = minimum; + bag.maximum = maximum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + if (input < minimum) { + payload.issues.push({ + origin: "bigint", + input, + code: "too_small", + minimum, + inclusive: true, + inst, + continue: !def.abort + }); + } + if (input > maximum) { + payload.issues.push({ + origin: "bigint", + input, + code: "too_big", + maximum, + inclusive: true, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.size !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; + if (def.maximum < curr) + inst2._zod.bag.maximum = def.maximum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const size = input.size; + if (size <= def.maximum) + return; + payload.issues.push({ + origin: getSizableOrigin(input), + code: "too_big", + maximum: def.maximum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.size !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; + if (def.minimum > curr) + inst2._zod.bag.minimum = def.minimum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const size = input.size; + if (size >= def.minimum) + return; + payload.issues.push({ + origin: getSizableOrigin(input), + code: "too_small", + minimum: def.minimum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.size !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.minimum = def.size; + bag.maximum = def.size; + bag.size = def.size; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const size = input.size; + if (size === def.size) + return; + const tooBig = size > def.size; + payload.issues.push({ + origin: getSizableOrigin(input), + ...tooBig ? { code: "too_big", maximum: def.size } : { code: "too_small", minimum: def.size }, + inclusive: true, + exact: true, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; + if (def.maximum < curr) + inst2._zod.bag.maximum = def.maximum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length <= def.maximum) + return; + const origin = getLengthableOrigin(input); + payload.issues.push({ + origin, + code: "too_big", + maximum: def.maximum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; + if (def.minimum > curr) + inst2._zod.bag.minimum = def.minimum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length >= def.minimum) + return; + const origin = getLengthableOrigin(input); + payload.issues.push({ + origin, + code: "too_small", + minimum: def.minimum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => { + var _a2; + $ZodCheck.init(inst, def); + (_a2 = inst._zod.def).when ?? (_a2.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.minimum = def.length; + bag.maximum = def.length; + bag.length = def.length; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length === def.length) + return; + const origin = getLengthableOrigin(input); + const tooBig = length > def.length; + payload.issues.push({ + origin, + ...tooBig ? { code: "too_big", maximum: def.length } : { code: "too_small", minimum: def.length }, + inclusive: true, + exact: true, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => { + var _a2, _b; + $ZodCheck.init(inst, def); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = def.format; + if (def.pattern) { + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(def.pattern); + } + }); + if (def.pattern) + (_a2 = inst._zod).check ?? (_a2.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: def.format, + input: payload.value, + ...def.pattern ? { pattern: def.pattern.toString() } : {}, + inst, + continue: !def.abort + }); + }); + else + (_b = inst._zod).check ?? (_b.check = () => { + }); +}); +var $ZodCheckRegex = /* @__PURE__ */ $constructor("$ZodCheckRegex", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + inst._zod.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "regex", + input: payload.value, + pattern: def.pattern.toString(), + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLowerCase = /* @__PURE__ */ $constructor("$ZodCheckLowerCase", (inst, def) => { + def.pattern ?? (def.pattern = lowercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckUpperCase = /* @__PURE__ */ $constructor("$ZodCheckUpperCase", (inst, def) => { + def.pattern ?? (def.pattern = uppercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckIncludes = /* @__PURE__ */ $constructor("$ZodCheckIncludes", (inst, def) => { + $ZodCheck.init(inst, def); + const escapedRegex = escapeRegex(def.includes); + const pattern = new RegExp(typeof def.position === "number" ? `^.{${def.position}}${escapedRegex}` : escapedRegex); + def.pattern = pattern; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.includes(def.includes, def.position)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "includes", + includes: def.includes, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStartsWith = /* @__PURE__ */ $constructor("$ZodCheckStartsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`); + def.pattern ?? (def.pattern = pattern); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.startsWith(def.prefix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "starts_with", + prefix: def.prefix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckEndsWith = /* @__PURE__ */ $constructor("$ZodCheckEndsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`); + def.pattern ?? (def.pattern = pattern); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.endsWith(def.suffix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "ends_with", + suffix: def.suffix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function handleCheckPropertyResult(result, payload, property) { + if (result.issues.length) { + payload.issues.push(...prefixIssues(property, result.issues)); + } +} +var $ZodCheckProperty = /* @__PURE__ */ $constructor("$ZodCheckProperty", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + const result = def.schema._zod.run({ + value: payload.value[def.property], + issues: [] + }, {}); + if (result instanceof Promise) { + return result.then((result2) => handleCheckPropertyResult(result2, payload, def.property)); + } + handleCheckPropertyResult(result, payload, def.property); + return; + }; +}); +var $ZodCheckMimeType = /* @__PURE__ */ $constructor("$ZodCheckMimeType", (inst, def) => { + $ZodCheck.init(inst, def); + const mimeSet = new Set(def.mime); + inst._zod.onattach.push((inst2) => { + inst2._zod.bag.mime = def.mime; + }); + inst._zod.check = (payload) => { + if (mimeSet.has(payload.value.type)) + return; + payload.issues.push({ + code: "invalid_value", + values: def.mime, + input: payload.value.type, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + payload.value = def.tx(payload.value); + }; +}); + +// ../../node_modules/zod/v4/core/doc.js +var Doc = class { + constructor(args = []) { + this.content = []; + this.indent = 0; + if (this) + this.args = args; + } + indented(fn) { + this.indent += 1; + fn(this); + this.indent -= 1; + } + write(arg) { + if (typeof arg === "function") { + arg(this, { execution: "sync" }); + arg(this, { execution: "async" }); + return; + } + const content = arg; + const lines = content.split("\n").filter((x) => x); + const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length)); + const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x); + for (const line of dedented) { + this.content.push(line); + } + } + compile() { + const F = Function; + const args = this?.args; + const content = this?.content ?? [``]; + const lines = [...content.map((x) => ` ${x}`)]; + return new F(...args, lines.join("\n")); + } +}; + +// ../../node_modules/zod/v4/core/versions.js +var version = { + major: 4, + minor: 3, + patch: 6 +}; + +// ../../node_modules/zod/v4/core/schemas.js +var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { + var _a2; + inst ?? (inst = {}); + inst._zod.def = def; + inst._zod.bag = inst._zod.bag || {}; + inst._zod.version = version; + const checks = [...inst._zod.def.checks ?? []]; + if (inst._zod.traits.has("$ZodCheck")) { + checks.unshift(inst); + } + for (const ch of checks) { + for (const fn of ch._zod.onattach) { + fn(inst); + } + } + if (checks.length === 0) { + (_a2 = inst._zod).deferred ?? (_a2.deferred = []); + inst._zod.deferred?.push(() => { + inst._zod.run = inst._zod.parse; + }); + } else { + const runChecks = (payload, checks2, ctx) => { + let isAborted = aborted(payload); + let asyncResult; + for (const ch of checks2) { + if (ch._zod.def.when) { + const shouldRun = ch._zod.def.when(payload); + if (!shouldRun) + continue; + } else if (isAborted) { + continue; + } + const currLen = payload.issues.length; + const _ = ch._zod.check(payload); + if (_ instanceof Promise && ctx?.async === false) { + throw new $ZodAsyncError(); + } + if (asyncResult || _ instanceof Promise) { + asyncResult = (asyncResult ?? Promise.resolve()).then(async () => { + await _; + const nextLen = payload.issues.length; + if (nextLen === currLen) + return; + if (!isAborted) + isAborted = aborted(payload, currLen); + }); + } else { + const nextLen = payload.issues.length; + if (nextLen === currLen) + continue; + if (!isAborted) + isAborted = aborted(payload, currLen); + } + } + if (asyncResult) { + return asyncResult.then(() => { + return payload; + }); + } + return payload; + }; + const handleCanaryResult = (canary, payload, ctx) => { + if (aborted(canary)) { + canary.aborted = true; + return canary; + } + const checkResult = runChecks(payload, checks, ctx); + if (checkResult instanceof Promise) { + if (ctx.async === false) + throw new $ZodAsyncError(); + return checkResult.then((checkResult2) => inst._zod.parse(checkResult2, ctx)); + } + return inst._zod.parse(checkResult, ctx); + }; + inst._zod.run = (payload, ctx) => { + if (ctx.skipChecks) { + return inst._zod.parse(payload, ctx); + } + if (ctx.direction === "backward") { + const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true }); + if (canary instanceof Promise) { + return canary.then((canary2) => { + return handleCanaryResult(canary2, payload, ctx); + }); + } + return handleCanaryResult(canary, payload, ctx); + } + const result = inst._zod.parse(payload, ctx); + if (result instanceof Promise) { + if (ctx.async === false) + throw new $ZodAsyncError(); + return result.then((result2) => runChecks(result2, checks, ctx)); + } + return runChecks(result, checks, ctx); + }; + } + defineLazy(inst, "~standard", () => ({ + validate: (value) => { + try { + const r = safeParse(inst, value); + return r.success ? { value: r.data } : { issues: r.error?.issues }; + } catch (_) { + return safeParseAsync(inst, value).then((r) => r.success ? { value: r.data } : { issues: r.error?.issues }); + } + }, + vendor: "zod", + version: 1 + })); +}); +var $ZodString = /* @__PURE__ */ $constructor("$ZodString", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = [...inst?._zod.bag?.patterns ?? []].pop() ?? string(inst._zod.bag); + inst._zod.parse = (payload, _) => { + if (def.coerce) + try { + payload.value = String(payload.value); + } catch (_2) { + } + if (typeof payload.value === "string") + return payload; + payload.issues.push({ + expected: "string", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodStringFormat = /* @__PURE__ */ $constructor("$ZodStringFormat", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + $ZodString.init(inst, def); +}); +var $ZodGUID = /* @__PURE__ */ $constructor("$ZodGUID", (inst, def) => { + def.pattern ?? (def.pattern = guid); + $ZodStringFormat.init(inst, def); +}); +var $ZodUUID = /* @__PURE__ */ $constructor("$ZodUUID", (inst, def) => { + if (def.version) { + const versionMap = { + v1: 1, + v2: 2, + v3: 3, + v4: 4, + v5: 5, + v6: 6, + v7: 7, + v8: 8 + }; + const v = versionMap[def.version]; + if (v === void 0) + throw new Error(`Invalid UUID version: "${def.version}"`); + def.pattern ?? (def.pattern = uuid(v)); + } else + def.pattern ?? (def.pattern = uuid()); + $ZodStringFormat.init(inst, def); +}); +var $ZodEmail = /* @__PURE__ */ $constructor("$ZodEmail", (inst, def) => { + def.pattern ?? (def.pattern = email); + $ZodStringFormat.init(inst, def); +}); +var $ZodURL = /* @__PURE__ */ $constructor("$ZodURL", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + try { + const trimmed = payload.value.trim(); + const url2 = new URL(trimmed); + if (def.hostname) { + def.hostname.lastIndex = 0; + if (!def.hostname.test(url2.hostname)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid hostname", + pattern: def.hostname.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + } + if (def.protocol) { + def.protocol.lastIndex = 0; + if (!def.protocol.test(url2.protocol.endsWith(":") ? url2.protocol.slice(0, -1) : url2.protocol)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid protocol", + pattern: def.protocol.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + } + if (def.normalize) { + payload.value = url2.href; + } else { + payload.value = trimmed; + } + return; + } catch (_) { + payload.issues.push({ + code: "invalid_format", + format: "url", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodEmoji = /* @__PURE__ */ $constructor("$ZodEmoji", (inst, def) => { + def.pattern ?? (def.pattern = emoji()); + $ZodStringFormat.init(inst, def); +}); +var $ZodNanoID = /* @__PURE__ */ $constructor("$ZodNanoID", (inst, def) => { + def.pattern ?? (def.pattern = nanoid); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID = /* @__PURE__ */ $constructor("$ZodCUID", (inst, def) => { + def.pattern ?? (def.pattern = cuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID2 = /* @__PURE__ */ $constructor("$ZodCUID2", (inst, def) => { + def.pattern ?? (def.pattern = cuid2); + $ZodStringFormat.init(inst, def); +}); +var $ZodULID = /* @__PURE__ */ $constructor("$ZodULID", (inst, def) => { + def.pattern ?? (def.pattern = ulid); + $ZodStringFormat.init(inst, def); +}); +var $ZodXID = /* @__PURE__ */ $constructor("$ZodXID", (inst, def) => { + def.pattern ?? (def.pattern = xid); + $ZodStringFormat.init(inst, def); +}); +var $ZodKSUID = /* @__PURE__ */ $constructor("$ZodKSUID", (inst, def) => { + def.pattern ?? (def.pattern = ksuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODateTime = /* @__PURE__ */ $constructor("$ZodISODateTime", (inst, def) => { + def.pattern ?? (def.pattern = datetime(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODate = /* @__PURE__ */ $constructor("$ZodISODate", (inst, def) => { + def.pattern ?? (def.pattern = date); + $ZodStringFormat.init(inst, def); +}); +var $ZodISOTime = /* @__PURE__ */ $constructor("$ZodISOTime", (inst, def) => { + def.pattern ?? (def.pattern = time(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODuration = /* @__PURE__ */ $constructor("$ZodISODuration", (inst, def) => { + def.pattern ?? (def.pattern = duration); + $ZodStringFormat.init(inst, def); +}); +var $ZodIPv4 = /* @__PURE__ */ $constructor("$ZodIPv4", (inst, def) => { + def.pattern ?? (def.pattern = ipv4); + $ZodStringFormat.init(inst, def); + inst._zod.bag.format = `ipv4`; +}); +var $ZodIPv6 = /* @__PURE__ */ $constructor("$ZodIPv6", (inst, def) => { + def.pattern ?? (def.pattern = ipv6); + $ZodStringFormat.init(inst, def); + inst._zod.bag.format = `ipv6`; + inst._zod.check = (payload) => { + try { + new URL(`http://[${payload.value}]`); + } catch { + payload.issues.push({ + code: "invalid_format", + format: "ipv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodMAC = /* @__PURE__ */ $constructor("$ZodMAC", (inst, def) => { + def.pattern ?? (def.pattern = mac(def.delimiter)); + $ZodStringFormat.init(inst, def); + inst._zod.bag.format = `mac`; +}); +var $ZodCIDRv4 = /* @__PURE__ */ $constructor("$ZodCIDRv4", (inst, def) => { + def.pattern ?? (def.pattern = cidrv4); + $ZodStringFormat.init(inst, def); +}); +var $ZodCIDRv6 = /* @__PURE__ */ $constructor("$ZodCIDRv6", (inst, def) => { + def.pattern ?? (def.pattern = cidrv6); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + const parts = payload.value.split("/"); + try { + if (parts.length !== 2) + throw new Error(); + const [address, prefix] = parts; + if (!prefix) + throw new Error(); + const prefixNum = Number(prefix); + if (`${prefixNum}` !== prefix) + throw new Error(); + if (prefixNum < 0 || prefixNum > 128) + throw new Error(); + new URL(`http://[${address}]`); + } catch { + payload.issues.push({ + code: "invalid_format", + format: "cidrv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +function isValidBase64(data) { + if (data === "") + return true; + if (data.length % 4 !== 0) + return false; + try { + atob(data); + return true; + } catch { + return false; + } +} +var $ZodBase64 = /* @__PURE__ */ $constructor("$ZodBase64", (inst, def) => { + def.pattern ?? (def.pattern = base64); + $ZodStringFormat.init(inst, def); + inst._zod.bag.contentEncoding = "base64"; + inst._zod.check = (payload) => { + if (isValidBase64(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function isValidBase64URL(data) { + if (!base64url.test(data)) + return false; + const base643 = data.replace(/[-_]/g, (c) => c === "-" ? "+" : "/"); + const padded = base643.padEnd(Math.ceil(base643.length / 4) * 4, "="); + return isValidBase64(padded); +} +var $ZodBase64URL = /* @__PURE__ */ $constructor("$ZodBase64URL", (inst, def) => { + def.pattern ?? (def.pattern = base64url); + $ZodStringFormat.init(inst, def); + inst._zod.bag.contentEncoding = "base64url"; + inst._zod.check = (payload) => { + if (isValidBase64URL(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64url", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodE164 = /* @__PURE__ */ $constructor("$ZodE164", (inst, def) => { + def.pattern ?? (def.pattern = e164); + $ZodStringFormat.init(inst, def); +}); +function isValidJWT(token, algorithm = null) { + try { + const tokensParts = token.split("."); + if (tokensParts.length !== 3) + return false; + const [header] = tokensParts; + if (!header) + return false; + const parsedHeader = JSON.parse(atob(header)); + if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT") + return false; + if (!parsedHeader.alg) + return false; + if (algorithm && (!("alg" in parsedHeader) || parsedHeader.alg !== algorithm)) + return false; + return true; + } catch { + return false; + } +} +var $ZodJWT = /* @__PURE__ */ $constructor("$ZodJWT", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidJWT(payload.value, def.alg)) + return; + payload.issues.push({ + code: "invalid_format", + format: "jwt", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCustomStringFormat = /* @__PURE__ */ $constructor("$ZodCustomStringFormat", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (def.fn(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: def.format, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodNumber = /* @__PURE__ */ $constructor("$ZodNumber", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = inst._zod.bag.pattern ?? number; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Number(payload.value); + } catch (_) { + } + const input = payload.value; + if (typeof input === "number" && !Number.isNaN(input) && Number.isFinite(input)) { + return payload; + } + const received = typeof input === "number" ? Number.isNaN(input) ? "NaN" : !Number.isFinite(input) ? "Infinity" : void 0 : void 0; + payload.issues.push({ + expected: "number", + code: "invalid_type", + input, + inst, + ...received ? { received } : {} + }); + return payload; + }; +}); +var $ZodNumberFormat = /* @__PURE__ */ $constructor("$ZodNumberFormat", (inst, def) => { + $ZodCheckNumberFormat.init(inst, def); + $ZodNumber.init(inst, def); +}); +var $ZodBoolean = /* @__PURE__ */ $constructor("$ZodBoolean", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = boolean; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Boolean(payload.value); + } catch (_) { + } + const input = payload.value; + if (typeof input === "boolean") + return payload; + payload.issues.push({ + expected: "boolean", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodBigInt = /* @__PURE__ */ $constructor("$ZodBigInt", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = bigint; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = BigInt(payload.value); + } catch (_) { + } + if (typeof payload.value === "bigint") + return payload; + payload.issues.push({ + expected: "bigint", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodBigIntFormat = /* @__PURE__ */ $constructor("$ZodBigIntFormat", (inst, def) => { + $ZodCheckBigIntFormat.init(inst, def); + $ZodBigInt.init(inst, def); +}); +var $ZodSymbol = /* @__PURE__ */ $constructor("$ZodSymbol", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (typeof input === "symbol") + return payload; + payload.issues.push({ + expected: "symbol", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodUndefined = /* @__PURE__ */ $constructor("$ZodUndefined", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = _undefined; + inst._zod.values = /* @__PURE__ */ new Set([void 0]); + inst._zod.optin = "optional"; + inst._zod.optout = "optional"; + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (typeof input === "undefined") + return payload; + payload.issues.push({ + expected: "undefined", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodNull = /* @__PURE__ */ $constructor("$ZodNull", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = _null; + inst._zod.values = /* @__PURE__ */ new Set([null]); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (input === null) + return payload; + payload.issues.push({ + expected: "null", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodAny = /* @__PURE__ */ $constructor("$ZodAny", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodUnknown = /* @__PURE__ */ $constructor("$ZodUnknown", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodNever = /* @__PURE__ */ $constructor("$ZodNever", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + payload.issues.push({ + expected: "never", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodVoid = /* @__PURE__ */ $constructor("$ZodVoid", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (typeof input === "undefined") + return payload; + payload.issues.push({ + expected: "void", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) { + try { + payload.value = new Date(payload.value); + } catch (_err) { + } + } + const input = payload.value; + const isDate = input instanceof Date; + const isValidDate = isDate && !Number.isNaN(input.getTime()); + if (isValidDate) + return payload; + payload.issues.push({ + expected: "date", + code: "invalid_type", + input, + ...isDate ? { received: "Invalid Date" } : {}, + inst + }); + return payload; + }; +}); +function handleArrayResult(result, final, index) { + if (result.issues.length) { + final.issues.push(...prefixIssues(index, result.issues)); + } + final.value[index] = result.value; +} +var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!Array.isArray(input)) { + payload.issues.push({ + expected: "array", + code: "invalid_type", + input, + inst + }); + return payload; + } + payload.value = Array(input.length); + const proms = []; + for (let i = 0; i < input.length; i++) { + const item = input[i]; + const result = def.element._zod.run({ + value: item, + issues: [] + }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleArrayResult(result2, payload, i))); + } else { + handleArrayResult(result, payload, i); + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; +}); +function handlePropertyResult(result, final, key, input, isOptionalOut) { + if (result.issues.length) { + if (isOptionalOut && !(key in input)) { + return; + } + final.issues.push(...prefixIssues(key, result.issues)); + } + if (result.value === void 0) { + if (key in input) { + final.value[key] = void 0; + } + } else { + final.value[key] = result.value; + } +} +function normalizeDef(def) { + const keys = Object.keys(def.shape); + for (const k of keys) { + if (!def.shape?.[k]?._zod?.traits?.has("$ZodType")) { + throw new Error(`Invalid element at key "${k}": expected a Zod schema`); + } + } + const okeys = optionalKeys(def.shape); + return { + ...def, + keys, + keySet: new Set(keys), + numKeys: keys.length, + optionalKeys: new Set(okeys) + }; +} +function handleCatchall(proms, input, payload, ctx, def, inst) { + const unrecognized = []; + const keySet = def.keySet; + const _catchall = def.catchall._zod; + const t = _catchall.def.type; + const isOptionalOut = _catchall.optout === "optional"; + for (const key in input) { + if (keySet.has(key)) + continue; + if (t === "never") { + unrecognized.push(key); + continue; + } + const r = _catchall.run({ value: input[key], issues: [] }, ctx); + if (r instanceof Promise) { + proms.push(r.then((r2) => handlePropertyResult(r2, payload, key, input, isOptionalOut))); + } else { + handlePropertyResult(r, payload, key, input, isOptionalOut); + } + } + if (unrecognized.length) { + payload.issues.push({ + code: "unrecognized_keys", + keys: unrecognized, + input, + inst + }); + } + if (!proms.length) + return payload; + return Promise.all(proms).then(() => { + return payload; + }); +} +var $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => { + $ZodType.init(inst, def); + const desc = Object.getOwnPropertyDescriptor(def, "shape"); + if (!desc?.get) { + const sh = def.shape; + Object.defineProperty(def, "shape", { + get: () => { + const newSh = { ...sh }; + Object.defineProperty(def, "shape", { + value: newSh + }); + return newSh; + } + }); + } + const _normalized = cached(() => normalizeDef(def)); + defineLazy(inst._zod, "propValues", () => { + const shape = def.shape; + const propValues = {}; + for (const key in shape) { + const field = shape[key]._zod; + if (field.values) { + propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set()); + for (const v of field.values) + propValues[key].add(v); + } + } + return propValues; + }); + const isObject2 = isObject; + const catchall = def.catchall; + let value; + inst._zod.parse = (payload, ctx) => { + value ?? (value = _normalized.value); + const input = payload.value; + if (!isObject2(input)) { + payload.issues.push({ + expected: "object", + code: "invalid_type", + input, + inst + }); + return payload; + } + payload.value = {}; + const proms = []; + const shape = value.shape; + for (const key of value.keys) { + const el = shape[key]; + const isOptionalOut = el._zod.optout === "optional"; + const r = el._zod.run({ value: input[key], issues: [] }, ctx); + if (r instanceof Promise) { + proms.push(r.then((r2) => handlePropertyResult(r2, payload, key, input, isOptionalOut))); + } else { + handlePropertyResult(r, payload, key, input, isOptionalOut); + } + } + if (!catchall) { + return proms.length ? Promise.all(proms).then(() => payload) : payload; + } + return handleCatchall(proms, input, payload, ctx, _normalized.value, inst); + }; +}); +var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) => { + $ZodObject.init(inst, def); + const superParse = inst._zod.parse; + const _normalized = cached(() => normalizeDef(def)); + const generateFastpass = (shape) => { + const doc = new Doc(["shape", "payload", "ctx"]); + const normalized = _normalized.value; + const parseStr = (key) => { + const k = esc(key); + return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`; + }; + doc.write(`const input = payload.value;`); + const ids = /* @__PURE__ */ Object.create(null); + let counter = 0; + for (const key of normalized.keys) { + ids[key] = `key_${counter++}`; + } + doc.write(`const newResult = {};`); + for (const key of normalized.keys) { + const id = ids[key]; + const k = esc(key); + const schema = shape[key]; + const isOptionalOut = schema?._zod?.optout === "optional"; + doc.write(`const ${id} = ${parseStr(key)};`); + if (isOptionalOut) { + doc.write(` + if (${id}.issues.length) { + if (${k} in input) { + payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${k}, ...iss.path] : [${k}] + }))); + } + } + + if (${id}.value === undefined) { + if (${k} in input) { + newResult[${k}] = undefined; + } + } else { + newResult[${k}] = ${id}.value; + } + + `); + } else { + doc.write(` + if (${id}.issues.length) { + payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${k}, ...iss.path] : [${k}] + }))); + } + + if (${id}.value === undefined) { + if (${k} in input) { + newResult[${k}] = undefined; + } + } else { + newResult[${k}] = ${id}.value; + } + + `); + } + } + doc.write(`payload.value = newResult;`); + doc.write(`return payload;`); + const fn = doc.compile(); + return (payload, ctx) => fn(shape, payload, ctx); + }; + let fastpass; + const isObject2 = isObject; + const jit = !globalConfig.jitless; + const allowsEval2 = allowsEval; + const fastEnabled = jit && allowsEval2.value; + const catchall = def.catchall; + let value; + inst._zod.parse = (payload, ctx) => { + value ?? (value = _normalized.value); + const input = payload.value; + if (!isObject2(input)) { + payload.issues.push({ + expected: "object", + code: "invalid_type", + input, + inst + }); + return payload; + } + if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) { + if (!fastpass) + fastpass = generateFastpass(def.shape); + payload = fastpass(payload, ctx); + if (!catchall) + return payload; + return handleCatchall([], input, payload, ctx, value, inst); + } + return superParse(payload, ctx); + }; +}); +function handleUnionResults(results, final, inst, ctx) { + for (const result of results) { + if (result.issues.length === 0) { + final.value = result.value; + return final; + } + } + const nonaborted = results.filter((r) => !aborted(r)); + if (nonaborted.length === 1) { + final.value = nonaborted[0].value; + return nonaborted[0]; + } + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + }); + return final; +} +var $ZodUnion = /* @__PURE__ */ $constructor("$ZodUnion", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "optin", () => def.options.some((o) => o._zod.optin === "optional") ? "optional" : void 0); + defineLazy(inst._zod, "optout", () => def.options.some((o) => o._zod.optout === "optional") ? "optional" : void 0); + defineLazy(inst._zod, "values", () => { + if (def.options.every((o) => o._zod.values)) { + return new Set(def.options.flatMap((option) => Array.from(option._zod.values))); + } + return void 0; + }); + defineLazy(inst._zod, "pattern", () => { + if (def.options.every((o) => o._zod.pattern)) { + const patterns = def.options.map((o) => o._zod.pattern); + return new RegExp(`^(${patterns.map((p) => cleanRegex(p.source)).join("|")})$`); + } + return void 0; + }); + const single = def.options.length === 1; + const first = def.options[0]._zod.run; + inst._zod.parse = (payload, ctx) => { + if (single) { + return first(payload, ctx); + } + let async = false; + const results = []; + for (const option of def.options) { + const result = option._zod.run({ + value: payload.value, + issues: [] + }, ctx); + if (result instanceof Promise) { + results.push(result); + async = true; + } else { + if (result.issues.length === 0) + return result; + results.push(result); + } + } + if (!async) + return handleUnionResults(results, payload, inst, ctx); + return Promise.all(results).then((results2) => { + return handleUnionResults(results2, payload, inst, ctx); + }); + }; +}); +function handleExclusiveUnionResults(results, final, inst, ctx) { + const successes = results.filter((r) => r.issues.length === 0); + if (successes.length === 1) { + final.value = successes[0].value; + return final; + } + if (successes.length === 0) { + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + }); + } else { + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: [], + inclusive: false + }); + } + return final; +} +var $ZodXor = /* @__PURE__ */ $constructor("$ZodXor", (inst, def) => { + $ZodUnion.init(inst, def); + def.inclusive = false; + const single = def.options.length === 1; + const first = def.options[0]._zod.run; + inst._zod.parse = (payload, ctx) => { + if (single) { + return first(payload, ctx); + } + let async = false; + const results = []; + for (const option of def.options) { + const result = option._zod.run({ + value: payload.value, + issues: [] + }, ctx); + if (result instanceof Promise) { + results.push(result); + async = true; + } else { + results.push(result); + } + } + if (!async) + return handleExclusiveUnionResults(results, payload, inst, ctx); + return Promise.all(results).then((results2) => { + return handleExclusiveUnionResults(results2, payload, inst, ctx); + }); + }; +}); +var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnion", (inst, def) => { + def.inclusive = false; + $ZodUnion.init(inst, def); + const _super = inst._zod.parse; + defineLazy(inst._zod, "propValues", () => { + const propValues = {}; + for (const option of def.options) { + const pv = option._zod.propValues; + if (!pv || Object.keys(pv).length === 0) + throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`); + for (const [k, v] of Object.entries(pv)) { + if (!propValues[k]) + propValues[k] = /* @__PURE__ */ new Set(); + for (const val of v) { + propValues[k].add(val); + } + } + } + return propValues; + }); + const disc = cached(() => { + const opts = def.options; + const map2 = /* @__PURE__ */ new Map(); + for (const o of opts) { + const values = o._zod.propValues?.[def.discriminator]; + if (!values || values.size === 0) + throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`); + for (const v of values) { + if (map2.has(v)) { + throw new Error(`Duplicate discriminator value "${String(v)}"`); + } + map2.set(v, o); + } + } + return map2; + }); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!isObject(input)) { + payload.issues.push({ + code: "invalid_type", + expected: "object", + input, + inst + }); + return payload; + } + const opt = disc.value.get(input?.[def.discriminator]); + if (opt) { + return opt._zod.run(payload, ctx); + } + if (def.unionFallback) { + return _super(payload, ctx); + } + payload.issues.push({ + code: "invalid_union", + errors: [], + note: "No matching discriminator", + discriminator: def.discriminator, + input, + path: [def.discriminator], + inst + }); + return payload; + }; +}); +var $ZodIntersection = /* @__PURE__ */ $constructor("$ZodIntersection", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + const left = def.left._zod.run({ value: input, issues: [] }, ctx); + const right = def.right._zod.run({ value: input, issues: [] }, ctx); + const async = left instanceof Promise || right instanceof Promise; + if (async) { + return Promise.all([left, right]).then(([left2, right2]) => { + return handleIntersectionResults(payload, left2, right2); + }); + } + return handleIntersectionResults(payload, left, right); + }; +}); +function mergeValues(a, b) { + if (a === b) { + return { valid: true, data: a }; + } + if (a instanceof Date && b instanceof Date && +a === +b) { + return { valid: true, data: a }; + } + if (isPlainObject(a) && isPlainObject(b)) { + const bKeys = Object.keys(b); + const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [key, ...sharedValue.mergeErrorPath] + }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) { + return { valid: false, mergeErrorPath: [] }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [index, ...sharedValue.mergeErrorPath] + }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } + return { valid: false, mergeErrorPath: [] }; +} +function handleIntersectionResults(result, left, right) { + const unrecKeys = /* @__PURE__ */ new Map(); + let unrecIssue; + for (const iss of left.issues) { + if (iss.code === "unrecognized_keys") { + unrecIssue ?? (unrecIssue = iss); + for (const k of iss.keys) { + if (!unrecKeys.has(k)) + unrecKeys.set(k, {}); + unrecKeys.get(k).l = true; + } + } else { + result.issues.push(iss); + } + } + for (const iss of right.issues) { + if (iss.code === "unrecognized_keys") { + for (const k of iss.keys) { + if (!unrecKeys.has(k)) + unrecKeys.set(k, {}); + unrecKeys.get(k).r = true; + } + } else { + result.issues.push(iss); + } + } + const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k); + if (bothKeys.length && unrecIssue) { + result.issues.push({ ...unrecIssue, keys: bothKeys }); + } + if (aborted(result)) + return result; + const merged = mergeValues(left.value, right.value); + if (!merged.valid) { + throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`); + } + result.value = merged.data; + return result; +} +var $ZodTuple = /* @__PURE__ */ $constructor("$ZodTuple", (inst, def) => { + $ZodType.init(inst, def); + const items = def.items; + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!Array.isArray(input)) { + payload.issues.push({ + input, + inst, + expected: "tuple", + code: "invalid_type" + }); + return payload; + } + payload.value = []; + const proms = []; + const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== "optional"); + const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex; + if (!def.rest) { + const tooBig = input.length > items.length; + const tooSmall = input.length < optStart - 1; + if (tooBig || tooSmall) { + payload.issues.push({ + ...tooBig ? { code: "too_big", maximum: items.length, inclusive: true } : { code: "too_small", minimum: items.length }, + input, + inst, + origin: "array" + }); + return payload; + } + } + let i = -1; + for (const item of items) { + i++; + if (i >= input.length) { + if (i >= optStart) + continue; + } + const result = item._zod.run({ + value: input[i], + issues: [] + }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleTupleResult(result2, payload, i))); + } else { + handleTupleResult(result, payload, i); + } + } + if (def.rest) { + const rest = input.slice(items.length); + for (const el of rest) { + i++; + const result = def.rest._zod.run({ + value: el, + issues: [] + }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleTupleResult(result2, payload, i))); + } else { + handleTupleResult(result, payload, i); + } + } + } + if (proms.length) + return Promise.all(proms).then(() => payload); + return payload; + }; +}); +function handleTupleResult(result, final, index) { + if (result.issues.length) { + final.issues.push(...prefixIssues(index, result.issues)); + } + final.value[index] = result.value; +} +var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!isPlainObject(input)) { + payload.issues.push({ + expected: "record", + code: "invalid_type", + input, + inst + }); + return payload; + } + const proms = []; + const values = def.keyType._zod.values; + if (values) { + payload.value = {}; + const recordKeys = /* @__PURE__ */ new Set(); + for (const key of values) { + if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { + recordKeys.add(typeof key === "number" ? key.toString() : key); + const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[key] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[key] = result.value; + } + } + } + let unrecognized; + for (const key in input) { + if (!recordKeys.has(key)) { + unrecognized = unrecognized ?? []; + unrecognized.push(key); + } + } + if (unrecognized && unrecognized.length > 0) { + payload.issues.push({ + code: "unrecognized_keys", + input, + inst, + keys: unrecognized + }); + } + } else { + payload.value = {}; + for (const key of Reflect.ownKeys(input)) { + if (key === "__proto__") + continue; + let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + if (keyResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length; + if (checkNumericKey) { + const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx); + if (retryResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + if (retryResult.issues.length === 0) { + keyResult = retryResult; + } + } + if (keyResult.issues.length) { + if (def.mode === "loose") { + payload.value[key] = input[key]; + } else { + payload.issues.push({ + code: "invalid_key", + origin: "record", + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())), + input: key, + path: [key], + inst + }); + } + continue; + } + const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[keyResult.value] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[keyResult.value] = result.value; + } + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; +}); +var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!(input instanceof Map)) { + payload.issues.push({ + expected: "map", + code: "invalid_type", + input, + inst + }); + return payload; + } + const proms = []; + payload.value = /* @__PURE__ */ new Map(); + for (const [key, value] of input) { + const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + const valueResult = def.valueType._zod.run({ value, issues: [] }, ctx); + if (keyResult instanceof Promise || valueResult instanceof Promise) { + proms.push(Promise.all([keyResult, valueResult]).then(([keyResult2, valueResult2]) => { + handleMapResult(keyResult2, valueResult2, payload, key, input, inst, ctx); + })); + } else { + handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx); + } + } + if (proms.length) + return Promise.all(proms).then(() => payload); + return payload; + }; +}); +function handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) { + if (keyResult.issues.length) { + if (propertyKeyTypes.has(typeof key)) { + final.issues.push(...prefixIssues(key, keyResult.issues)); + } else { + final.issues.push({ + code: "invalid_key", + origin: "map", + input, + inst, + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }); + } + } + if (valueResult.issues.length) { + if (propertyKeyTypes.has(typeof key)) { + final.issues.push(...prefixIssues(key, valueResult.issues)); + } else { + final.issues.push({ + origin: "map", + code: "invalid_element", + input, + inst, + key, + issues: valueResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }); + } + } + final.value.set(keyResult.value, valueResult.value); +} +var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!(input instanceof Set)) { + payload.issues.push({ + input, + inst, + expected: "set", + code: "invalid_type" + }); + return payload; + } + const proms = []; + payload.value = /* @__PURE__ */ new Set(); + for (const item of input) { + const result = def.valueType._zod.run({ value: item, issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleSetResult(result2, payload))); + } else + handleSetResult(result, payload); + } + if (proms.length) + return Promise.all(proms).then(() => payload); + return payload; + }; +}); +function handleSetResult(result, final) { + if (result.issues.length) { + final.issues.push(...result.issues); + } + final.value.add(result.value); +} +var $ZodEnum = /* @__PURE__ */ $constructor("$ZodEnum", (inst, def) => { + $ZodType.init(inst, def); + const values = getEnumValues(def.entries); + const valuesSet = new Set(values); + inst._zod.values = valuesSet; + inst._zod.pattern = new RegExp(`^(${values.filter((k) => propertyKeyTypes.has(typeof k)).map((o) => typeof o === "string" ? escapeRegex(o) : o.toString()).join("|")})$`); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (valuesSet.has(input)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values, + input, + inst + }); + return payload; + }; +}); +var $ZodLiteral = /* @__PURE__ */ $constructor("$ZodLiteral", (inst, def) => { + $ZodType.init(inst, def); + if (def.values.length === 0) { + throw new Error("Cannot create literal schema with no valid values"); + } + const values = new Set(def.values); + inst._zod.values = values; + inst._zod.pattern = new RegExp(`^(${def.values.map((o) => typeof o === "string" ? escapeRegex(o) : o ? escapeRegex(o.toString()) : String(o)).join("|")})$`); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (values.has(input)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values: def.values, + input, + inst + }); + return payload; + }; +}); +var $ZodFile = /* @__PURE__ */ $constructor("$ZodFile", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (input instanceof File) + return payload; + payload.issues.push({ + expected: "file", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodTransform = /* @__PURE__ */ $constructor("$ZodTransform", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + throw new $ZodEncodeError(inst.constructor.name); + } + const _out = def.transform(payload.value, payload); + if (ctx.async) { + const output = _out instanceof Promise ? _out : Promise.resolve(_out); + return output.then((output2) => { + payload.value = output2; + return payload; + }); + } + if (_out instanceof Promise) { + throw new $ZodAsyncError(); + } + payload.value = _out; + return payload; + }; +}); +function handleOptionalResult(result, input) { + if (result.issues.length && input === void 0) { + return { issues: [], value: void 0 }; + } + return result; +} +var $ZodOptional = /* @__PURE__ */ $constructor("$ZodOptional", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + inst._zod.optout = "optional"; + defineLazy(inst._zod, "values", () => { + return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, void 0]) : void 0; + }); + defineLazy(inst._zod, "pattern", () => { + const pattern = def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (def.innerType._zod.optin === "optional") { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) + return result.then((r) => handleOptionalResult(r, payload.value)); + return handleOptionalResult(result, payload.value); + } + if (payload.value === void 0) { + return payload; + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodExactOptional = /* @__PURE__ */ $constructor("$ZodExactOptional", (inst, def) => { + $ZodOptional.init(inst, def); + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + defineLazy(inst._zod, "pattern", () => def.innerType._zod.pattern); + inst._zod.parse = (payload, ctx) => { + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNullable = /* @__PURE__ */ $constructor("$ZodNullable", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); + defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + defineLazy(inst._zod, "pattern", () => { + const pattern = def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0; + }); + defineLazy(inst._zod, "values", () => { + return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, null]) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (payload.value === null) + return payload; + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodDefault = /* @__PURE__ */ $constructor("$ZodDefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + if (payload.value === void 0) { + payload.value = def.defaultValue; + return payload; + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleDefaultResult(result2, def)); + } + return handleDefaultResult(result, def); + }; +}); +function handleDefaultResult(payload, def) { + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return payload; +} +var $ZodPrefault = /* @__PURE__ */ $constructor("$ZodPrefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNonOptional = /* @__PURE__ */ $constructor("$ZodNonOptional", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "values", () => { + const v = def.innerType._zod.values; + return v ? new Set([...v].filter((x) => x !== void 0)) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleNonOptionalResult(result2, inst)); + } + return handleNonOptionalResult(result, inst); + }; +}); +function handleNonOptionalResult(payload, inst) { + if (!payload.issues.length && payload.value === void 0) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: payload.value, + inst + }); + } + return payload; +} +var $ZodSuccess = /* @__PURE__ */ $constructor("$ZodSuccess", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + throw new $ZodEncodeError("ZodSuccess"); + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => { + payload.value = result2.issues.length === 0; + return payload; + }); + } + payload.value = result.issues.length === 0; + return payload; + }; +}); +var $ZodCatch = /* @__PURE__ */ $constructor("$ZodCatch", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); + defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => { + payload.value = result2.value; + if (result2.issues.length) { + payload.value = def.catchValue({ + ...payload, + error: { + issues: result2.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }, + input: payload.value + }); + payload.issues = []; + } + return payload; + }); + } + payload.value = result.value; + if (result.issues.length) { + payload.value = def.catchValue({ + ...payload, + error: { + issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }, + input: payload.value + }); + payload.issues = []; + } + return payload; + }; +}); +var $ZodNaN = /* @__PURE__ */ $constructor("$ZodNaN", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "number" || !Number.isNaN(payload.value)) { + payload.issues.push({ + input: payload.value, + inst, + expected: "nan", + code: "invalid_type" + }); + return payload; + } + return payload; + }; +}); +var $ZodPipe = /* @__PURE__ */ $constructor("$ZodPipe", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "values", () => def.in._zod.values); + defineLazy(inst._zod, "optin", () => def.in._zod.optin); + defineLazy(inst._zod, "optout", () => def.out._zod.optout); + defineLazy(inst._zod, "propValues", () => def.in._zod.propValues); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + const right = def.out._zod.run(payload, ctx); + if (right instanceof Promise) { + return right.then((right2) => handlePipeResult(right2, def.in, ctx)); + } + return handlePipeResult(right, def.in, ctx); + } + const left = def.in._zod.run(payload, ctx); + if (left instanceof Promise) { + return left.then((left2) => handlePipeResult(left2, def.out, ctx)); + } + return handlePipeResult(left, def.out, ctx); + }; +}); +function handlePipeResult(left, next, ctx) { + if (left.issues.length) { + left.aborted = true; + return left; + } + return next._zod.run({ value: left.value, issues: left.issues }, ctx); +} +var $ZodCodec = /* @__PURE__ */ $constructor("$ZodCodec", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "values", () => def.in._zod.values); + defineLazy(inst._zod, "optin", () => def.in._zod.optin); + defineLazy(inst._zod, "optout", () => def.out._zod.optout); + defineLazy(inst._zod, "propValues", () => def.in._zod.propValues); + inst._zod.parse = (payload, ctx) => { + const direction = ctx.direction || "forward"; + if (direction === "forward") { + const left = def.in._zod.run(payload, ctx); + if (left instanceof Promise) { + return left.then((left2) => handleCodecAResult(left2, def, ctx)); + } + return handleCodecAResult(left, def, ctx); + } else { + const right = def.out._zod.run(payload, ctx); + if (right instanceof Promise) { + return right.then((right2) => handleCodecAResult(right2, def, ctx)); + } + return handleCodecAResult(right, def, ctx); + } + }; +}); +function handleCodecAResult(result, def, ctx) { + if (result.issues.length) { + result.aborted = true; + return result; + } + const direction = ctx.direction || "forward"; + if (direction === "forward") { + const transformed = def.transform(result.value, result); + if (transformed instanceof Promise) { + return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx)); + } + return handleCodecTxResult(result, transformed, def.out, ctx); + } else { + const transformed = def.reverseTransform(result.value, result); + if (transformed instanceof Promise) { + return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx)); + } + return handleCodecTxResult(result, transformed, def.in, ctx); + } +} +function handleCodecTxResult(left, value, nextSchema, ctx) { + if (left.issues.length) { + left.aborted = true; + return left; + } + return nextSchema._zod.run({ value, issues: left.issues }, ctx); +} +var $ZodReadonly = /* @__PURE__ */ $constructor("$ZodReadonly", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues); + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + defineLazy(inst._zod, "optin", () => def.innerType?._zod?.optin); + defineLazy(inst._zod, "optout", () => def.innerType?._zod?.optout); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then(handleReadonlyResult); + } + return handleReadonlyResult(result); + }; +}); +function handleReadonlyResult(payload) { + payload.value = Object.freeze(payload.value); + return payload; +} +var $ZodTemplateLiteral = /* @__PURE__ */ $constructor("$ZodTemplateLiteral", (inst, def) => { + $ZodType.init(inst, def); + const regexParts = []; + for (const part of def.parts) { + if (typeof part === "object" && part !== null) { + if (!part._zod.pattern) { + throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`); + } + const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern; + if (!source) + throw new Error(`Invalid template literal part: ${part._zod.traits}`); + const start = source.startsWith("^") ? 1 : 0; + const end = source.endsWith("$") ? source.length - 1 : source.length; + regexParts.push(source.slice(start, end)); + } else if (part === null || primitiveTypes.has(typeof part)) { + regexParts.push(escapeRegex(`${part}`)); + } else { + throw new Error(`Invalid template literal part: ${part}`); + } + } + inst._zod.pattern = new RegExp(`^${regexParts.join("")}$`); + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "string") { + payload.issues.push({ + input: payload.value, + inst, + expected: "string", + code: "invalid_type" + }); + return payload; + } + inst._zod.pattern.lastIndex = 0; + if (!inst._zod.pattern.test(payload.value)) { + payload.issues.push({ + input: payload.value, + inst, + code: "invalid_format", + format: def.format ?? "template_literal", + pattern: inst._zod.pattern.source + }); + return payload; + } + return payload; + }; +}); +var $ZodFunction = /* @__PURE__ */ $constructor("$ZodFunction", (inst, def) => { + $ZodType.init(inst, def); + inst._def = def; + inst._zod.def = def; + inst.implement = (func) => { + if (typeof func !== "function") { + throw new Error("implement() must be called with a function"); + } + return function(...args) { + const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args; + const result = Reflect.apply(func, this, parsedArgs); + if (inst._def.output) { + return parse(inst._def.output, result); + } + return result; + }; + }; + inst.implementAsync = (func) => { + if (typeof func !== "function") { + throw new Error("implementAsync() must be called with a function"); + } + return async function(...args) { + const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args; + const result = await Reflect.apply(func, this, parsedArgs); + if (inst._def.output) { + return await parseAsync(inst._def.output, result); + } + return result; + }; + }; + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "function") { + payload.issues.push({ + code: "invalid_type", + expected: "function", + input: payload.value, + inst + }); + return payload; + } + const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === "promise"; + if (hasPromiseOutput) { + payload.value = inst.implementAsync(payload.value); + } else { + payload.value = inst.implement(payload.value); + } + return payload; + }; + inst.input = (...args) => { + const F = inst.constructor; + if (Array.isArray(args[0])) { + return new F({ + type: "function", + input: new $ZodTuple({ + type: "tuple", + items: args[0], + rest: args[1] + }), + output: inst._def.output + }); + } + return new F({ + type: "function", + input: args[0], + output: inst._def.output + }); + }; + inst.output = (output) => { + const F = inst.constructor; + return new F({ + type: "function", + input: inst._def.input, + output + }); + }; + return inst; +}); +var $ZodPromise = /* @__PURE__ */ $constructor("$ZodPromise", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx)); + }; +}); +var $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "innerType", () => def.getter()); + defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern); + defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues); + defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0); + defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0); + inst._zod.parse = (payload, ctx) => { + const inner = inst._zod.innerType; + return inner._zod.run(payload, ctx); + }; +}); +var $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => { + $ZodCheck.init(inst, def); + $ZodType.init(inst, def); + inst._zod.parse = (payload, _) => { + return payload; + }; + inst._zod.check = (payload) => { + const input = payload.value; + const r = def.fn(input); + if (r instanceof Promise) { + return r.then((r2) => handleRefineResult(r2, payload, input, inst)); + } + handleRefineResult(r, payload, input, inst); + return; + }; +}); +function handleRefineResult(result, payload, input, inst) { + if (!result) { + const _iss = { + code: "custom", + input, + inst, + // incorporates params.error into issue reporting + path: [...inst._zod.def.path ?? []], + // incorporates params.error into issue reporting + continue: !inst._zod.def.abort + // params: inst._zod.def.params, + }; + if (inst._zod.def.params) + _iss.params = inst._zod.def.params; + payload.issues.push(issue(_iss)); + } +} + +// ../../node_modules/zod/v4/locales/index.js +var locales_exports = {}; +__export(locales_exports, { + ar: () => ar_default, + az: () => az_default, + be: () => be_default, + bg: () => bg_default, + ca: () => ca_default, + cs: () => cs_default, + da: () => da_default, + de: () => de_default, + en: () => en_default, + eo: () => eo_default, + es: () => es_default, + fa: () => fa_default, + fi: () => fi_default, + fr: () => fr_default, + frCA: () => fr_CA_default, + he: () => he_default, + hu: () => hu_default, + hy: () => hy_default, + id: () => id_default, + is: () => is_default, + it: () => it_default, + ja: () => ja_default, + ka: () => ka_default, + kh: () => kh_default, + km: () => km_default, + ko: () => ko_default, + lt: () => lt_default, + mk: () => mk_default, + ms: () => ms_default, + nl: () => nl_default, + no: () => no_default, + ota: () => ota_default, + pl: () => pl_default, + ps: () => ps_default, + pt: () => pt_default, + ru: () => ru_default, + sl: () => sl_default, + sv: () => sv_default, + ta: () => ta_default, + th: () => th_default, + tr: () => tr_default, + ua: () => ua_default, + uk: () => uk_default, + ur: () => ur_default, + uz: () => uz_default, + vi: () => vi_default, + yo: () => yo_default, + zhCN: () => zh_CN_default, + zhTW: () => zh_TW_default +}); + +// ../../node_modules/zod/v4/locales/ar.js +var error = () => { + const Sizable = { + string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + file: { unit: "\u0628\u0627\u064A\u062A", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + array: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + set: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0645\u062F\u062E\u0644", + email: "\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A", + url: "\u0631\u0627\u0628\u0637", + emoji: "\u0625\u064A\u0645\u0648\u062C\u064A", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + date: "\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + time: "\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + duration: "\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + ipv4: "\u0639\u0646\u0648\u0627\u0646 IPv4", + ipv6: "\u0639\u0646\u0648\u0627\u0646 IPv6", + cidrv4: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4", + cidrv6: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6", + base64: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded", + base64url: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded", + json_string: "\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON", + e164: "\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164", + jwt: "JWT", + template_literal: "\u0645\u062F\u062E\u0644" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue2.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; + } + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"}`; + return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${issue2.prefix}"`; + if (_issue.format === "ends_with") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`; + } + case "not_multiple_of": + return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue2.divisor}`; + case "unrecognized_keys": + return `\u0645\u0639\u0631\u0641${issue2.keys.length > 1 ? "\u0627\u062A" : ""} \u063A\u0631\u064A\u0628${issue2.keys.length > 1 ? "\u0629" : ""}: ${joinValues(issue2.keys, "\u060C ")}`; + case "invalid_key": + return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`; + case "invalid_union": + return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; + case "invalid_element": + return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`; + default: + return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; + } + }; +}; +function ar_default() { + return { + localeError: error() + }; +} + +// ../../node_modules/zod/v4/locales/az.js +var error2 = () => { + const Sizable = { + string: { unit: "simvol", verb: "olmal\u0131d\u0131r" }, + file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, + array: { unit: "element", verb: "olmal\u0131d\u0131r" }, + set: { unit: "element", verb: "olmal\u0131d\u0131r" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "email address", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datetime", + date: "ISO date", + time: "ISO time", + duration: "ISO duration", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded string", + base64url: "base64url-encoded string", + json_string: "JSON string", + e164: "E.164 number", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${issue2.expected}, daxil olan ${received}`; + } + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${stringifyPrimitive(issue2.values[0])}`; + return `Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin ?? "d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin ?? "d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`; + if (_issue.format === "ends_with") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.suffix}" il\u0259 bitm\u0259lidir`; + if (_issue.format === "includes") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.includes}" daxil olmal\u0131d\u0131r`; + if (_issue.format === "regex") + return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`; + return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Yanl\u0131\u015F \u0259d\u0259d: ${issue2.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`; + case "unrecognized_keys": + return `Tan\u0131nmayan a\xE7ar${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`; + case "invalid_union": + return "Yanl\u0131\u015F d\u0259y\u0259r"; + case "invalid_element": + return `${issue2.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`; + default: + return `Yanl\u0131\u015F d\u0259y\u0259r`; + } + }; +}; +function az_default() { + return { + localeError: error2() + }; +} + +// ../../node_modules/zod/v4/locales/be.js +function getBelarusianPlural(count, one, few, many) { + const absCount = Math.abs(count); + const lastDigit = absCount % 10; + const lastTwoDigits = absCount % 100; + if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { + return many; + } + if (lastDigit === 1) { + return one; + } + if (lastDigit >= 2 && lastDigit <= 4) { + return few; + } + return many; +} +var error3 = () => { + const Sizable = { + string: { + unit: { + one: "\u0441\u0456\u043C\u0432\u0430\u043B", + few: "\u0441\u0456\u043C\u0432\u0430\u043B\u044B", + many: "\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + array: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + set: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + file: { + unit: { + one: "\u0431\u0430\u0439\u0442", + few: "\u0431\u0430\u0439\u0442\u044B", + many: "\u0431\u0430\u0439\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0443\u0432\u043E\u0434", + email: "email \u0430\u0434\u0440\u0430\u0441", + url: "URL", + emoji: "\u044D\u043C\u043E\u0434\u0437\u0456", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0447\u0430\u0441", + duration: "ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C", + ipv4: "IPv4 \u0430\u0434\u0440\u0430\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0430\u0441", + cidrv4: "IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", + base64: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64", + base64url: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url", + json_string: "JSON \u0440\u0430\u0434\u043E\u043A", + e164: "\u043D\u0443\u043C\u0430\u0440 E.164", + jwt: "JWT", + template_literal: "\u0443\u0432\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u043B\u0456\u043A", + array: "\u043C\u0430\u0441\u0456\u045E" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue2.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; + } + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue2.keys.length > 1 ? "\u043A\u043B\u044E\u0447\u044B" : "\u043A\u043B\u044E\u0447"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"; + case "invalid_element": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue2.origin}`; + default: + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`; + } + }; +}; +function be_default() { + return { + localeError: error3() + }; +} + +// ../../node_modules/zod/v4/locales/bg.js +var error4 = () => { + const Sizable = { + string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + file: { unit: "\u0431\u0430\u0439\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0432\u0445\u043E\u0434", + email: "\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441", + url: "URL", + emoji: "\u0435\u043C\u043E\u0434\u0436\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0432\u0440\u0435\u043C\u0435", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0432\u0440\u0435\u043C\u0435", + duration: "ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", + cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + base64: "base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", + base64url: "base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", + json_string: "JSON \u043D\u0438\u0437", + e164: "E.164 \u043D\u043E\u043C\u0435\u0440", + jwt: "JWT", + template_literal: "\u0432\u0445\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; + } + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`; + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`; + let invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D"; + if (_issue.format === "emoji") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "datetime") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "date") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; + if (_issue.format === "time") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "duration") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; + return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue2.keys.length > 1 ? "\u0438" : ""} \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u043E\u0432\u0435" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"; + case "invalid_element": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue2.origin}`; + default: + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`; + } + }; +}; +function bg_default() { + return { + localeError: error4() + }; +} + +// ../../node_modules/zod/v4/locales/ca.js +var error5 = () => { + const Sizable = { + string: { unit: "car\xE0cters", verb: "contenir" }, + file: { unit: "bytes", verb: "contenir" }, + array: { unit: "elements", verb: "contenir" }, + set: { unit: "elements", verb: "contenir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "entrada", + email: "adre\xE7a electr\xF2nica", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data i hora ISO", + date: "data ISO", + time: "hora ISO", + duration: "durada ISO", + ipv4: "adre\xE7a IPv4", + ipv6: "adre\xE7a IPv6", + cidrv4: "rang IPv4", + cidrv6: "rang IPv6", + base64: "cadena codificada en base64", + base64url: "cadena codificada en base64url", + json_string: "cadena JSON", + e164: "n\xFAmero E.164", + jwt: "JWT", + template_literal: "entrada" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Tipus inv\xE0lid: s'esperava instanceof ${issue2.expected}, s'ha rebut ${received}`; + } + return `Tipus inv\xE0lid: s'esperava ${expected}, s'ha rebut ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Valor inv\xE0lid: s'esperava ${stringifyPrimitive(issue2.values[0])}`; + return `Opci\xF3 inv\xE0lida: s'esperava una de ${joinValues(issue2.values, " o ")}`; + case "too_big": { + const adj = issue2.inclusive ? "com a m\xE0xim" : "menys de"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Massa gran: s'esperava que ${issue2.origin ?? "el valor"} contingu\xE9s ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elements"}`; + return `Massa gran: s'esperava que ${issue2.origin ?? "el valor"} fos ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "com a m\xEDnim" : "m\xE9s de"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Massa petit: s'esperava que ${issue2.origin} contingu\xE9s ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Massa petit: s'esperava que ${issue2.origin} fos ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Format inv\xE0lid: ha de comen\xE7ar amb "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Format inv\xE0lid: ha d'acabar amb "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Format inv\xE0lid: ha d'incloure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${_issue.pattern}`; + return `Format inv\xE0lid per a ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Clau${issue2.keys.length > 1 ? "s" : ""} no reconeguda${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Clau inv\xE0lida a ${issue2.origin}`; + case "invalid_union": + return "Entrada inv\xE0lida"; + // Could also be "Tipus d'unió invàlid" but "Entrada invàlida" is more general + case "invalid_element": + return `Element inv\xE0lid a ${issue2.origin}`; + default: + return `Entrada inv\xE0lida`; + } + }; +}; +function ca_default() { + return { + localeError: error5() + }; +} + +// ../../node_modules/zod/v4/locales/cs.js +var error6 = () => { + const Sizable = { + string: { unit: "znak\u016F", verb: "m\xEDt" }, + file: { unit: "bajt\u016F", verb: "m\xEDt" }, + array: { unit: "prvk\u016F", verb: "m\xEDt" }, + set: { unit: "prvk\u016F", verb: "m\xEDt" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "regul\xE1rn\xED v\xFDraz", + email: "e-mailov\xE1 adresa", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "datum a \u010Das ve form\xE1tu ISO", + date: "datum ve form\xE1tu ISO", + time: "\u010Das ve form\xE1tu ISO", + duration: "doba trv\xE1n\xED ISO", + ipv4: "IPv4 adresa", + ipv6: "IPv6 adresa", + cidrv4: "rozsah IPv4", + cidrv6: "rozsah IPv6", + base64: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64", + base64url: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url", + json_string: "\u0159et\u011Bzec ve form\xE1tu JSON", + e164: "\u010D\xEDslo E.164", + jwt: "JWT", + template_literal: "vstup" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u010D\xEDslo", + string: "\u0159et\u011Bzec", + function: "funkce", + array: "pole" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${issue2.expected}, obdr\u017Eeno ${received}`; + } + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${expected}, obdr\u017Eeno ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${stringifyPrimitive(issue2.values[0])}`; + return `Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "prvk\u016F"}`; + } + return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue2.minimum.toString()} ${sizing.unit ?? "prvk\u016F"}`; + } + return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${_issue.pattern}`; + return `Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${issue2.divisor}`; + case "unrecognized_keys": + return `Nezn\xE1m\xE9 kl\xED\u010De: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neplatn\xFD kl\xED\u010D v ${issue2.origin}`; + case "invalid_union": + return "Neplatn\xFD vstup"; + case "invalid_element": + return `Neplatn\xE1 hodnota v ${issue2.origin}`; + default: + return `Neplatn\xFD vstup`; + } + }; +}; +function cs_default() { + return { + localeError: error6() + }; +} + +// ../../node_modules/zod/v4/locales/da.js +var error7 = () => { + const Sizable = { + string: { unit: "tegn", verb: "havde" }, + file: { unit: "bytes", verb: "havde" }, + array: { unit: "elementer", verb: "indeholdt" }, + set: { unit: "elementer", verb: "indeholdt" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "e-mailadresse", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dato- og klokkesl\xE6t", + date: "ISO-dato", + time: "ISO-klokkesl\xE6t", + duration: "ISO-varighed", + ipv4: "IPv4-omr\xE5de", + ipv6: "IPv6-omr\xE5de", + cidrv4: "IPv4-spektrum", + cidrv6: "IPv6-spektrum", + base64: "base64-kodet streng", + base64url: "base64url-kodet streng", + json_string: "JSON-streng", + e164: "E.164-nummer", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + string: "streng", + number: "tal", + boolean: "boolean", + array: "liste", + object: "objekt", + set: "s\xE6t", + file: "fil" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ugyldigt input: forventede instanceof ${issue2.expected}, fik ${received}`; + } + return `Ugyldigt input: forventede ${expected}, fik ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ugyldig v\xE6rdi: forventede ${stringifyPrimitive(issue2.values[0])}`; + return `Ugyldigt valg: forventede en af f\xF8lgende ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) + return `For stor: forventede ${origin ?? "value"} ${sizing.verb} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elementer"}`; + return `For stor: forventede ${origin ?? "value"} havde ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) { + return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `For lille: forventede ${origin} havde ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ugyldig streng: skal starte med "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Ugyldig streng: skal ende med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ugyldig streng: skal indeholde "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ugyldig streng: skal matche m\xF8nsteret ${_issue.pattern}`; + return `Ugyldig ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ugyldigt tal: skal v\xE6re deleligt med ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ukendte n\xF8gler" : "Ukendt n\xF8gle"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ugyldig n\xF8gle i ${issue2.origin}`; + case "invalid_union": + return "Ugyldigt input: matcher ingen af de tilladte typer"; + case "invalid_element": + return `Ugyldig v\xE6rdi i ${issue2.origin}`; + default: + return `Ugyldigt input`; + } + }; +}; +function da_default() { + return { + localeError: error7() + }; +} + +// ../../node_modules/zod/v4/locales/de.js +var error8 = () => { + const Sizable = { + string: { unit: "Zeichen", verb: "zu haben" }, + file: { unit: "Bytes", verb: "zu haben" }, + array: { unit: "Elemente", verb: "zu haben" }, + set: { unit: "Elemente", verb: "zu haben" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "Eingabe", + email: "E-Mail-Adresse", + url: "URL", + emoji: "Emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-Datum und -Uhrzeit", + date: "ISO-Datum", + time: "ISO-Uhrzeit", + duration: "ISO-Dauer", + ipv4: "IPv4-Adresse", + ipv6: "IPv6-Adresse", + cidrv4: "IPv4-Bereich", + cidrv6: "IPv6-Bereich", + base64: "Base64-codierter String", + base64url: "Base64-URL-codierter String", + json_string: "JSON-String", + e164: "E.164-Nummer", + jwt: "JWT", + template_literal: "Eingabe" + }; + const TypeDictionary = { + nan: "NaN", + number: "Zahl", + array: "Array" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ung\xFCltige Eingabe: erwartet instanceof ${issue2.expected}, erhalten ${received}`; + } + return `Ung\xFCltige Eingabe: erwartet ${expected}, erhalten ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ung\xFCltige Eingabe: erwartet ${stringifyPrimitive(issue2.values[0])}`; + return `Ung\xFCltige Option: erwartet eine von ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Zu gro\xDF: erwartet, dass ${issue2.origin ?? "Wert"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "Elemente"} hat`; + return `Zu gro\xDF: erwartet, dass ${issue2.origin ?? "Wert"} ${adj}${issue2.maximum.toString()} ist`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} hat`; + } + return `Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ist`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ung\xFCltiger String: muss mit "${_issue.prefix}" beginnen`; + if (_issue.format === "ends_with") + return `Ung\xFCltiger String: muss mit "${_issue.suffix}" enden`; + if (_issue.format === "includes") + return `Ung\xFCltiger String: muss "${_issue.includes}" enthalten`; + if (_issue.format === "regex") + return `Ung\xFCltiger String: muss dem Muster ${_issue.pattern} entsprechen`; + return `Ung\xFCltig: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ung\xFCltige Zahl: muss ein Vielfaches von ${issue2.divisor} sein`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Unbekannte Schl\xFCssel" : "Unbekannter Schl\xFCssel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ung\xFCltiger Schl\xFCssel in ${issue2.origin}`; + case "invalid_union": + return "Ung\xFCltige Eingabe"; + case "invalid_element": + return `Ung\xFCltiger Wert in ${issue2.origin}`; + default: + return `Ung\xFCltige Eingabe`; + } + }; +}; +function de_default() { + return { + localeError: error8() + }; +} + +// ../../node_modules/zod/v4/locales/en.js +var error9 = () => { + const Sizable = { + string: { unit: "characters", verb: "to have" }, + file: { unit: "bytes", verb: "to have" }, + array: { unit: "items", verb: "to have" }, + set: { unit: "items", verb: "to have" }, + map: { unit: "entries", verb: "to have" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "email address", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datetime", + date: "ISO date", + time: "ISO time", + duration: "ISO duration", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + mac: "MAC address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded string", + base64url: "base64url-encoded string", + json_string: "JSON string", + e164: "E.164 number", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + // Compatibility: "nan" -> "NaN" for display + nan: "NaN" + // All other type names omitted - they fall back to raw values via ?? operator + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `Invalid input: expected ${expected}, received ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`; + return `Invalid option: expected one of ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Too big: expected ${issue2.origin ?? "value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elements"}`; + return `Too big: expected ${issue2.origin ?? "value"} to be ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Invalid string: must start with "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Invalid string: must end with "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Invalid string: must include "${_issue.includes}"`; + if (_issue.format === "regex") + return `Invalid string: must match pattern ${_issue.pattern}`; + return `Invalid ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Invalid number: must be a multiple of ${issue2.divisor}`; + case "unrecognized_keys": + return `Unrecognized key${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Invalid key in ${issue2.origin}`; + case "invalid_union": + return "Invalid input"; + case "invalid_element": + return `Invalid value in ${issue2.origin}`; + default: + return `Invalid input`; + } + }; +}; +function en_default() { + return { + localeError: error9() + }; +} + +// ../../node_modules/zod/v4/locales/eo.js +var error10 = () => { + const Sizable = { + string: { unit: "karaktrojn", verb: "havi" }, + file: { unit: "bajtojn", verb: "havi" }, + array: { unit: "elementojn", verb: "havi" }, + set: { unit: "elementojn", verb: "havi" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "enigo", + email: "retadreso", + url: "URL", + emoji: "emo\u011Dio", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-datotempo", + date: "ISO-dato", + time: "ISO-tempo", + duration: "ISO-da\u016Dro", + ipv4: "IPv4-adreso", + ipv6: "IPv6-adreso", + cidrv4: "IPv4-rango", + cidrv6: "IPv6-rango", + base64: "64-ume kodita karaktraro", + base64url: "URL-64-ume kodita karaktraro", + json_string: "JSON-karaktraro", + e164: "E.164-nombro", + jwt: "JWT", + template_literal: "enigo" + }; + const TypeDictionary = { + nan: "NaN", + number: "nombro", + array: "tabelo", + null: "senvalora" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Nevalida enigo: atendi\u011Dis instanceof ${issue2.expected}, ricevi\u011Dis ${received}`; + } + return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Nevalida enigo: atendi\u011Dis ${stringifyPrimitive(issue2.values[0])}`; + return `Nevalida opcio: atendi\u011Dis unu el ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Tro granda: atendi\u011Dis ke ${issue2.origin ?? "valoro"} havu ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementojn"}`; + return `Tro granda: atendi\u011Dis ke ${issue2.origin ?? "valoro"} havu ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Tro malgranda: atendi\u011Dis ke ${issue2.origin} havu ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Tro malgranda: atendi\u011Dis ke ${issue2.origin} estu ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Nevalida karaktraro: devas komenci\u011Di per "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Nevalida karaktraro: devas fini\u011Di per "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`; + if (_issue.format === "regex") + return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`; + return `Nevalida ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Nevalida nombro: devas esti oblo de ${issue2.divisor}`; + case "unrecognized_keys": + return `Nekonata${issue2.keys.length > 1 ? "j" : ""} \u015Dlosilo${issue2.keys.length > 1 ? "j" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Nevalida \u015Dlosilo en ${issue2.origin}`; + case "invalid_union": + return "Nevalida enigo"; + case "invalid_element": + return `Nevalida valoro en ${issue2.origin}`; + default: + return `Nevalida enigo`; + } + }; +}; +function eo_default() { + return { + localeError: error10() + }; +} + +// ../../node_modules/zod/v4/locales/es.js +var error11 = () => { + const Sizable = { + string: { unit: "caracteres", verb: "tener" }, + file: { unit: "bytes", verb: "tener" }, + array: { unit: "elementos", verb: "tener" }, + set: { unit: "elementos", verb: "tener" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "entrada", + email: "direcci\xF3n de correo electr\xF3nico", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "fecha y hora ISO", + date: "fecha ISO", + time: "hora ISO", + duration: "duraci\xF3n ISO", + ipv4: "direcci\xF3n IPv4", + ipv6: "direcci\xF3n IPv6", + cidrv4: "rango IPv4", + cidrv6: "rango IPv6", + base64: "cadena codificada en base64", + base64url: "URL codificada en base64", + json_string: "cadena JSON", + e164: "n\xFAmero E.164", + jwt: "JWT", + template_literal: "entrada" + }; + const TypeDictionary = { + nan: "NaN", + string: "texto", + number: "n\xFAmero", + boolean: "booleano", + array: "arreglo", + object: "objeto", + set: "conjunto", + file: "archivo", + date: "fecha", + bigint: "n\xFAmero grande", + symbol: "s\xEDmbolo", + undefined: "indefinido", + null: "nulo", + function: "funci\xF3n", + map: "mapa", + record: "registro", + tuple: "tupla", + enum: "enumeraci\xF3n", + union: "uni\xF3n", + literal: "literal", + promise: "promesa", + void: "vac\xEDo", + never: "nunca", + unknown: "desconocido", + any: "cualquiera" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entrada inv\xE1lida: se esperaba instanceof ${issue2.expected}, recibido ${received}`; + } + return `Entrada inv\xE1lida: se esperaba ${expected}, recibido ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entrada inv\xE1lida: se esperaba ${stringifyPrimitive(issue2.values[0])}`; + return `Opci\xF3n inv\xE1lida: se esperaba una de ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) + return `Demasiado grande: se esperaba que ${origin ?? "valor"} tuviera ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementos"}`; + return `Demasiado grande: se esperaba que ${origin ?? "valor"} fuera ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) { + return `Demasiado peque\xF1o: se esperaba que ${origin} tuviera ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Demasiado peque\xF1o: se esperaba que ${origin} fuera ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Cadena inv\xE1lida: debe comenzar con "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Cadena inv\xE1lida: debe terminar en "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cadena inv\xE1lida: debe incluir "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${_issue.pattern}`; + return `Inv\xE1lido ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${issue2.divisor}`; + case "unrecognized_keys": + return `Llave${issue2.keys.length > 1 ? "s" : ""} desconocida${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Llave inv\xE1lida en ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + case "invalid_union": + return "Entrada inv\xE1lida"; + case "invalid_element": + return `Valor inv\xE1lido en ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + default: + return `Entrada inv\xE1lida`; + } + }; +}; +function es_default() { + return { + localeError: error11() + }; +} + +// ../../node_modules/zod/v4/locales/fa.js +var error12 = () => { + const Sizable = { + string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + file: { unit: "\u0628\u0627\u06CC\u062A", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + array: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + set: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0648\u0631\u0648\u062F\u06CC", + email: "\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644", + url: "URL", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + date: "\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648", + time: "\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + duration: "\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + ipv4: "IPv4 \u0622\u062F\u0631\u0633", + ipv6: "IPv6 \u0622\u062F\u0631\u0633", + cidrv4: "IPv4 \u062F\u0627\u0645\u0646\u0647", + cidrv6: "IPv6 \u062F\u0627\u0645\u0646\u0647", + base64: "base64-encoded \u0631\u0634\u062A\u0647", + base64url: "base64url-encoded \u0631\u0634\u062A\u0647", + json_string: "JSON \u0631\u0634\u062A\u0647", + e164: "E.164 \u0639\u062F\u062F", + jwt: "JWT", + template_literal: "\u0648\u0631\u0648\u062F\u06CC" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0639\u062F\u062F", + array: "\u0622\u0631\u0627\u06CC\u0647" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue2.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; + } + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; + } + case "invalid_value": + if (issue2.values.length === 1) { + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${stringifyPrimitive(issue2.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`; + } + return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${joinValues(issue2.values, "|")} \u0645\u06CC\u200C\u0628\u0648\u062F`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`; + } + return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0628\u0627\u0634\u062F`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`; + } + return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0628\u0627\u0634\u062F`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`; + } + if (_issue.format === "ends_with") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`; + } + if (_issue.format === "includes") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${_issue.includes}" \u0628\u0627\u0634\u062F`; + } + if (_issue.format === "regex") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`; + } + return `${FormatDictionary[_issue.format] ?? issue2.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + } + case "not_multiple_of": + return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue2.divisor} \u0628\u0627\u0634\u062F`; + case "unrecognized_keys": + return `\u06A9\u0644\u06CC\u062F${issue2.keys.length > 1 ? "\u0647\u0627\u06CC" : ""} \u0646\u0627\u0634\u0646\u0627\u0633: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue2.origin}`; + case "invalid_union": + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + case "invalid_element": + return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue2.origin}`; + default: + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + } + }; +}; +function fa_default() { + return { + localeError: error12() + }; +} + +// ../../node_modules/zod/v4/locales/fi.js +var error13 = () => { + const Sizable = { + string: { unit: "merkki\xE4", subject: "merkkijonon" }, + file: { unit: "tavua", subject: "tiedoston" }, + array: { unit: "alkiota", subject: "listan" }, + set: { unit: "alkiota", subject: "joukon" }, + number: { unit: "", subject: "luvun" }, + bigint: { unit: "", subject: "suuren kokonaisluvun" }, + int: { unit: "", subject: "kokonaisluvun" }, + date: { unit: "", subject: "p\xE4iv\xE4m\xE4\xE4r\xE4n" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "s\xE4\xE4nn\xF6llinen lauseke", + email: "s\xE4hk\xF6postiosoite", + url: "URL-osoite", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-aikaleima", + date: "ISO-p\xE4iv\xE4m\xE4\xE4r\xE4", + time: "ISO-aika", + duration: "ISO-kesto", + ipv4: "IPv4-osoite", + ipv6: "IPv6-osoite", + cidrv4: "IPv4-alue", + cidrv6: "IPv6-alue", + base64: "base64-koodattu merkkijono", + base64url: "base64url-koodattu merkkijono", + json_string: "JSON-merkkijono", + e164: "E.164-luku", + jwt: "JWT", + template_literal: "templaattimerkkijono" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Virheellinen tyyppi: odotettiin instanceof ${issue2.expected}, oli ${received}`; + } + return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Virheellinen sy\xF6te: t\xE4ytyy olla ${stringifyPrimitive(issue2.values[0])}`; + return `Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Liian suuri: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.maximum.toString()} ${sizing.unit}`.trim(); + } + return `Liian suuri: arvon t\xE4ytyy olla ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Liian pieni: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.minimum.toString()} ${sizing.unit}`.trim(); + } + return `Liian pieni: arvon t\xE4ytyy olla ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Virheellinen sy\xF6te: t\xE4ytyy alkaa "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Virheellinen sy\xF6te: t\xE4ytyy loppua "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${_issue.includes}"`; + if (_issue.format === "regex") { + return `Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${_issue.pattern}`; + } + return `Virheellinen ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Virheellinen luku: t\xE4ytyy olla luvun ${issue2.divisor} monikerta`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Tuntemattomat avaimet" : "Tuntematon avain"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return "Virheellinen avain tietueessa"; + case "invalid_union": + return "Virheellinen unioni"; + case "invalid_element": + return "Virheellinen arvo joukossa"; + default: + return `Virheellinen sy\xF6te`; + } + }; +}; +function fi_default() { + return { + localeError: error13() + }; +} + +// ../../node_modules/zod/v4/locales/fr.js +var error14 = () => { + const Sizable = { + string: { unit: "caract\xE8res", verb: "avoir" }, + file: { unit: "octets", verb: "avoir" }, + array: { unit: "\xE9l\xE9ments", verb: "avoir" }, + set: { unit: "\xE9l\xE9ments", verb: "avoir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "entr\xE9e", + email: "adresse e-mail", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "date et heure ISO", + date: "date ISO", + time: "heure ISO", + duration: "dur\xE9e ISO", + ipv4: "adresse IPv4", + ipv6: "adresse IPv6", + cidrv4: "plage IPv4", + cidrv6: "plage IPv6", + base64: "cha\xEEne encod\xE9e en base64", + base64url: "cha\xEEne encod\xE9e en base64url", + json_string: "cha\xEEne JSON", + e164: "num\xE9ro E.164", + jwt: "JWT", + template_literal: "entr\xE9e" + }; + const TypeDictionary = { + nan: "NaN", + number: "nombre", + array: "tableau" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entr\xE9e invalide : instanceof ${issue2.expected} attendu, ${received} re\xE7u`; + } + return `Entr\xE9e invalide : ${expected} attendu, ${received} re\xE7u`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entr\xE9e invalide : ${stringifyPrimitive(issue2.values[0])} attendu`; + return `Option invalide : une valeur parmi ${joinValues(issue2.values, "|")} attendue`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Trop grand : ${issue2.origin ?? "valeur"} doit ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\xE9l\xE9ment(s)"}`; + return `Trop grand : ${issue2.origin ?? "valeur"} doit \xEAtre ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Trop petit : ${issue2.origin} doit ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Trop petit : ${issue2.origin} doit \xEAtre ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cha\xEEne invalide : doit correspondre au mod\xE8le ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} invalide`; + } + case "not_multiple_of": + return `Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Cl\xE9${issue2.keys.length > 1 ? "s" : ""} non reconnue${issue2.keys.length > 1 ? "s" : ""} : ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Cl\xE9 invalide dans ${issue2.origin}`; + case "invalid_union": + return "Entr\xE9e invalide"; + case "invalid_element": + return `Valeur invalide dans ${issue2.origin}`; + default: + return `Entr\xE9e invalide`; + } + }; +}; +function fr_default() { + return { + localeError: error14() + }; +} + +// ../../node_modules/zod/v4/locales/fr-CA.js +var error15 = () => { + const Sizable = { + string: { unit: "caract\xE8res", verb: "avoir" }, + file: { unit: "octets", verb: "avoir" }, + array: { unit: "\xE9l\xE9ments", verb: "avoir" }, + set: { unit: "\xE9l\xE9ments", verb: "avoir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "entr\xE9e", + email: "adresse courriel", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "date-heure ISO", + date: "date ISO", + time: "heure ISO", + duration: "dur\xE9e ISO", + ipv4: "adresse IPv4", + ipv6: "adresse IPv6", + cidrv4: "plage IPv4", + cidrv6: "plage IPv6", + base64: "cha\xEEne encod\xE9e en base64", + base64url: "cha\xEEne encod\xE9e en base64url", + json_string: "cha\xEEne JSON", + e164: "num\xE9ro E.164", + jwt: "JWT", + template_literal: "entr\xE9e" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entr\xE9e invalide : attendu instanceof ${issue2.expected}, re\xE7u ${received}`; + } + return `Entr\xE9e invalide : attendu ${expected}, re\xE7u ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entr\xE9e invalide : attendu ${stringifyPrimitive(issue2.values[0])}`; + return `Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "\u2264" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Trop grand : attendu que ${issue2.origin ?? "la valeur"} ait ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + return `Trop grand : attendu que ${issue2.origin ?? "la valeur"} soit ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u2265" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Trop petit : attendu que ${issue2.origin} ait ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Trop petit : attendu que ${issue2.origin} soit ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cha\xEEne invalide : doit correspondre au motif ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} invalide`; + } + case "not_multiple_of": + return `Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Cl\xE9${issue2.keys.length > 1 ? "s" : ""} non reconnue${issue2.keys.length > 1 ? "s" : ""} : ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Cl\xE9 invalide dans ${issue2.origin}`; + case "invalid_union": + return "Entr\xE9e invalide"; + case "invalid_element": + return `Valeur invalide dans ${issue2.origin}`; + default: + return `Entr\xE9e invalide`; + } + }; +}; +function fr_CA_default() { + return { + localeError: error15() + }; +} + +// ../../node_modules/zod/v4/locales/he.js +var error16 = () => { + const TypeNames = { + string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" }, + number: { label: "\u05DE\u05E1\u05E4\u05E8", gender: "m" }, + boolean: { label: "\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9", gender: "m" }, + bigint: { label: "BigInt", gender: "m" }, + date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA", gender: "m" }, + array: { label: "\u05DE\u05E2\u05E8\u05DA", gender: "m" }, + object: { label: "\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8", gender: "m" }, + null: { label: "\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)", gender: "m" }, + undefined: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)", gender: "m" }, + symbol: { label: "\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)", gender: "m" }, + function: { label: "\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4", gender: "f" }, + map: { label: "\u05DE\u05E4\u05D4 (Map)", gender: "f" }, + set: { label: "\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)", gender: "f" }, + file: { label: "\u05E7\u05D5\u05D1\u05E5", gender: "m" }, + promise: { label: "Promise", gender: "m" }, + NaN: { label: "NaN", gender: "m" }, + unknown: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2", gender: "m" }, + value: { label: "\u05E2\u05E8\u05DA", gender: "m" } + }; + const Sizable = { + string: { unit: "\u05EA\u05D5\u05D5\u05D9\u05DD", shortLabel: "\u05E7\u05E6\u05E8", longLabel: "\u05D0\u05E8\u05D5\u05DA" }, + file: { unit: "\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + array: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + set: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + number: { unit: "", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" } + // no unit + }; + const typeEntry = (t) => t ? TypeNames[t] : void 0; + const typeLabel = (t) => { + const e = typeEntry(t); + if (e) + return e.label; + return t ?? TypeNames.unknown.label; + }; + const withDefinite = (t) => `\u05D4${typeLabel(t)}`; + const verbFor = (t) => { + const e = typeEntry(t); + const gender = e?.gender ?? "m"; + return gender === "f" ? "\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA" : "\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"; + }; + const getSizing = (origin) => { + if (!origin) + return null; + return Sizable[origin] ?? null; + }; + const FormatDictionary = { + regex: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + email: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC", gender: "f" }, + url: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA", gender: "f" }, + emoji: { label: "\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9", gender: "m" }, + uuid: { label: "UUID", gender: "m" }, + nanoid: { label: "nanoid", gender: "m" }, + guid: { label: "GUID", gender: "m" }, + cuid: { label: "cuid", gender: "m" }, + cuid2: { label: "cuid2", gender: "m" }, + ulid: { label: "ULID", gender: "m" }, + xid: { label: "XID", gender: "m" }, + ksuid: { label: "KSUID", gender: "m" }, + datetime: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO", gender: "m" }, + date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA ISO", gender: "m" }, + time: { label: "\u05D6\u05DE\u05DF ISO", gender: "m" }, + duration: { label: "\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO", gender: "m" }, + ipv4: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv4", gender: "f" }, + ipv6: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv6", gender: "f" }, + cidrv4: { label: "\u05D8\u05D5\u05D5\u05D7 IPv4", gender: "m" }, + cidrv6: { label: "\u05D8\u05D5\u05D5\u05D7 IPv6", gender: "m" }, + base64: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64", gender: "f" }, + base64url: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA", gender: "f" }, + json_string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON", gender: "f" }, + e164: { label: "\u05DE\u05E1\u05E4\u05E8 E.164", gender: "m" }, + jwt: { label: "JWT", gender: "m" }, + ends_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + includes: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + lowercase: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + starts_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + uppercase: { label: "\u05E7\u05DC\u05D8", gender: "m" } + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expectedKey = issue2.expected; + const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel(expectedKey); + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue2.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; + } + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; + } + case "invalid_value": { + if (issue2.values.length === 1) { + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${stringifyPrimitive(issue2.values[0])}`; + } + const stringified = issue2.values.map((v) => stringifyPrimitive(v)); + if (issue2.values.length === 2) { + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`; + } + const lastValue = stringified[stringified.length - 1]; + const restValues = stringified.slice(0, -1).join(", "); + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`; + } + case "too_big": { + const sizing = getSizing(issue2.origin); + const subject = withDefinite(issue2.origin ?? "value"); + if (issue2.origin === "string") { + return `${sizing?.longLabel ?? "\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.maximum.toString()} ${sizing?.unit ?? ""} ${issue2.inclusive ? "\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA" : "\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim(); + } + if (issue2.origin === "number") { + const comparison = issue2.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue2.maximum}`; + return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; + } + if (issue2.origin === "array" || issue2.origin === "set") { + const verb = issue2.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; + const comparison = issue2.inclusive ? `${issue2.maximum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA` : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue2.maximum} ${sizing?.unit ?? ""}`; + return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); + } + const adj = issue2.inclusive ? "<=" : "<"; + const be = verbFor(issue2.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + } + return `${sizing?.longLabel ?? "\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const sizing = getSizing(issue2.origin); + const subject = withDefinite(issue2.origin ?? "value"); + if (issue2.origin === "string") { + return `${sizing?.shortLabel ?? "\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.minimum.toString()} ${sizing?.unit ?? ""} ${issue2.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim(); + } + if (issue2.origin === "number") { + const comparison = issue2.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue2.minimum}`; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; + } + if (issue2.origin === "array" || issue2.origin === "set") { + const verb = issue2.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; + if (issue2.minimum === 1 && issue2.inclusive) { + const singularPhrase = issue2.origin === "set" ? "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3" : "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3"; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`; + } + const comparison = issue2.inclusive ? `${issue2.minimum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8` : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue2.minimum} ${sizing?.unit ?? ""}`; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); + } + const adj = issue2.inclusive ? ">=" : ">"; + const be = verbFor(issue2.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `${sizing?.shortLabel ?? "\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`; + const nounEntry = FormatDictionary[_issue.format]; + const noun = nounEntry?.label ?? _issue.format; + const gender = nounEntry?.gender ?? "m"; + const adjective = gender === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF"; + return `${noun} \u05DC\u05D0 ${adjective}`; + } + case "not_multiple_of": + return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue2.divisor}`; + case "unrecognized_keys": + return `\u05DE\u05E4\u05EA\u05D7${issue2.keys.length > 1 ? "\u05D5\u05EA" : ""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue2.keys.length > 1 ? "\u05D9\u05DD" : "\u05D4"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": { + return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`; + } + case "invalid_union": + return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"; + case "invalid_element": { + const place = withDefinite(issue2.origin ?? "array"); + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`; + } + default: + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`; + } + }; +}; +function he_default() { + return { + localeError: error16() + }; +} + +// ../../node_modules/zod/v4/locales/hu.js +var error17 = () => { + const Sizable = { + string: { unit: "karakter", verb: "legyen" }, + file: { unit: "byte", verb: "legyen" }, + array: { unit: "elem", verb: "legyen" }, + set: { unit: "elem", verb: "legyen" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "bemenet", + email: "email c\xEDm", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO id\u0151b\xE9lyeg", + date: "ISO d\xE1tum", + time: "ISO id\u0151", + duration: "ISO id\u0151intervallum", + ipv4: "IPv4 c\xEDm", + ipv6: "IPv6 c\xEDm", + cidrv4: "IPv4 tartom\xE1ny", + cidrv6: "IPv6 tartom\xE1ny", + base64: "base64-k\xF3dolt string", + base64url: "base64url-k\xF3dolt string", + json_string: "JSON string", + e164: "E.164 sz\xE1m", + jwt: "JWT", + template_literal: "bemenet" + }; + const TypeDictionary = { + nan: "NaN", + number: "sz\xE1m", + array: "t\xF6mb" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${issue2.expected}, a kapott \xE9rt\xE9k ${received}`; + } + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${expected}, a kapott \xE9rt\xE9k ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${stringifyPrimitive(issue2.values[0])}`; + return `\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `T\xFAl nagy: ${issue2.origin ?? "\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elem"}`; + return `T\xFAl nagy: a bemeneti \xE9rt\xE9k ${issue2.origin ?? "\xE9rt\xE9k"} t\xFAl nagy: ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} m\xE9rete t\xFAl kicsi ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} t\xFAl kicsi ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\xC9rv\xE9nytelen string: "${_issue.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`; + if (_issue.format === "ends_with") + return `\xC9rv\xE9nytelen string: "${_issue.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`; + if (_issue.format === "includes") + return `\xC9rv\xE9nytelen string: "${_issue.includes}" \xE9rt\xE9ket kell tartalmaznia`; + if (_issue.format === "regex") + return `\xC9rv\xE9nytelen string: ${_issue.pattern} mint\xE1nak kell megfelelnie`; + return `\xC9rv\xE9nytelen ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\xC9rv\xE9nytelen sz\xE1m: ${issue2.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`; + case "unrecognized_keys": + return `Ismeretlen kulcs${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\xC9rv\xE9nytelen kulcs ${issue2.origin}`; + case "invalid_union": + return "\xC9rv\xE9nytelen bemenet"; + case "invalid_element": + return `\xC9rv\xE9nytelen \xE9rt\xE9k: ${issue2.origin}`; + default: + return `\xC9rv\xE9nytelen bemenet`; + } + }; +}; +function hu_default() { + return { + localeError: error17() + }; +} + +// ../../node_modules/zod/v4/locales/hy.js +function getArmenianPlural(count, one, many) { + return Math.abs(count) === 1 ? one : many; +} +function withDefiniteArticle(word) { + if (!word) + return ""; + const vowels = ["\u0561", "\u0565", "\u0568", "\u056B", "\u0578", "\u0578\u0582", "\u0585"]; + const lastChar = word[word.length - 1]; + return word + (vowels.includes(lastChar) ? "\u0576" : "\u0568"); +} +var error18 = () => { + const Sizable = { + string: { + unit: { + one: "\u0576\u0577\u0561\u0576", + many: "\u0576\u0577\u0561\u0576\u0576\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + file: { + unit: { + one: "\u0562\u0561\u0575\u0569", + many: "\u0562\u0561\u0575\u0569\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + array: { + unit: { + one: "\u057F\u0561\u0580\u0580", + many: "\u057F\u0561\u0580\u0580\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + set: { + unit: { + one: "\u057F\u0561\u0580\u0580", + many: "\u057F\u0561\u0580\u0580\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0574\u0578\u0582\u057F\u0584", + email: "\u0567\u056C. \u0570\u0561\u057D\u0581\u0565", + url: "URL", + emoji: "\u0567\u0574\u0578\u057B\u056B", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574", + date: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E", + time: "ISO \u056A\u0561\u0574", + duration: "ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576", + ipv4: "IPv4 \u0570\u0561\u057D\u0581\u0565", + ipv6: "IPv6 \u0570\u0561\u057D\u0581\u0565", + cidrv4: "IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", + cidrv6: "IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", + base64: "base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", + base64url: "base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", + json_string: "JSON \u057F\u0578\u0572", + e164: "E.164 \u0570\u0561\u0574\u0561\u0580", + jwt: "JWT", + template_literal: "\u0574\u0578\u0582\u057F\u0584" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0569\u056B\u057E", + array: "\u0566\u0561\u0576\u0563\u057E\u0561\u056E" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue2.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; + } + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${stringifyPrimitive(issue2.values[1])}`; + return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many); + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many); + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056C\u056B\u0576\u056B ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${_issue.prefix}"-\u0578\u057E`; + if (_issue.format === "ends_with") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${_issue.suffix}"-\u0578\u057E`; + if (_issue.format === "includes") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`; + return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue2.divisor}-\u056B`; + case "unrecognized_keys": + return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue2.keys.length > 1 ? "\u0576\u0565\u0580" : ""}. ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`; + case "invalid_union": + return "\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"; + case "invalid_element": + return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`; + default: + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`; + } + }; +}; +function hy_default() { + return { + localeError: error18() + }; +} + +// ../../node_modules/zod/v4/locales/id.js +var error19 = () => { + const Sizable = { + string: { unit: "karakter", verb: "memiliki" }, + file: { unit: "byte", verb: "memiliki" }, + array: { unit: "item", verb: "memiliki" }, + set: { unit: "item", verb: "memiliki" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "alamat email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "tanggal dan waktu format ISO", + date: "tanggal format ISO", + time: "jam format ISO", + duration: "durasi format ISO", + ipv4: "alamat IPv4", + ipv6: "alamat IPv6", + cidrv4: "rentang alamat IPv4", + cidrv6: "rentang alamat IPv6", + base64: "string dengan enkode base64", + base64url: "string dengan enkode base64url", + json_string: "string JSON", + e164: "angka E.164", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input tidak valid: diharapkan instanceof ${issue2.expected}, diterima ${received}`; + } + return `Input tidak valid: diharapkan ${expected}, diterima ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input tidak valid: diharapkan ${stringifyPrimitive(issue2.values[0])}`; + return `Pilihan tidak valid: diharapkan salah satu dari ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Terlalu besar: diharapkan ${issue2.origin ?? "value"} memiliki ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemen"}`; + return `Terlalu besar: diharapkan ${issue2.origin ?? "value"} menjadi ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Terlalu kecil: diharapkan ${issue2.origin} memiliki ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Terlalu kecil: diharapkan ${issue2.origin} menjadi ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `String tidak valid: harus dimulai dengan "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `String tidak valid: harus berakhir dengan "${_issue.suffix}"`; + if (_issue.format === "includes") + return `String tidak valid: harus menyertakan "${_issue.includes}"`; + if (_issue.format === "regex") + return `String tidak valid: harus sesuai pola ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} tidak valid`; + } + case "not_multiple_of": + return `Angka tidak valid: harus kelipatan dari ${issue2.divisor}`; + case "unrecognized_keys": + return `Kunci tidak dikenali ${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kunci tidak valid di ${issue2.origin}`; + case "invalid_union": + return "Input tidak valid"; + case "invalid_element": + return `Nilai tidak valid di ${issue2.origin}`; + default: + return `Input tidak valid`; + } + }; +}; +function id_default() { + return { + localeError: error19() + }; +} + +// ../../node_modules/zod/v4/locales/is.js +var error20 = () => { + const Sizable = { + string: { unit: "stafi", verb: "a\xF0 hafa" }, + file: { unit: "b\xE6ti", verb: "a\xF0 hafa" }, + array: { unit: "hluti", verb: "a\xF0 hafa" }, + set: { unit: "hluti", verb: "a\xF0 hafa" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "gildi", + email: "netfang", + url: "vefsl\xF3\xF0", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dagsetning og t\xEDmi", + date: "ISO dagsetning", + time: "ISO t\xEDmi", + duration: "ISO t\xEDmalengd", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded strengur", + base64url: "base64url-encoded strengur", + json_string: "JSON strengur", + e164: "E.164 t\xF6lugildi", + jwt: "JWT", + template_literal: "gildi" + }; + const TypeDictionary = { + nan: "NaN", + number: "n\xFAmer", + array: "fylki" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera instanceof ${issue2.expected}`; + } + return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera ${expected}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Rangt gildi: gert r\xE1\xF0 fyrir ${stringifyPrimitive(issue2.values[0])}`; + return `\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin ?? "gildi"} hafi ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "hluti"}`; + return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin ?? "gildi"} s\xE9 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} hafi ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} s\xE9 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${_issue.includes}"`; + if (_issue.format === "regex") + return `\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${_issue.pattern}`; + return `Rangt ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${issue2.divisor}`; + case "unrecognized_keys": + return `\xD3\xFEekkt ${issue2.keys.length > 1 ? "ir lyklar" : "ur lykill"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Rangur lykill \xED ${issue2.origin}`; + case "invalid_union": + return "Rangt gildi"; + case "invalid_element": + return `Rangt gildi \xED ${issue2.origin}`; + default: + return `Rangt gildi`; + } + }; +}; +function is_default() { + return { + localeError: error20() + }; +} + +// ../../node_modules/zod/v4/locales/it.js +var error21 = () => { + const Sizable = { + string: { unit: "caratteri", verb: "avere" }, + file: { unit: "byte", verb: "avere" }, + array: { unit: "elementi", verb: "avere" }, + set: { unit: "elementi", verb: "avere" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "indirizzo email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data e ora ISO", + date: "data ISO", + time: "ora ISO", + duration: "durata ISO", + ipv4: "indirizzo IPv4", + ipv6: "indirizzo IPv6", + cidrv4: "intervallo IPv4", + cidrv6: "intervallo IPv6", + base64: "stringa codificata in base64", + base64url: "URL codificata in base64", + json_string: "stringa JSON", + e164: "numero E.164", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "numero", + array: "vettore" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input non valido: atteso instanceof ${issue2.expected}, ricevuto ${received}`; + } + return `Input non valido: atteso ${expected}, ricevuto ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input non valido: atteso ${stringifyPrimitive(issue2.values[0])}`; + return `Opzione non valida: atteso uno tra ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Troppo grande: ${issue2.origin ?? "valore"} deve avere ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementi"}`; + return `Troppo grande: ${issue2.origin ?? "valore"} deve essere ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Troppo piccolo: ${issue2.origin} deve avere ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Troppo piccolo: ${issue2.origin} deve essere ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Stringa non valida: deve iniziare con "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Stringa non valida: deve terminare con "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Stringa non valida: deve includere "${_issue.includes}"`; + if (_issue.format === "regex") + return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`; + return `Invalid ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Numero non valido: deve essere un multiplo di ${issue2.divisor}`; + case "unrecognized_keys": + return `Chiav${issue2.keys.length > 1 ? "i" : "e"} non riconosciut${issue2.keys.length > 1 ? "e" : "a"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Chiave non valida in ${issue2.origin}`; + case "invalid_union": + return "Input non valido"; + case "invalid_element": + return `Valore non valido in ${issue2.origin}`; + default: + return `Input non valido`; + } + }; +}; +function it_default() { + return { + localeError: error21() + }; +} + +// ../../node_modules/zod/v4/locales/ja.js +var error22 = () => { + const Sizable = { + string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" }, + file: { unit: "\u30D0\u30A4\u30C8", verb: "\u3067\u3042\u308B" }, + array: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" }, + set: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u5165\u529B\u5024", + email: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9", + url: "URL", + emoji: "\u7D75\u6587\u5B57", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO\u65E5\u6642", + date: "ISO\u65E5\u4ED8", + time: "ISO\u6642\u523B", + duration: "ISO\u671F\u9593", + ipv4: "IPv4\u30A2\u30C9\u30EC\u30B9", + ipv6: "IPv6\u30A2\u30C9\u30EC\u30B9", + cidrv4: "IPv4\u7BC4\u56F2", + cidrv6: "IPv6\u7BC4\u56F2", + base64: "base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", + base64url: "base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", + json_string: "JSON\u6587\u5B57\u5217", + e164: "E.164\u756A\u53F7", + jwt: "JWT", + template_literal: "\u5165\u529B\u5024" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u6570\u5024", + array: "\u914D\u5217" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue2.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; + } + return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u7121\u52B9\u306A\u5165\u529B: ${stringifyPrimitive(issue2.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`; + return `\u7121\u52B9\u306A\u9078\u629E: ${joinValues(issue2.values, "\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + case "too_big": { + const adj = issue2.inclusive ? "\u4EE5\u4E0B\u3067\u3042\u308B" : "\u3088\u308A\u5C0F\u3055\u3044"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin ?? "\u5024"}\u306F${issue2.maximum.toString()}${sizing.unit ?? "\u8981\u7D20"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin ?? "\u5024"}\u306F${issue2.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u4EE5\u4E0A\u3067\u3042\u308B" : "\u3088\u308A\u5927\u304D\u3044"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "ends_with") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "includes") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "regex") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u7121\u52B9\u306A\u6570\u5024: ${issue2.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + case "unrecognized_keys": + return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue2.keys.length > 1 ? "\u7FA4" : ""}: ${joinValues(issue2.keys, "\u3001")}`; + case "invalid_key": + return `${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`; + case "invalid_union": + return "\u7121\u52B9\u306A\u5165\u529B"; + case "invalid_element": + return `${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`; + default: + return `\u7121\u52B9\u306A\u5165\u529B`; + } + }; +}; +function ja_default() { + return { + localeError: error22() + }; +} + +// ../../node_modules/zod/v4/locales/ka.js +var error23 = () => { + const Sizable = { + string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + file: { unit: "\u10D1\u10D0\u10D8\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + array: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + set: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0", + email: "\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + url: "URL", + emoji: "\u10D4\u10DB\u10DD\u10EF\u10D8", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD", + date: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8", + time: "\u10D3\u10E0\u10DD", + duration: "\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0", + ipv4: "IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + ipv6: "IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + cidrv4: "IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", + cidrv6: "IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", + base64: "base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", + base64url: "base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", + json_string: "JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", + e164: "E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8", + jwt: "JWT", + template_literal: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8", + string: "\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8", + boolean: "\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8", + function: "\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0", + array: "\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue2.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; + } + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${stringifyPrimitive(issue2.values[0])}`; + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${joinValues(issue2.values, "|")}-\u10D3\u10D0\u10DC`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.prefix}"-\u10D8\u10D7`; + } + if (_issue.format === "ends_with") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.suffix}"-\u10D8\u10D7`; + if (_issue.format === "includes") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${_issue.includes}"-\u10E1`; + if (_issue.format === "regex") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`; + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue2.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`; + case "unrecognized_keys": + return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue2.keys.length > 1 ? "\u10D4\u10D1\u10D8" : "\u10D8"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue2.origin}-\u10E8\u10D8`; + case "invalid_union": + return "\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"; + case "invalid_element": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue2.origin}-\u10E8\u10D8`; + default: + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`; + } + }; +}; +function ka_default() { + return { + localeError: error23() + }; +} + +// ../../node_modules/zod/v4/locales/km.js +var error24 = () => { + const Sizable = { + string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + file: { unit: "\u1794\u17C3", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + array: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + set: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B", + email: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B", + url: "URL", + emoji: "\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO", + date: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO", + time: "\u1798\u17C9\u17C4\u1784 ISO", + duration: "\u179A\u1799\u17C8\u1796\u17C1\u179B ISO", + ipv4: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", + ipv6: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", + cidrv4: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", + cidrv6: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", + base64: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64", + base64url: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url", + json_string: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON", + e164: "\u179B\u17C1\u1781 E.164", + jwt: "JWT", + template_literal: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u179B\u17C1\u1781", + array: "\u17A2\u17B6\u179A\u17C1 (Array)", + null: "\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue2.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; + } + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${stringifyPrimitive(issue2.values[0])}`; + return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u1792\u17B6\u178F\u17BB"}`; + return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`; + return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`; + case "invalid_union": + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; + case "invalid_element": + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`; + default: + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; + } + }; +}; +function km_default() { + return { + localeError: error24() + }; +} + +// ../../node_modules/zod/v4/locales/kh.js +function kh_default() { + return km_default(); +} + +// ../../node_modules/zod/v4/locales/ko.js +var error25 = () => { + const Sizable = { + string: { unit: "\uBB38\uC790", verb: "to have" }, + file: { unit: "\uBC14\uC774\uD2B8", verb: "to have" }, + array: { unit: "\uAC1C", verb: "to have" }, + set: { unit: "\uAC1C", verb: "to have" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\uC785\uB825", + email: "\uC774\uBA54\uC77C \uC8FC\uC18C", + url: "URL", + emoji: "\uC774\uBAA8\uC9C0", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \uB0A0\uC9DC\uC2DC\uAC04", + date: "ISO \uB0A0\uC9DC", + time: "ISO \uC2DC\uAC04", + duration: "ISO \uAE30\uAC04", + ipv4: "IPv4 \uC8FC\uC18C", + ipv6: "IPv6 \uC8FC\uC18C", + cidrv4: "IPv4 \uBC94\uC704", + cidrv6: "IPv6 \uBC94\uC704", + base64: "base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", + base64url: "base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", + json_string: "JSON \uBB38\uC790\uC5F4", + e164: "E.164 \uBC88\uD638", + jwt: "JWT", + template_literal: "\uC785\uB825" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue2.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; + } + return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${stringifyPrimitive(issue2.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`; + return `\uC798\uBABB\uB41C \uC635\uC158: ${joinValues(issue2.values, "\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`; + case "too_big": { + const adj = issue2.inclusive ? "\uC774\uD558" : "\uBBF8\uB9CC"; + const suffix = adj === "\uBBF8\uB9CC" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; + const sizing = getSizing(issue2.origin); + const unit = sizing?.unit ?? "\uC694\uC18C"; + if (sizing) + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()}${unit} ${adj}${suffix}`; + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()} ${adj}${suffix}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\uC774\uC0C1" : "\uCD08\uACFC"; + const suffix = adj === "\uC774\uC0C1" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; + const sizing = getSizing(issue2.origin); + const unit = sizing?.unit ?? "\uC694\uC18C"; + if (sizing) { + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()}${unit} ${adj}${suffix}`; + } + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()} ${adj}${suffix}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`; + } + if (_issue.format === "ends_with") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`; + if (_issue.format === "includes") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`; + if (_issue.format === "regex") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`; + return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue2.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`; + case "unrecognized_keys": + return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\uC798\uBABB\uB41C \uD0A4: ${issue2.origin}`; + case "invalid_union": + return `\uC798\uBABB\uB41C \uC785\uB825`; + case "invalid_element": + return `\uC798\uBABB\uB41C \uAC12: ${issue2.origin}`; + default: + return `\uC798\uBABB\uB41C \uC785\uB825`; + } + }; +}; +function ko_default() { + return { + localeError: error25() + }; +} + +// ../../node_modules/zod/v4/locales/lt.js +var capitalizeFirstCharacter = (text) => { + return text.charAt(0).toUpperCase() + text.slice(1); +}; +function getUnitTypeFromNumber(number4) { + const abs = Math.abs(number4); + const last = abs % 10; + const last2 = abs % 100; + if (last2 >= 11 && last2 <= 19 || last === 0) + return "many"; + if (last === 1) + return "one"; + return "few"; +} +var error26 = () => { + const Sizable = { + string: { + unit: { + one: "simbolis", + few: "simboliai", + many: "simboli\u0173" + }, + verb: { + smaller: { + inclusive: "turi b\u016Bti ne ilgesn\u0117 kaip", + notInclusive: "turi b\u016Bti trumpesn\u0117 kaip" + }, + bigger: { + inclusive: "turi b\u016Bti ne trumpesn\u0117 kaip", + notInclusive: "turi b\u016Bti ilgesn\u0117 kaip" + } + } + }, + file: { + unit: { + one: "baitas", + few: "baitai", + many: "bait\u0173" + }, + verb: { + smaller: { + inclusive: "turi b\u016Bti ne didesnis kaip", + notInclusive: "turi b\u016Bti ma\u017Eesnis kaip" + }, + bigger: { + inclusive: "turi b\u016Bti ne ma\u017Eesnis kaip", + notInclusive: "turi b\u016Bti didesnis kaip" + } + } + }, + array: { + unit: { + one: "element\u0105", + few: "elementus", + many: "element\u0173" + }, + verb: { + smaller: { + inclusive: "turi tur\u0117ti ne daugiau kaip", + notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" + }, + bigger: { + inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", + notInclusive: "turi tur\u0117ti daugiau kaip" + } + } + }, + set: { + unit: { + one: "element\u0105", + few: "elementus", + many: "element\u0173" + }, + verb: { + smaller: { + inclusive: "turi tur\u0117ti ne daugiau kaip", + notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" + }, + bigger: { + inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", + notInclusive: "turi tur\u0117ti daugiau kaip" + } + } + } + }; + function getSizing(origin, unitType, inclusive, targetShouldBe) { + const result = Sizable[origin] ?? null; + if (result === null) + return result; + return { + unit: result.unit[unitType], + verb: result.verb[targetShouldBe][inclusive ? "inclusive" : "notInclusive"] + }; + } + const FormatDictionary = { + regex: "\u012Fvestis", + email: "el. pa\u0161to adresas", + url: "URL", + emoji: "jaustukas", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO data ir laikas", + date: "ISO data", + time: "ISO laikas", + duration: "ISO trukm\u0117", + ipv4: "IPv4 adresas", + ipv6: "IPv6 adresas", + cidrv4: "IPv4 tinklo prefiksas (CIDR)", + cidrv6: "IPv6 tinklo prefiksas (CIDR)", + base64: "base64 u\u017Ekoduota eilut\u0117", + base64url: "base64url u\u017Ekoduota eilut\u0117", + json_string: "JSON eilut\u0117", + e164: "E.164 numeris", + jwt: "JWT", + template_literal: "\u012Fvestis" + }; + const TypeDictionary = { + nan: "NaN", + number: "skai\u010Dius", + bigint: "sveikasis skai\u010Dius", + string: "eilut\u0117", + boolean: "login\u0117 reik\u0161m\u0117", + undefined: "neapibr\u0117\u017Eta reik\u0161m\u0117", + function: "funkcija", + symbol: "simbolis", + array: "masyvas", + object: "objektas", + null: "nulin\u0117 reik\u0161m\u0117" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue2.expected}`; + } + return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Privalo b\u016Bti ${stringifyPrimitive(issue2.values[0])}`; + return `Privalo b\u016Bti vienas i\u0161 ${joinValues(issue2.values, "|")} pasirinkim\u0173`; + case "too_big": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + const sizing = getSizing(issue2.origin, getUnitTypeFromNumber(Number(issue2.maximum)), issue2.inclusive ?? false, "smaller"); + if (sizing?.verb) + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue2.maximum.toString()} ${sizing.unit ?? "element\u0173"}`; + const adj = issue2.inclusive ? "ne didesnis kaip" : "ma\u017Eesnis kaip"; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.maximum.toString()} ${sizing?.unit}`; + } + case "too_small": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + const sizing = getSizing(issue2.origin, getUnitTypeFromNumber(Number(issue2.minimum)), issue2.inclusive ?? false, "bigger"); + if (sizing?.verb) + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue2.minimum.toString()} ${sizing.unit ?? "element\u0173"}`; + const adj = issue2.inclusive ? "ne ma\u017Eesnis kaip" : "didesnis kaip"; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.minimum.toString()} ${sizing?.unit}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Eilut\u0117 privalo prasid\u0117ti "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Eilut\u0117 privalo pasibaigti "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Eilut\u0117 privalo \u012Ftraukti "${_issue.includes}"`; + if (_issue.format === "regex") + return `Eilut\u0117 privalo atitikti ${_issue.pattern}`; + return `Neteisingas ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Skai\u010Dius privalo b\u016Bti ${issue2.divisor} kartotinis.`; + case "unrecognized_keys": + return `Neatpa\u017Eint${issue2.keys.length > 1 ? "i" : "as"} rakt${issue2.keys.length > 1 ? "ai" : "as"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return "Rastas klaidingas raktas"; + case "invalid_union": + return "Klaidinga \u012Fvestis"; + case "invalid_element": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`; + } + default: + return "Klaidinga \u012Fvestis"; + } + }; +}; +function lt_default() { + return { + localeError: error26() + }; +} + +// ../../node_modules/zod/v4/locales/mk.js +var error27 = () => { + const Sizable = { + string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + file: { unit: "\u0431\u0430\u0458\u0442\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + array: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + set: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0432\u043D\u0435\u0441", + email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430", + url: "URL", + emoji: "\u0435\u043C\u043E\u045F\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435", + date: "ISO \u0434\u0430\u0442\u0443\u043C", + time: "ISO \u0432\u0440\u0435\u043C\u0435", + duration: "ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441\u0430", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441\u0430", + cidrv4: "IPv4 \u043E\u043F\u0441\u0435\u0433", + cidrv6: "IPv6 \u043E\u043F\u0441\u0435\u0433", + base64: "base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", + base64url: "base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", + json_string: "JSON \u043D\u0438\u0437\u0430", + e164: "E.164 \u0431\u0440\u043E\u0458", + jwt: "JWT", + template_literal: "\u0432\u043D\u0435\u0441" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0431\u0440\u043E\u0458", + array: "\u043D\u0438\u0437\u0430" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue2.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; + } + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`; + return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`; + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`; + return `Invalid ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438" : "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue2.origin}`; + case "invalid_union": + return "\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"; + case "invalid_element": + return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue2.origin}`; + default: + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`; + } + }; +}; +function mk_default() { + return { + localeError: error27() + }; +} + +// ../../node_modules/zod/v4/locales/ms.js +var error28 = () => { + const Sizable = { + string: { unit: "aksara", verb: "mempunyai" }, + file: { unit: "bait", verb: "mempunyai" }, + array: { unit: "elemen", verb: "mempunyai" }, + set: { unit: "elemen", verb: "mempunyai" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "alamat e-mel", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "tarikh masa ISO", + date: "tarikh ISO", + time: "masa ISO", + duration: "tempoh ISO", + ipv4: "alamat IPv4", + ipv6: "alamat IPv6", + cidrv4: "julat IPv4", + cidrv6: "julat IPv6", + base64: "string dikodkan base64", + base64url: "string dikodkan base64url", + json_string: "string JSON", + e164: "nombor E.164", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "nombor" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input tidak sah: dijangka instanceof ${issue2.expected}, diterima ${received}`; + } + return `Input tidak sah: dijangka ${expected}, diterima ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input tidak sah: dijangka ${stringifyPrimitive(issue2.values[0])}`; + return `Pilihan tidak sah: dijangka salah satu daripada ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Terlalu besar: dijangka ${issue2.origin ?? "nilai"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemen"}`; + return `Terlalu besar: dijangka ${issue2.origin ?? "nilai"} adalah ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Terlalu kecil: dijangka ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Terlalu kecil: dijangka ${issue2.origin} adalah ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `String tidak sah: mesti bermula dengan "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `String tidak sah: mesti berakhir dengan "${_issue.suffix}"`; + if (_issue.format === "includes") + return `String tidak sah: mesti mengandungi "${_issue.includes}"`; + if (_issue.format === "regex") + return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} tidak sah`; + } + case "not_multiple_of": + return `Nombor tidak sah: perlu gandaan ${issue2.divisor}`; + case "unrecognized_keys": + return `Kunci tidak dikenali: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kunci tidak sah dalam ${issue2.origin}`; + case "invalid_union": + return "Input tidak sah"; + case "invalid_element": + return `Nilai tidak sah dalam ${issue2.origin}`; + default: + return `Input tidak sah`; + } + }; +}; +function ms_default() { + return { + localeError: error28() + }; +} + +// ../../node_modules/zod/v4/locales/nl.js +var error29 = () => { + const Sizable = { + string: { unit: "tekens", verb: "heeft" }, + file: { unit: "bytes", verb: "heeft" }, + array: { unit: "elementen", verb: "heeft" }, + set: { unit: "elementen", verb: "heeft" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "invoer", + email: "emailadres", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datum en tijd", + date: "ISO datum", + time: "ISO tijd", + duration: "ISO duur", + ipv4: "IPv4-adres", + ipv6: "IPv6-adres", + cidrv4: "IPv4-bereik", + cidrv6: "IPv6-bereik", + base64: "base64-gecodeerde tekst", + base64url: "base64 URL-gecodeerde tekst", + json_string: "JSON string", + e164: "E.164-nummer", + jwt: "JWT", + template_literal: "invoer" + }; + const TypeDictionary = { + nan: "NaN", + number: "getal" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ongeldige invoer: verwacht instanceof ${issue2.expected}, ontving ${received}`; + } + return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ongeldige invoer: verwacht ${stringifyPrimitive(issue2.values[0])}`; + return `Ongeldige optie: verwacht \xE9\xE9n van ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const longName = issue2.origin === "date" ? "laat" : issue2.origin === "string" ? "lang" : "groot"; + if (sizing) + return `Te ${longName}: verwacht dat ${issue2.origin ?? "waarde"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementen"} ${sizing.verb}`; + return `Te ${longName}: verwacht dat ${issue2.origin ?? "waarde"} ${adj}${issue2.maximum.toString()} is`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const shortName = issue2.origin === "date" ? "vroeg" : issue2.origin === "string" ? "kort" : "klein"; + if (sizing) { + return `Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + } + return `Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} is`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Ongeldige tekst: moet met "${_issue.prefix}" beginnen`; + } + if (_issue.format === "ends_with") + return `Ongeldige tekst: moet op "${_issue.suffix}" eindigen`; + if (_issue.format === "includes") + return `Ongeldige tekst: moet "${_issue.includes}" bevatten`; + if (_issue.format === "regex") + return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`; + return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ongeldig getal: moet een veelvoud van ${issue2.divisor} zijn`; + case "unrecognized_keys": + return `Onbekende key${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ongeldige key in ${issue2.origin}`; + case "invalid_union": + return "Ongeldige invoer"; + case "invalid_element": + return `Ongeldige waarde in ${issue2.origin}`; + default: + return `Ongeldige invoer`; + } + }; +}; +function nl_default() { + return { + localeError: error29() + }; +} + +// ../../node_modules/zod/v4/locales/no.js +var error30 = () => { + const Sizable = { + string: { unit: "tegn", verb: "\xE5 ha" }, + file: { unit: "bytes", verb: "\xE5 ha" }, + array: { unit: "elementer", verb: "\xE5 inneholde" }, + set: { unit: "elementer", verb: "\xE5 inneholde" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "input", + email: "e-postadresse", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dato- og klokkeslett", + date: "ISO-dato", + time: "ISO-klokkeslett", + duration: "ISO-varighet", + ipv4: "IPv4-omr\xE5de", + ipv6: "IPv6-omr\xE5de", + cidrv4: "IPv4-spekter", + cidrv6: "IPv6-spekter", + base64: "base64-enkodet streng", + base64url: "base64url-enkodet streng", + json_string: "JSON-streng", + e164: "E.164-nummer", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "tall", + array: "liste" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ugyldig input: forventet instanceof ${issue2.expected}, fikk ${received}`; + } + return `Ugyldig input: forventet ${expected}, fikk ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ugyldig verdi: forventet ${stringifyPrimitive(issue2.values[0])}`; + return `Ugyldig valg: forventet en av ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `For stor(t): forventet ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementer"}`; + return `For stor(t): forventet ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Ugyldig streng: m\xE5 ende med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ugyldig streng: m\xE5 inneholde "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`; + return `Ugyldig ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ugyldig tall: m\xE5 v\xE6re et multiplum av ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ukjente n\xF8kler" : "Ukjent n\xF8kkel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ugyldig n\xF8kkel i ${issue2.origin}`; + case "invalid_union": + return "Ugyldig input"; + case "invalid_element": + return `Ugyldig verdi i ${issue2.origin}`; + default: + return `Ugyldig input`; + } + }; +}; +function no_default() { + return { + localeError: error30() + }; +} + +// ../../node_modules/zod/v4/locales/ota.js +var error31 = () => { + const Sizable = { + string: { unit: "harf", verb: "olmal\u0131d\u0131r" }, + file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, + array: { unit: "unsur", verb: "olmal\u0131d\u0131r" }, + set: { unit: "unsur", verb: "olmal\u0131d\u0131r" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "giren", + email: "epostag\xE2h", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO heng\xE2m\u0131", + date: "ISO tarihi", + time: "ISO zaman\u0131", + duration: "ISO m\xFCddeti", + ipv4: "IPv4 ni\u015F\xE2n\u0131", + ipv6: "IPv6 ni\u015F\xE2n\u0131", + cidrv4: "IPv4 menzili", + cidrv6: "IPv6 menzili", + base64: "base64-\u015Fifreli metin", + base64url: "base64url-\u015Fifreli metin", + json_string: "JSON metin", + e164: "E.164 say\u0131s\u0131", + jwt: "JWT", + template_literal: "giren" + }; + const TypeDictionary = { + nan: "NaN", + number: "numara", + array: "saf", + null: "gayb" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `F\xE2sit giren: umulan instanceof ${issue2.expected}, al\u0131nan ${received}`; + } + return `F\xE2sit giren: umulan ${expected}, al\u0131nan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `F\xE2sit giren: umulan ${stringifyPrimitive(issue2.values[0])}`; + return `F\xE2sit tercih: m\xFBteberler ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Fazla b\xFCy\xFCk: ${issue2.origin ?? "value"}, ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elements"} sahip olmal\u0131yd\u0131.`; + return `Fazla b\xFCy\xFCk: ${issue2.origin ?? "value"}, ${adj}${issue2.maximum.toString()} olmal\u0131yd\u0131.`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`; + } + return `Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} olmal\u0131yd\u0131.`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `F\xE2sit metin: "${_issue.prefix}" ile ba\u015Flamal\u0131.`; + if (_issue.format === "ends_with") + return `F\xE2sit metin: "${_issue.suffix}" ile bitmeli.`; + if (_issue.format === "includes") + return `F\xE2sit metin: "${_issue.includes}" ihtiv\xE2 etmeli.`; + if (_issue.format === "regex") + return `F\xE2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`; + return `F\xE2sit ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `F\xE2sit say\u0131: ${issue2.divisor} kat\u0131 olmal\u0131yd\u0131.`; + case "unrecognized_keys": + return `Tan\u0131nmayan anahtar ${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} i\xE7in tan\u0131nmayan anahtar var.`; + case "invalid_union": + return "Giren tan\u0131namad\u0131."; + case "invalid_element": + return `${issue2.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`; + default: + return `K\u0131ymet tan\u0131namad\u0131.`; + } + }; +}; +function ota_default() { + return { + localeError: error31() + }; +} + +// ../../node_modules/zod/v4/locales/ps.js +var error32 = () => { + const Sizable = { + string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, + file: { unit: "\u0628\u0627\u06CC\u067C\u0633", verb: "\u0648\u0644\u0631\u064A" }, + array: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, + set: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0648\u0631\u0648\u062F\u064A", + email: "\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9", + url: "\u06CC\u0648 \u0622\u0631 \u0627\u0644", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u064A", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A", + date: "\u0646\u06D0\u067C\u0647", + time: "\u0648\u062E\u062A", + duration: "\u0645\u0648\u062F\u0647", + ipv4: "\u062F IPv4 \u067E\u062A\u0647", + ipv6: "\u062F IPv6 \u067E\u062A\u0647", + cidrv4: "\u062F IPv4 \u0633\u0627\u062D\u0647", + cidrv6: "\u062F IPv6 \u0633\u0627\u062D\u0647", + base64: "base64-encoded \u0645\u062A\u0646", + base64url: "base64url-encoded \u0645\u062A\u0646", + json_string: "JSON \u0645\u062A\u0646", + e164: "\u062F E.164 \u0634\u0645\u06D0\u0631\u0647", + jwt: "JWT", + template_literal: "\u0648\u0631\u0648\u062F\u064A" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0639\u062F\u062F", + array: "\u0627\u0631\u06D0" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue2.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; + } + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; + } + case "invalid_value": + if (issue2.values.length === 1) { + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${stringifyPrimitive(issue2.values[0])} \u0648\u0627\u06CC`; + } + return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${joinValues(issue2.values, "|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`; + } + return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0648\u064A`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`; + } + return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0648\u064A`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`; + } + if (_issue.format === "ends_with") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`; + } + if (_issue.format === "includes") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${_issue.includes}" \u0648\u0644\u0631\u064A`; + } + if (_issue.format === "regex") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`; + } + return `${FormatDictionary[_issue.format] ?? issue2.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`; + } + case "not_multiple_of": + return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue2.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`; + case "unrecognized_keys": + return `\u0646\u0627\u0633\u0645 ${issue2.keys.length > 1 ? "\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647" : "\u06A9\u0644\u06CC\u0689"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`; + case "invalid_union": + return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; + case "invalid_element": + return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`; + default: + return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; + } + }; +}; +function ps_default() { + return { + localeError: error32() + }; +} + +// ../../node_modules/zod/v4/locales/pl.js +var error33 = () => { + const Sizable = { + string: { unit: "znak\xF3w", verb: "mie\u0107" }, + file: { unit: "bajt\xF3w", verb: "mie\u0107" }, + array: { unit: "element\xF3w", verb: "mie\u0107" }, + set: { unit: "element\xF3w", verb: "mie\u0107" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "wyra\u017Cenie", + email: "adres email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data i godzina w formacie ISO", + date: "data w formacie ISO", + time: "godzina w formacie ISO", + duration: "czas trwania ISO", + ipv4: "adres IPv4", + ipv6: "adres IPv6", + cidrv4: "zakres IPv4", + cidrv6: "zakres IPv6", + base64: "ci\u0105g znak\xF3w zakodowany w formacie base64", + base64url: "ci\u0105g znak\xF3w zakodowany w formacie base64url", + json_string: "ci\u0105g znak\xF3w w formacie JSON", + e164: "liczba E.164", + jwt: "JWT", + template_literal: "wej\u015Bcie" + }; + const TypeDictionary = { + nan: "NaN", + number: "liczba", + array: "tablica" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue2.expected}, otrzymano ${received}`; + } + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${stringifyPrimitive(issue2.values[0])}`; + return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element\xF3w"}`; + } + return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.minimum.toString()} ${sizing.unit ?? "element\xF3w"}`; + } + return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${_issue.includes}"`; + if (_issue.format === "regex") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`; + return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue2.divisor}`; + case "unrecognized_keys": + return `Nierozpoznane klucze${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Nieprawid\u0142owy klucz w ${issue2.origin}`; + case "invalid_union": + return "Nieprawid\u0142owe dane wej\u015Bciowe"; + case "invalid_element": + return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue2.origin}`; + default: + return `Nieprawid\u0142owe dane wej\u015Bciowe`; + } + }; +}; +function pl_default() { + return { + localeError: error33() + }; +} + +// ../../node_modules/zod/v4/locales/pt.js +var error34 = () => { + const Sizable = { + string: { unit: "caracteres", verb: "ter" }, + file: { unit: "bytes", verb: "ter" }, + array: { unit: "itens", verb: "ter" }, + set: { unit: "itens", verb: "ter" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "padr\xE3o", + email: "endere\xE7o de e-mail", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data e hora ISO", + date: "data ISO", + time: "hora ISO", + duration: "dura\xE7\xE3o ISO", + ipv4: "endere\xE7o IPv4", + ipv6: "endere\xE7o IPv6", + cidrv4: "faixa de IPv4", + cidrv6: "faixa de IPv6", + base64: "texto codificado em base64", + base64url: "URL codificada em base64", + json_string: "texto JSON", + e164: "n\xFAmero E.164", + jwt: "JWT", + template_literal: "entrada" + }; + const TypeDictionary = { + nan: "NaN", + number: "n\xFAmero", + null: "nulo" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Tipo inv\xE1lido: esperado instanceof ${issue2.expected}, recebido ${received}`; + } + return `Tipo inv\xE1lido: esperado ${expected}, recebido ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entrada inv\xE1lida: esperado ${stringifyPrimitive(issue2.values[0])}`; + return `Op\xE7\xE3o inv\xE1lida: esperada uma das ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Muito grande: esperado que ${issue2.origin ?? "valor"} tivesse ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementos"}`; + return `Muito grande: esperado que ${issue2.origin ?? "valor"} fosse ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Muito pequeno: esperado que ${issue2.origin} tivesse ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Muito pequeno: esperado que ${issue2.origin} fosse ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Texto inv\xE1lido: deve come\xE7ar com "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Texto inv\xE1lido: deve terminar com "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Texto inv\xE1lido: deve incluir "${_issue.includes}"`; + if (_issue.format === "regex") + return `Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} inv\xE1lido`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue2.divisor}`; + case "unrecognized_keys": + return `Chave${issue2.keys.length > 1 ? "s" : ""} desconhecida${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Chave inv\xE1lida em ${issue2.origin}`; + case "invalid_union": + return "Entrada inv\xE1lida"; + case "invalid_element": + return `Valor inv\xE1lido em ${issue2.origin}`; + default: + return `Campo inv\xE1lido`; + } + }; +}; +function pt_default() { + return { + localeError: error34() + }; +} + +// ../../node_modules/zod/v4/locales/ru.js +function getRussianPlural(count, one, few, many) { + const absCount = Math.abs(count); + const lastDigit = absCount % 10; + const lastTwoDigits = absCount % 100; + if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { + return many; + } + if (lastDigit === 1) { + return one; + } + if (lastDigit >= 2 && lastDigit <= 4) { + return few; + } + return many; +} +var error35 = () => { + const Sizable = { + string: { + unit: { + one: "\u0441\u0438\u043C\u0432\u043E\u043B", + few: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", + many: "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + file: { + unit: { + one: "\u0431\u0430\u0439\u0442", + few: "\u0431\u0430\u0439\u0442\u0430", + many: "\u0431\u0430\u0439\u0442" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + array: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + set: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0432\u0432\u043E\u0434", + email: "email \u0430\u0434\u0440\u0435\u0441", + url: "URL", + emoji: "\u044D\u043C\u043E\u0434\u0437\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0432\u0440\u0435\u043C\u044F", + duration: "ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", + cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + base64: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64", + base64url: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url", + json_string: "JSON \u0441\u0442\u0440\u043E\u043A\u0430", + e164: "\u043D\u043E\u043C\u0435\u0440 E.164", + jwt: "JWT", + template_literal: "\u0432\u0432\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; + } + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue2.keys.length > 1 ? "\u044B\u0435" : "\u044B\u0439"} \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u0438" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"; + case "invalid_element": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue2.origin}`; + default: + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`; + } + }; +}; +function ru_default() { + return { + localeError: error35() + }; +} + +// ../../node_modules/zod/v4/locales/sl.js +var error36 = () => { + const Sizable = { + string: { unit: "znakov", verb: "imeti" }, + file: { unit: "bajtov", verb: "imeti" }, + array: { unit: "elementov", verb: "imeti" }, + set: { unit: "elementov", verb: "imeti" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "vnos", + email: "e-po\u0161tni naslov", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datum in \u010Das", + date: "ISO datum", + time: "ISO \u010Das", + duration: "ISO trajanje", + ipv4: "IPv4 naslov", + ipv6: "IPv6 naslov", + cidrv4: "obseg IPv4", + cidrv6: "obseg IPv6", + base64: "base64 kodiran niz", + base64url: "base64url kodiran niz", + json_string: "JSON niz", + e164: "E.164 \u0161tevilka", + jwt: "JWT", + template_literal: "vnos" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0161tevilo", + array: "tabela" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue2.expected}, prejeto ${received}`; + } + return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neveljaven vnos: pri\u010Dakovano ${stringifyPrimitive(issue2.values[0])}`; + return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Preveliko: pri\u010Dakovano, da bo ${issue2.origin ?? "vrednost"} imelo ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementov"}`; + return `Preveliko: pri\u010Dakovano, da bo ${issue2.origin ?? "vrednost"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Premajhno: pri\u010Dakovano, da bo ${issue2.origin} imelo ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Premajhno: pri\u010Dakovano, da bo ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Neveljaven niz: mora se za\u010Deti z "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Neveljaven niz: mora se kon\u010Dati z "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neveljaven niz: mora vsebovati "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`; + return `Neveljaven ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue2.divisor}`; + case "unrecognized_keys": + return `Neprepoznan${issue2.keys.length > 1 ? "i klju\u010Di" : " klju\u010D"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neveljaven klju\u010D v ${issue2.origin}`; + case "invalid_union": + return "Neveljaven vnos"; + case "invalid_element": + return `Neveljavna vrednost v ${issue2.origin}`; + default: + return "Neveljaven vnos"; + } + }; +}; +function sl_default() { + return { + localeError: error36() + }; +} + +// ../../node_modules/zod/v4/locales/sv.js +var error37 = () => { + const Sizable = { + string: { unit: "tecken", verb: "att ha" }, + file: { unit: "bytes", verb: "att ha" }, + array: { unit: "objekt", verb: "att inneh\xE5lla" }, + set: { unit: "objekt", verb: "att inneh\xE5lla" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "regulj\xE4rt uttryck", + email: "e-postadress", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-datum och tid", + date: "ISO-datum", + time: "ISO-tid", + duration: "ISO-varaktighet", + ipv4: "IPv4-intervall", + ipv6: "IPv6-intervall", + cidrv4: "IPv4-spektrum", + cidrv6: "IPv6-spektrum", + base64: "base64-kodad str\xE4ng", + base64url: "base64url-kodad str\xE4ng", + json_string: "JSON-str\xE4ng", + e164: "E.164-nummer", + jwt: "JWT", + template_literal: "mall-literal" + }; + const TypeDictionary = { + nan: "NaN", + number: "antal", + array: "lista" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${issue2.expected}, fick ${received}`; + } + return `Ogiltig inmatning: f\xF6rv\xE4ntat ${expected}, fick ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ogiltig inmatning: f\xF6rv\xE4ntat ${stringifyPrimitive(issue2.values[0])}`; + return `Ogiltigt val: f\xF6rv\xE4ntade en av ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `F\xF6r stor(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + } + return `F\xF6r stor(t): f\xF6rv\xE4ntat ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Ogiltig str\xE4ng: m\xE5ste sluta med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${_issue.pattern}"`; + return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ogiltigt tal: m\xE5ste vara en multipel av ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ok\xE4nda nycklar" : "Ok\xE4nd nyckel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ogiltig nyckel i ${issue2.origin ?? "v\xE4rdet"}`; + case "invalid_union": + return "Ogiltig input"; + case "invalid_element": + return `Ogiltigt v\xE4rde i ${issue2.origin ?? "v\xE4rdet"}`; + default: + return `Ogiltig input`; + } + }; +}; +function sv_default() { + return { + localeError: error37() + }; +} + +// ../../node_modules/zod/v4/locales/ta.js +var error38 = () => { + const Sizable = { + string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + file: { unit: "\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + array: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + set: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1", + email: "\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", + date: "ISO \u0BA4\u0BC7\u0BA4\u0BBF", + time: "ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", + duration: "ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1", + ipv4: "IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + ipv6: "IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + cidrv4: "IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", + cidrv6: "IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", + base64: "base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD", + base64url: "base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD", + json_string: "JSON \u0B9A\u0BB0\u0BAE\u0BCD", + e164: "E.164 \u0B8E\u0BA3\u0BCD", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0B8E\u0BA3\u0BCD", + array: "\u0B85\u0BA3\u0BBF", + null: "\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue2.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; + } + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${joinValues(issue2.values, "|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "ends_with") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "includes") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "regex") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue2.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + case "unrecognized_keys": + return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue2.keys.length > 1 ? "\u0B95\u0BB3\u0BCD" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`; + case "invalid_union": + return "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"; + case "invalid_element": + return `${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`; + default: + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`; + } + }; +}; +function ta_default() { + return { + localeError: error38() + }; +} + +// ../../node_modules/zod/v4/locales/th.js +var error39 = () => { + const Sizable = { + string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + file: { unit: "\u0E44\u0E1A\u0E15\u0E4C", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + array: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + set: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19", + email: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25", + url: "URL", + emoji: "\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + date: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO", + time: "\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + duration: "\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + ipv4: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4", + ipv6: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6", + cidrv4: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4", + cidrv6: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6", + base64: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64", + base64url: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL", + json_string: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON", + e164: "\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)", + jwt: "\u0E42\u0E17\u0E40\u0E04\u0E19 JWT", + template_literal: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02", + array: "\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)", + null: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue2.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; + } + return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19" : "\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`; + return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22" : "\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${_issue.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`; + if (_issue.format === "regex") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`; + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue2.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`; + case "unrecognized_keys": + return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`; + case "invalid_union": + return "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49"; + case "invalid_element": + return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`; + default: + return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`; + } + }; +}; +function th_default() { + return { + localeError: error39() + }; +} + +// ../../node_modules/zod/v4/locales/tr.js +var error40 = () => { + const Sizable = { + string: { unit: "karakter", verb: "olmal\u0131" }, + file: { unit: "bayt", verb: "olmal\u0131" }, + array: { unit: "\xF6\u011Fe", verb: "olmal\u0131" }, + set: { unit: "\xF6\u011Fe", verb: "olmal\u0131" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "girdi", + email: "e-posta adresi", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO tarih ve saat", + date: "ISO tarih", + time: "ISO saat", + duration: "ISO s\xFCre", + ipv4: "IPv4 adresi", + ipv6: "IPv6 adresi", + cidrv4: "IPv4 aral\u0131\u011F\u0131", + cidrv6: "IPv6 aral\u0131\u011F\u0131", + base64: "base64 ile \u015Fifrelenmi\u015F metin", + base64url: "base64url ile \u015Fifrelenmi\u015F metin", + json_string: "JSON dizesi", + e164: "E.164 say\u0131s\u0131", + jwt: "JWT", + template_literal: "\u015Eablon dizesi" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ge\xE7ersiz de\u011Fer: beklenen instanceof ${issue2.expected}, al\u0131nan ${received}`; + } + return `Ge\xE7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ge\xE7ersiz de\u011Fer: beklenen ${stringifyPrimitive(issue2.values[0])}`; + return `Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin ?? "de\u011Fer"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\xF6\u011Fe"}`; + return `\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin ?? "de\u011Fer"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ge\xE7ersiz metin: "${_issue.prefix}" ile ba\u015Flamal\u0131`; + if (_issue.format === "ends_with") + return `Ge\xE7ersiz metin: "${_issue.suffix}" ile bitmeli`; + if (_issue.format === "includes") + return `Ge\xE7ersiz metin: "${_issue.includes}" i\xE7ermeli`; + if (_issue.format === "regex") + return `Ge\xE7ersiz metin: ${_issue.pattern} desenine uymal\u0131`; + return `Ge\xE7ersiz ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ge\xE7ersiz say\u0131: ${issue2.divisor} ile tam b\xF6l\xFCnebilmeli`; + case "unrecognized_keys": + return `Tan\u0131nmayan anahtar${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} i\xE7inde ge\xE7ersiz anahtar`; + case "invalid_union": + return "Ge\xE7ersiz de\u011Fer"; + case "invalid_element": + return `${issue2.origin} i\xE7inde ge\xE7ersiz de\u011Fer`; + default: + return `Ge\xE7ersiz de\u011Fer`; + } + }; +}; +function tr_default() { + return { + localeError: error40() + }; +} + +// ../../node_modules/zod/v4/locales/uk.js +var error41 = () => { + const Sizable = { + string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + file: { unit: "\u0431\u0430\u0439\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456", + email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438", + url: "URL", + emoji: "\u0435\u043C\u043E\u0434\u0437\u0456", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO", + date: "\u0434\u0430\u0442\u0430 ISO", + time: "\u0447\u0430\u0441 ISO", + duration: "\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO", + ipv4: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv4", + ipv6: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv6", + cidrv4: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4", + cidrv6: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6", + base64: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64", + base64url: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url", + json_string: "\u0440\u044F\u0434\u043E\u043A JSON", + e164: "\u043D\u043E\u043C\u0435\u0440 E.164", + jwt: "JWT", + template_literal: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue2.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; + } + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`; + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} \u0431\u0443\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u0456" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"; + case "invalid_element": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue2.origin}`; + default: + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`; + } + }; +}; +function uk_default() { + return { + localeError: error41() + }; +} + +// ../../node_modules/zod/v4/locales/ua.js +function ua_default() { + return uk_default(); +} + +// ../../node_modules/zod/v4/locales/ur.js +var error42 = () => { + const Sizable = { + string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" }, + file: { unit: "\u0628\u0627\u0626\u0679\u0633", verb: "\u06C1\u0648\u0646\u0627" }, + array: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" }, + set: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0627\u0646 \u067E\u0679", + email: "\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633", + url: "\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", + uuid: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + uuidv4: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4", + uuidv6: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6", + nanoid: "\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC", + guid: "\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + cuid: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + cuid2: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2", + ulid: "\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC", + xid: "\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC", + ksuid: "\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + datetime: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645", + date: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E", + time: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A", + duration: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A", + ipv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633", + ipv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633", + cidrv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C", + cidrv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C", + base64: "\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", + base64url: "\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", + json_string: "\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF", + e164: "\u0627\u06CC 164 \u0646\u0645\u0628\u0631", + jwt: "\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC", + template_literal: "\u0627\u0646 \u067E\u0679" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0646\u0645\u0628\u0631", + array: "\u0622\u0631\u06D2", + null: "\u0646\u0644" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue2.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; + } + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${stringifyPrimitive(issue2.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${joinValues(issue2.values, "|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; + return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${adj}${issue2.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u06D2 ${adj}${issue2.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; + } + return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u0627 ${adj}${issue2.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + } + if (_issue.format === "ends_with") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + if (_issue.format === "includes") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + if (_issue.format === "regex") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue2.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + case "unrecognized_keys": + return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue2.keys.length > 1 ? "\u0632" : ""}: ${joinValues(issue2.keys, "\u060C ")}`; + case "invalid_key": + return `${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`; + case "invalid_union": + return "\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"; + case "invalid_element": + return `${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`; + default: + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`; + } + }; +}; +function ur_default() { + return { + localeError: error42() + }; +} + +// ../../node_modules/zod/v4/locales/uz.js +var error43 = () => { + const Sizable = { + string: { unit: "belgi", verb: "bo\u2018lishi kerak" }, + file: { unit: "bayt", verb: "bo\u2018lishi kerak" }, + array: { unit: "element", verb: "bo\u2018lishi kerak" }, + set: { unit: "element", verb: "bo\u2018lishi kerak" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "kirish", + email: "elektron pochta manzili", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO sana va vaqti", + date: "ISO sana", + time: "ISO vaqt", + duration: "ISO davomiylik", + ipv4: "IPv4 manzil", + ipv6: "IPv6 manzil", + mac: "MAC manzil", + cidrv4: "IPv4 diapazon", + cidrv6: "IPv6 diapazon", + base64: "base64 kodlangan satr", + base64url: "base64url kodlangan satr", + json_string: "JSON satr", + e164: "E.164 raqam", + jwt: "JWT", + template_literal: "kirish" + }; + const TypeDictionary = { + nan: "NaN", + number: "raqam", + array: "massiv" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue2.expected}, qabul qilingan ${received}`; + } + return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Noto\u2018g\u2018ri kirish: kutilgan ${stringifyPrimitive(issue2.values[0])}`; + return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Juda katta: kutilgan ${issue2.origin ?? "qiymat"} ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`; + return `Juda katta: kutilgan ${issue2.origin ?? "qiymat"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + } + return `Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Noto\u2018g\u2018ri satr: "${_issue.prefix}" bilan boshlanishi kerak`; + if (_issue.format === "ends_with") + return `Noto\u2018g\u2018ri satr: "${_issue.suffix}" bilan tugashi kerak`; + if (_issue.format === "includes") + return `Noto\u2018g\u2018ri satr: "${_issue.includes}" ni o\u2018z ichiga olishi kerak`; + if (_issue.format === "regex") + return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`; + return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Noto\u2018g\u2018ri raqam: ${issue2.divisor} ning karralisi bo\u2018lishi kerak`; + case "unrecognized_keys": + return `Noma\u2019lum kalit${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} dagi kalit noto\u2018g\u2018ri`; + case "invalid_union": + return "Noto\u2018g\u2018ri kirish"; + case "invalid_element": + return `${issue2.origin} da noto\u2018g\u2018ri qiymat`; + default: + return `Noto\u2018g\u2018ri kirish`; + } + }; +}; +function uz_default() { + return { + localeError: error43() + }; +} + +// ../../node_modules/zod/v4/locales/vi.js +var error44 = () => { + const Sizable = { + string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" }, + file: { unit: "byte", verb: "c\xF3" }, + array: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" }, + set: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u0111\u1EA7u v\xE0o", + email: "\u0111\u1ECBa ch\u1EC9 email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ng\xE0y gi\u1EDD ISO", + date: "ng\xE0y ISO", + time: "gi\u1EDD ISO", + duration: "kho\u1EA3ng th\u1EDDi gian ISO", + ipv4: "\u0111\u1ECBa ch\u1EC9 IPv4", + ipv6: "\u0111\u1ECBa ch\u1EC9 IPv6", + cidrv4: "d\u1EA3i IPv4", + cidrv6: "d\u1EA3i IPv6", + base64: "chu\u1ED7i m\xE3 h\xF3a base64", + base64url: "chu\u1ED7i m\xE3 h\xF3a base64url", + json_string: "chu\u1ED7i JSON", + e164: "s\u1ED1 E.164", + jwt: "JWT", + template_literal: "\u0111\u1EA7u v\xE0o" + }; + const TypeDictionary = { + nan: "NaN", + number: "s\u1ED1", + array: "m\u1EA3ng" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue2.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; + } + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${stringifyPrimitive(issue2.values[0])}`; + return `T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin ?? "gi\xE1 tr\u1ECB"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "ph\u1EA7n t\u1EED"}`; + return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin ?? "gi\xE1 tr\u1ECB"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${_issue.includes}"`; + if (_issue.format === "regex") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} kh\xF4ng h\u1EE3p l\u1EC7`; + } + case "not_multiple_of": + return `S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue2.divisor}`; + case "unrecognized_keys": + return `Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`; + case "invalid_union": + return "\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"; + case "invalid_element": + return `Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`; + default: + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7`; + } + }; +}; +function vi_default() { + return { + localeError: error44() + }; +} + +// ../../node_modules/zod/v4/locales/zh-CN.js +var error45 = () => { + const Sizable = { + string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" }, + file: { unit: "\u5B57\u8282", verb: "\u5305\u542B" }, + array: { unit: "\u9879", verb: "\u5305\u542B" }, + set: { unit: "\u9879", verb: "\u5305\u542B" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u8F93\u5165", + email: "\u7535\u5B50\u90AE\u4EF6", + url: "URL", + emoji: "\u8868\u60C5\u7B26\u53F7", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO\u65E5\u671F\u65F6\u95F4", + date: "ISO\u65E5\u671F", + time: "ISO\u65F6\u95F4", + duration: "ISO\u65F6\u957F", + ipv4: "IPv4\u5730\u5740", + ipv6: "IPv6\u5730\u5740", + cidrv4: "IPv4\u7F51\u6BB5", + cidrv6: "IPv6\u7F51\u6BB5", + base64: "base64\u7F16\u7801\u5B57\u7B26\u4E32", + base64url: "base64url\u7F16\u7801\u5B57\u7B26\u4E32", + json_string: "JSON\u5B57\u7B26\u4E32", + e164: "E.164\u53F7\u7801", + jwt: "JWT", + template_literal: "\u8F93\u5165" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u6570\u5B57", + array: "\u6570\u7EC4", + null: "\u7A7A\u503C(null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue2.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; + } + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${stringifyPrimitive(issue2.values[0])}`; + return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin ?? "\u503C"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u4E2A\u5143\u7D20"}`; + return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin ?? "\u503C"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.prefix}" \u5F00\u5934`; + if (_issue.format === "ends_with") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.suffix}" \u7ED3\u5C3E`; + if (_issue.format === "includes") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`; + return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue2.divisor} \u7684\u500D\u6570`; + case "unrecognized_keys": + return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`; + case "invalid_union": + return "\u65E0\u6548\u8F93\u5165"; + case "invalid_element": + return `${issue2.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`; + default: + return `\u65E0\u6548\u8F93\u5165`; + } + }; +}; +function zh_CN_default() { + return { + localeError: error45() + }; +} + +// ../../node_modules/zod/v4/locales/zh-TW.js +var error46 = () => { + const Sizable = { + string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" }, + file: { unit: "\u4F4D\u5143\u7D44", verb: "\u64C1\u6709" }, + array: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" }, + set: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u8F38\u5165", + email: "\u90F5\u4EF6\u5730\u5740", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u65E5\u671F\u6642\u9593", + date: "ISO \u65E5\u671F", + time: "ISO \u6642\u9593", + duration: "ISO \u671F\u9593", + ipv4: "IPv4 \u4F4D\u5740", + ipv6: "IPv6 \u4F4D\u5740", + cidrv4: "IPv4 \u7BC4\u570D", + cidrv6: "IPv6 \u7BC4\u570D", + base64: "base64 \u7DE8\u78BC\u5B57\u4E32", + base64url: "base64url \u7DE8\u78BC\u5B57\u4E32", + json_string: "JSON \u5B57\u4E32", + e164: "E.164 \u6578\u503C", + jwt: "JWT", + template_literal: "\u8F38\u5165" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue2.expected}\uFF0C\u4F46\u6536\u5230 ${received}`; + } + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${stringifyPrimitive(issue2.values[0])}`; + return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u500B\u5143\u7D20"}`; + return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.prefix}" \u958B\u982D`; + } + if (_issue.format === "ends_with") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.suffix}" \u7D50\u5C3E`; + if (_issue.format === "includes") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`; + return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue2.divisor} \u7684\u500D\u6578`; + case "unrecognized_keys": + return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue2.keys.length > 1 ? "\u5011" : ""}\uFF1A${joinValues(issue2.keys, "\u3001")}`; + case "invalid_key": + return `${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`; + case "invalid_union": + return "\u7121\u6548\u7684\u8F38\u5165\u503C"; + case "invalid_element": + return `${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`; + default: + return `\u7121\u6548\u7684\u8F38\u5165\u503C`; + } + }; +}; +function zh_TW_default() { + return { + localeError: error46() + }; +} + +// ../../node_modules/zod/v4/locales/yo.js +var error47 = () => { + const Sizable = { + string: { unit: "\xE0mi", verb: "n\xED" }, + file: { unit: "bytes", verb: "n\xED" }, + array: { unit: "nkan", verb: "n\xED" }, + set: { unit: "nkan", verb: "n\xED" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const FormatDictionary = { + regex: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9", + email: "\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\xE0k\xF3k\xF2 ISO", + date: "\u1ECDj\u1ECD\u0301 ISO", + time: "\xE0k\xF3k\xF2 ISO", + duration: "\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO", + ipv4: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv4", + ipv6: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv6", + cidrv4: "\xE0gb\xE8gb\xE8 IPv4", + cidrv6: "\xE0gb\xE8gb\xE8 IPv6", + base64: "\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64", + base64url: "\u1ECD\u0300r\u1ECD\u0300 base64url", + json_string: "\u1ECD\u0300r\u1ECD\u0300 JSON", + e164: "n\u1ECD\u0301mb\xE0 E.164", + jwt: "JWT", + template_literal: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9" + }; + const TypeDictionary = { + nan: "NaN", + number: "n\u1ECD\u0301mb\xE0", + array: "akop\u1ECD" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${issue2.expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; + } + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${stringifyPrimitive(issue2.values[0])}`; + return `\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin ?? "iye"} ${sizing.verb} ${adj}${issue2.maximum} ${sizing.unit}`; + return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.maximum}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum} ${sizing.unit}`; + return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.minimum}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`; + return `A\u1E63\xEC\u1E63e: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${issue2.divisor}`; + case "unrecognized_keys": + return `B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`; + case "invalid_union": + return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; + case "invalid_element": + return `Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`; + default: + return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; + } + }; +}; +function yo_default() { + return { + localeError: error47() + }; +} + +// ../../node_modules/zod/v4/core/registries.js +var _a; +var $output = /* @__PURE__ */ Symbol("ZodOutput"); +var $input = /* @__PURE__ */ Symbol("ZodInput"); +var $ZodRegistry = class { + constructor() { + this._map = /* @__PURE__ */ new WeakMap(); + this._idmap = /* @__PURE__ */ new Map(); + } + add(schema, ..._meta) { + const meta3 = _meta[0]; + this._map.set(schema, meta3); + if (meta3 && typeof meta3 === "object" && "id" in meta3) { + this._idmap.set(meta3.id, schema); + } + return this; + } + clear() { + this._map = /* @__PURE__ */ new WeakMap(); + this._idmap = /* @__PURE__ */ new Map(); + return this; + } + remove(schema) { + const meta3 = this._map.get(schema); + if (meta3 && typeof meta3 === "object" && "id" in meta3) { + this._idmap.delete(meta3.id); + } + this._map.delete(schema); + return this; + } + get(schema) { + const p = schema._zod.parent; + if (p) { + const pm = { ...this.get(p) ?? {} }; + delete pm.id; + const f = { ...pm, ...this._map.get(schema) }; + return Object.keys(f).length ? f : void 0; + } + return this._map.get(schema); + } + has(schema) { + return this._map.has(schema); + } +}; +function registry() { + return new $ZodRegistry(); +} +(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry()); +var globalRegistry = globalThis.__zod_globalRegistry; + +// ../../node_modules/zod/v4/core/api.js +// @__NO_SIDE_EFFECTS__ +function _string(Class2, params) { + return new Class2({ + type: "string", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _coercedString(Class2, params) { + return new Class2({ + type: "string", + coerce: true, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _email(Class2, params) { + return new Class2({ + type: "string", + format: "email", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _guid(Class2, params) { + return new Class2({ + type: "string", + format: "guid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uuid(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uuidv4(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v4", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uuidv6(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v6", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uuidv7(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v7", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _url(Class2, params) { + return new Class2({ + type: "string", + format: "url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _emoji2(Class2, params) { + return new Class2({ + type: "string", + format: "emoji", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _nanoid(Class2, params) { + return new Class2({ + type: "string", + format: "nanoid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _cuid(Class2, params) { + return new Class2({ + type: "string", + format: "cuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _cuid2(Class2, params) { + return new Class2({ + type: "string", + format: "cuid2", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _ulid(Class2, params) { + return new Class2({ + type: "string", + format: "ulid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _xid(Class2, params) { + return new Class2({ + type: "string", + format: "xid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _ksuid(Class2, params) { + return new Class2({ + type: "string", + format: "ksuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _ipv4(Class2, params) { + return new Class2({ + type: "string", + format: "ipv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _ipv6(Class2, params) { + return new Class2({ + type: "string", + format: "ipv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _mac(Class2, params) { + return new Class2({ + type: "string", + format: "mac", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _cidrv4(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _cidrv6(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _base64(Class2, params) { + return new Class2({ + type: "string", + format: "base64", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _base64url(Class2, params) { + return new Class2({ + type: "string", + format: "base64url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _e164(Class2, params) { + return new Class2({ + type: "string", + format: "e164", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _jwt(Class2, params) { + return new Class2({ + type: "string", + format: "jwt", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +var TimePrecision = { + Any: null, + Minute: -1, + Second: 0, + Millisecond: 3, + Microsecond: 6 +}; +// @__NO_SIDE_EFFECTS__ +function _isoDateTime(Class2, params) { + return new Class2({ + type: "string", + format: "datetime", + check: "string_format", + offset: false, + local: false, + precision: null, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _isoDate(Class2, params) { + return new Class2({ + type: "string", + format: "date", + check: "string_format", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _isoTime(Class2, params) { + return new Class2({ + type: "string", + format: "time", + check: "string_format", + precision: null, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _isoDuration(Class2, params) { + return new Class2({ + type: "string", + format: "duration", + check: "string_format", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _number(Class2, params) { + return new Class2({ + type: "number", + checks: [], + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _coercedNumber(Class2, params) { + return new Class2({ + type: "number", + coerce: true, + checks: [], + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _int(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "safeint", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _float32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "float32", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _float64(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "float64", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _int32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "int32", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uint32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "uint32", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _boolean(Class2, params) { + return new Class2({ + type: "boolean", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _coercedBoolean(Class2, params) { + return new Class2({ + type: "boolean", + coerce: true, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _bigint(Class2, params) { + return new Class2({ + type: "bigint", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _coercedBigint(Class2, params) { + return new Class2({ + type: "bigint", + coerce: true, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _int64(Class2, params) { + return new Class2({ + type: "bigint", + check: "bigint_format", + abort: false, + format: "int64", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uint64(Class2, params) { + return new Class2({ + type: "bigint", + check: "bigint_format", + abort: false, + format: "uint64", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _symbol(Class2, params) { + return new Class2({ + type: "symbol", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _undefined2(Class2, params) { + return new Class2({ + type: "undefined", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _null2(Class2, params) { + return new Class2({ + type: "null", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _any(Class2) { + return new Class2({ + type: "any" + }); +} +// @__NO_SIDE_EFFECTS__ +function _unknown(Class2) { + return new Class2({ + type: "unknown" + }); +} +// @__NO_SIDE_EFFECTS__ +function _never(Class2, params) { + return new Class2({ + type: "never", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _void(Class2, params) { + return new Class2({ + type: "void", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _date(Class2, params) { + return new Class2({ + type: "date", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _coercedDate(Class2, params) { + return new Class2({ + type: "date", + coerce: true, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _nan(Class2, params) { + return new Class2({ + type: "nan", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _lt(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +// @__NO_SIDE_EFFECTS__ +function _lte(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +// @__NO_SIDE_EFFECTS__ +function _gt(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +// @__NO_SIDE_EFFECTS__ +function _gte(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +// @__NO_SIDE_EFFECTS__ +function _positive(params) { + return /* @__PURE__ */ _gt(0, params); +} +// @__NO_SIDE_EFFECTS__ +function _negative(params) { + return /* @__PURE__ */ _lt(0, params); +} +// @__NO_SIDE_EFFECTS__ +function _nonpositive(params) { + return /* @__PURE__ */ _lte(0, params); +} +// @__NO_SIDE_EFFECTS__ +function _nonnegative(params) { + return /* @__PURE__ */ _gte(0, params); +} +// @__NO_SIDE_EFFECTS__ +function _multipleOf(value, params) { + return new $ZodCheckMultipleOf({ + check: "multiple_of", + ...normalizeParams(params), + value + }); +} +// @__NO_SIDE_EFFECTS__ +function _maxSize(maximum, params) { + return new $ZodCheckMaxSize({ + check: "max_size", + ...normalizeParams(params), + maximum + }); +} +// @__NO_SIDE_EFFECTS__ +function _minSize(minimum, params) { + return new $ZodCheckMinSize({ + check: "min_size", + ...normalizeParams(params), + minimum + }); +} +// @__NO_SIDE_EFFECTS__ +function _size(size, params) { + return new $ZodCheckSizeEquals({ + check: "size_equals", + ...normalizeParams(params), + size + }); +} +// @__NO_SIDE_EFFECTS__ +function _maxLength(maximum, params) { + const ch = new $ZodCheckMaxLength({ + check: "max_length", + ...normalizeParams(params), + maximum + }); + return ch; +} +// @__NO_SIDE_EFFECTS__ +function _minLength(minimum, params) { + return new $ZodCheckMinLength({ + check: "min_length", + ...normalizeParams(params), + minimum + }); +} +// @__NO_SIDE_EFFECTS__ +function _length(length, params) { + return new $ZodCheckLengthEquals({ + check: "length_equals", + ...normalizeParams(params), + length + }); +} +// @__NO_SIDE_EFFECTS__ +function _regex(pattern, params) { + return new $ZodCheckRegex({ + check: "string_format", + format: "regex", + ...normalizeParams(params), + pattern + }); +} +// @__NO_SIDE_EFFECTS__ +function _lowercase(params) { + return new $ZodCheckLowerCase({ + check: "string_format", + format: "lowercase", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _uppercase(params) { + return new $ZodCheckUpperCase({ + check: "string_format", + format: "uppercase", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _includes(includes, params) { + return new $ZodCheckIncludes({ + check: "string_format", + format: "includes", + ...normalizeParams(params), + includes + }); +} +// @__NO_SIDE_EFFECTS__ +function _startsWith(prefix, params) { + return new $ZodCheckStartsWith({ + check: "string_format", + format: "starts_with", + ...normalizeParams(params), + prefix + }); +} +// @__NO_SIDE_EFFECTS__ +function _endsWith(suffix, params) { + return new $ZodCheckEndsWith({ + check: "string_format", + format: "ends_with", + ...normalizeParams(params), + suffix + }); +} +// @__NO_SIDE_EFFECTS__ +function _property(property, schema, params) { + return new $ZodCheckProperty({ + check: "property", + property, + schema, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _mime(types, params) { + return new $ZodCheckMimeType({ + check: "mime_type", + mime: types, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _overwrite(tx) { + return new $ZodCheckOverwrite({ + check: "overwrite", + tx + }); +} +// @__NO_SIDE_EFFECTS__ +function _normalize(form) { + return /* @__PURE__ */ _overwrite((input) => input.normalize(form)); +} +// @__NO_SIDE_EFFECTS__ +function _trim() { + return /* @__PURE__ */ _overwrite((input) => input.trim()); +} +// @__NO_SIDE_EFFECTS__ +function _toLowerCase() { + return /* @__PURE__ */ _overwrite((input) => input.toLowerCase()); +} +// @__NO_SIDE_EFFECTS__ +function _toUpperCase() { + return /* @__PURE__ */ _overwrite((input) => input.toUpperCase()); +} +// @__NO_SIDE_EFFECTS__ +function _slugify() { + return /* @__PURE__ */ _overwrite((input) => slugify(input)); +} +// @__NO_SIDE_EFFECTS__ +function _array(Class2, element, params) { + return new Class2({ + type: "array", + element, + // get element() { + // return element; + // }, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _union(Class2, options, params) { + return new Class2({ + type: "union", + options, + ...normalizeParams(params) + }); +} +function _xor(Class2, options, params) { + return new Class2({ + type: "union", + options, + inclusive: false, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _discriminatedUnion(Class2, discriminator, options, params) { + return new Class2({ + type: "union", + options, + discriminator, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _intersection(Class2, left, right) { + return new Class2({ + type: "intersection", + left, + right + }); +} +// @__NO_SIDE_EFFECTS__ +function _tuple(Class2, items, _paramsOrRest, _params) { + const hasRest = _paramsOrRest instanceof $ZodType; + const params = hasRest ? _params : _paramsOrRest; + const rest = hasRest ? _paramsOrRest : null; + return new Class2({ + type: "tuple", + items, + rest, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _record(Class2, keyType, valueType, params) { + return new Class2({ + type: "record", + keyType, + valueType, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _map(Class2, keyType, valueType, params) { + return new Class2({ + type: "map", + keyType, + valueType, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _set(Class2, valueType, params) { + return new Class2({ + type: "set", + valueType, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _enum(Class2, values, params) { + const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + return new Class2({ + type: "enum", + entries, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _nativeEnum(Class2, entries, params) { + return new Class2({ + type: "enum", + entries, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _literal(Class2, value, params) { + return new Class2({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _file(Class2, params) { + return new Class2({ + type: "file", + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _transform(Class2, fn) { + return new Class2({ + type: "transform", + transform: fn + }); +} +// @__NO_SIDE_EFFECTS__ +function _optional(Class2, innerType) { + return new Class2({ + type: "optional", + innerType + }); +} +// @__NO_SIDE_EFFECTS__ +function _nullable(Class2, innerType) { + return new Class2({ + type: "nullable", + innerType + }); +} +// @__NO_SIDE_EFFECTS__ +function _default(Class2, innerType, defaultValue) { + return new Class2({ + type: "default", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : shallowClone(defaultValue); + } + }); +} +// @__NO_SIDE_EFFECTS__ +function _nonoptional(Class2, innerType, params) { + return new Class2({ + type: "nonoptional", + innerType, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _success(Class2, innerType) { + return new Class2({ + type: "success", + innerType + }); +} +// @__NO_SIDE_EFFECTS__ +function _catch(Class2, innerType, catchValue) { + return new Class2({ + type: "catch", + innerType, + catchValue: typeof catchValue === "function" ? catchValue : () => catchValue + }); +} +// @__NO_SIDE_EFFECTS__ +function _pipe(Class2, in_, out) { + return new Class2({ + type: "pipe", + in: in_, + out + }); +} +// @__NO_SIDE_EFFECTS__ +function _readonly(Class2, innerType) { + return new Class2({ + type: "readonly", + innerType + }); +} +// @__NO_SIDE_EFFECTS__ +function _templateLiteral(Class2, parts, params) { + return new Class2({ + type: "template_literal", + parts, + ...normalizeParams(params) + }); +} +// @__NO_SIDE_EFFECTS__ +function _lazy(Class2, getter) { + return new Class2({ + type: "lazy", + getter + }); +} +// @__NO_SIDE_EFFECTS__ +function _promise(Class2, innerType) { + return new Class2({ + type: "promise", + innerType + }); +} +// @__NO_SIDE_EFFECTS__ +function _custom(Class2, fn, _params) { + const norm = normalizeParams(_params); + norm.abort ?? (norm.abort = true); + const schema = new Class2({ + type: "custom", + check: "custom", + fn, + ...norm + }); + return schema; +} +// @__NO_SIDE_EFFECTS__ +function _refine(Class2, fn, _params) { + const schema = new Class2({ + type: "custom", + check: "custom", + fn, + ...normalizeParams(_params) + }); + return schema; +} +// @__NO_SIDE_EFFECTS__ +function _superRefine(fn) { + const ch = /* @__PURE__ */ _check((payload) => { + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(issue(issue2, payload.value, ch._zod.def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + _issue.input ?? (_issue.input = payload.value); + _issue.inst ?? (_issue.inst = ch); + _issue.continue ?? (_issue.continue = !ch._zod.def.abort); + payload.issues.push(issue(_issue)); + } + }; + return fn(payload.value, payload); + }); + return ch; +} +// @__NO_SIDE_EFFECTS__ +function _check(fn, params) { + const ch = new $ZodCheck({ + check: "custom", + ...normalizeParams(params) + }); + ch._zod.check = fn; + return ch; +} +// @__NO_SIDE_EFFECTS__ +function describe(description) { + const ch = new $ZodCheck({ check: "describe" }); + ch._zod.onattach = [ + (inst) => { + const existing = globalRegistry.get(inst) ?? {}; + globalRegistry.add(inst, { ...existing, description }); + } + ]; + ch._zod.check = () => { + }; + return ch; +} +// @__NO_SIDE_EFFECTS__ +function meta(metadata) { + const ch = new $ZodCheck({ check: "meta" }); + ch._zod.onattach = [ + (inst) => { + const existing = globalRegistry.get(inst) ?? {}; + globalRegistry.add(inst, { ...existing, ...metadata }); + } + ]; + ch._zod.check = () => { + }; + return ch; +} +// @__NO_SIDE_EFFECTS__ +function _stringbool(Classes, _params) { + const params = normalizeParams(_params); + let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"]; + let falsyArray = params.falsy ?? ["false", "0", "no", "off", "n", "disabled"]; + if (params.case !== "sensitive") { + truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); + falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); + } + const truthySet = new Set(truthyArray); + const falsySet = new Set(falsyArray); + const _Codec = Classes.Codec ?? $ZodCodec; + const _Boolean = Classes.Boolean ?? $ZodBoolean; + const _String = Classes.String ?? $ZodString; + const stringSchema = new _String({ type: "string", error: params.error }); + const booleanSchema = new _Boolean({ type: "boolean", error: params.error }); + const codec2 = new _Codec({ + type: "pipe", + in: stringSchema, + out: booleanSchema, + transform: ((input, payload) => { + let data = input; + if (params.case !== "sensitive") + data = data.toLowerCase(); + if (truthySet.has(data)) { + return true; + } else if (falsySet.has(data)) { + return false; + } else { + payload.issues.push({ + code: "invalid_value", + expected: "stringbool", + values: [...truthySet, ...falsySet], + input: payload.value, + inst: codec2, + continue: false + }); + return {}; + } + }), + reverseTransform: ((input, _payload) => { + if (input === true) { + return truthyArray[0] || "true"; + } else { + return falsyArray[0] || "false"; + } + }), + error: params.error + }); + return codec2; +} +// @__NO_SIDE_EFFECTS__ +function _stringFormat(Class2, format, fnOrRegex, _params = {}) { + const params = normalizeParams(_params); + const def = { + ...normalizeParams(_params), + check: "string_format", + type: "string", + format, + fn: typeof fnOrRegex === "function" ? fnOrRegex : (val) => fnOrRegex.test(val), + ...params + }; + if (fnOrRegex instanceof RegExp) { + def.pattern = fnOrRegex; + } + const inst = new Class2(def); + return inst; +} + +// ../../node_modules/zod/v4/core/to-json-schema.js +function initializeContext(params) { + let target = params?.target ?? "draft-2020-12"; + if (target === "draft-4") + target = "draft-04"; + if (target === "draft-7") + target = "draft-07"; + return { + processors: params.processors ?? {}, + metadataRegistry: params?.metadata ?? globalRegistry, + target, + unrepresentable: params?.unrepresentable ?? "throw", + override: params?.override ?? (() => { + }), + io: params?.io ?? "output", + counter: 0, + seen: /* @__PURE__ */ new Map(), + cycles: params?.cycles ?? "ref", + reused: params?.reused ?? "inline", + external: params?.external ?? void 0 + }; +} +function process(schema, ctx, _params = { path: [], schemaPath: [] }) { + var _a2; + const def = schema._zod.def; + const seen = ctx.seen.get(schema); + if (seen) { + seen.count++; + const isCycle = _params.schemaPath.includes(schema); + if (isCycle) { + seen.cycle = _params.path; + } + return seen.schema; + } + const result = { schema: {}, count: 1, cycle: void 0, path: _params.path }; + ctx.seen.set(schema, result); + const overrideSchema = schema._zod.toJSONSchema?.(); + if (overrideSchema) { + result.schema = overrideSchema; + } else { + const params = { + ..._params, + schemaPath: [..._params.schemaPath, schema], + path: _params.path + }; + if (schema._zod.processJSONSchema) { + schema._zod.processJSONSchema(ctx, result.schema, params); + } else { + const _json = result.schema; + const processor = ctx.processors[def.type]; + if (!processor) { + throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`); + } + processor(schema, ctx, _json, params); + } + const parent = schema._zod.parent; + if (parent) { + if (!result.ref) + result.ref = parent; + process(parent, ctx, params); + ctx.seen.get(parent).isParent = true; + } + } + const meta3 = ctx.metadataRegistry.get(schema); + if (meta3) + Object.assign(result.schema, meta3); + if (ctx.io === "input" && isTransforming(schema)) { + delete result.schema.examples; + delete result.schema.default; + } + if (ctx.io === "input" && result.schema._prefault) + (_a2 = result.schema).default ?? (_a2.default = result.schema._prefault); + delete result.schema._prefault; + const _result = ctx.seen.get(schema); + return _result.schema; +} +function extractDefs(ctx, schema) { + const root = ctx.seen.get(schema); + if (!root) + throw new Error("Unprocessed schema. This is a bug in Zod."); + const idToSchema = /* @__PURE__ */ new Map(); + for (const entry of ctx.seen.entries()) { + const id = ctx.metadataRegistry.get(entry[0])?.id; + if (id) { + const existing = idToSchema.get(id); + if (existing && existing !== entry[0]) { + throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`); + } + idToSchema.set(id, entry[0]); + } + } + const makeURI = (entry) => { + const defsSegment = ctx.target === "draft-2020-12" ? "$defs" : "definitions"; + if (ctx.external) { + const externalId = ctx.external.registry.get(entry[0])?.id; + const uriGenerator = ctx.external.uri ?? ((id2) => id2); + if (externalId) { + return { ref: uriGenerator(externalId) }; + } + const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`; + entry[1].defId = id; + return { defId: id, ref: `${uriGenerator("__shared")}#/${defsSegment}/${id}` }; + } + if (entry[1] === root) { + return { ref: "#" }; + } + const uriPrefix = `#`; + const defUriPrefix = `${uriPrefix}/${defsSegment}/`; + const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`; + return { defId, ref: defUriPrefix + defId }; + }; + const extractToDef = (entry) => { + if (entry[1].schema.$ref) { + return; + } + const seen = entry[1]; + const { ref, defId } = makeURI(entry); + seen.def = { ...seen.schema }; + if (defId) + seen.defId = defId; + const schema2 = seen.schema; + for (const key in schema2) { + delete schema2[key]; + } + schema2.$ref = ref; + }; + if (ctx.cycles === "throw") { + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (seen.cycle) { + throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); + } + } + } + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (schema === entry[0]) { + extractToDef(entry); + continue; + } + if (ctx.external) { + const ext = ctx.external.registry.get(entry[0])?.id; + if (schema !== entry[0] && ext) { + extractToDef(entry); + continue; + } + } + const id = ctx.metadataRegistry.get(entry[0])?.id; + if (id) { + extractToDef(entry); + continue; + } + if (seen.cycle) { + extractToDef(entry); + continue; + } + if (seen.count > 1) { + if (ctx.reused === "ref") { + extractToDef(entry); + continue; + } + } + } +} +function finalize(ctx, schema) { + const root = ctx.seen.get(schema); + if (!root) + throw new Error("Unprocessed schema. This is a bug in Zod."); + const flattenRef = (zodSchema) => { + const seen = ctx.seen.get(zodSchema); + if (seen.ref === null) + return; + const schema2 = seen.def ?? seen.schema; + const _cached = { ...schema2 }; + const ref = seen.ref; + seen.ref = null; + if (ref) { + flattenRef(ref); + const refSeen = ctx.seen.get(ref); + const refSchema = refSeen.schema; + if (refSchema.$ref && (ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0")) { + schema2.allOf = schema2.allOf ?? []; + schema2.allOf.push(refSchema); + } else { + Object.assign(schema2, refSchema); + } + Object.assign(schema2, _cached); + const isParentRef = zodSchema._zod.parent === ref; + if (isParentRef) { + for (const key in schema2) { + if (key === "$ref" || key === "allOf") + continue; + if (!(key in _cached)) { + delete schema2[key]; + } + } + } + if (refSchema.$ref && refSeen.def) { + for (const key in schema2) { + if (key === "$ref" || key === "allOf") + continue; + if (key in refSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(refSeen.def[key])) { + delete schema2[key]; + } + } + } + } + const parent = zodSchema._zod.parent; + if (parent && parent !== ref) { + flattenRef(parent); + const parentSeen = ctx.seen.get(parent); + if (parentSeen?.schema.$ref) { + schema2.$ref = parentSeen.schema.$ref; + if (parentSeen.def) { + for (const key in schema2) { + if (key === "$ref" || key === "allOf") + continue; + if (key in parentSeen.def && JSON.stringify(schema2[key]) === JSON.stringify(parentSeen.def[key])) { + delete schema2[key]; + } + } + } + } + } + ctx.override({ + zodSchema, + jsonSchema: schema2, + path: seen.path ?? [] + }); + }; + for (const entry of [...ctx.seen.entries()].reverse()) { + flattenRef(entry[0]); + } + const result = {}; + if (ctx.target === "draft-2020-12") { + result.$schema = "https://json-schema.org/draft/2020-12/schema"; + } else if (ctx.target === "draft-07") { + result.$schema = "http://json-schema.org/draft-07/schema#"; + } else if (ctx.target === "draft-04") { + result.$schema = "http://json-schema.org/draft-04/schema#"; + } else if (ctx.target === "openapi-3.0") { + } else { + } + if (ctx.external?.uri) { + const id = ctx.external.registry.get(schema)?.id; + if (!id) + throw new Error("Schema is missing an `id` property"); + result.$id = ctx.external.uri(id); + } + Object.assign(result, root.def ?? root.schema); + const defs = ctx.external?.defs ?? {}; + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (seen.def && seen.defId) { + defs[seen.defId] = seen.def; + } + } + if (ctx.external) { + } else { + if (Object.keys(defs).length > 0) { + if (ctx.target === "draft-2020-12") { + result.$defs = defs; + } else { + result.definitions = defs; + } + } + } + try { + const finalized = JSON.parse(JSON.stringify(result)); + Object.defineProperty(finalized, "~standard", { + value: { + ...schema["~standard"], + jsonSchema: { + input: createStandardJSONSchemaMethod(schema, "input", ctx.processors), + output: createStandardJSONSchemaMethod(schema, "output", ctx.processors) + } + }, + enumerable: false, + writable: false + }); + return finalized; + } catch (_err) { + throw new Error("Error converting schema to JSON."); + } +} +function isTransforming(_schema, _ctx) { + const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() }; + if (ctx.seen.has(_schema)) + return false; + ctx.seen.add(_schema); + const def = _schema._zod.def; + if (def.type === "transform") + return true; + if (def.type === "array") + return isTransforming(def.element, ctx); + if (def.type === "set") + return isTransforming(def.valueType, ctx); + if (def.type === "lazy") + return isTransforming(def.getter(), ctx); + if (def.type === "promise" || def.type === "optional" || def.type === "nonoptional" || def.type === "nullable" || def.type === "readonly" || def.type === "default" || def.type === "prefault") { + return isTransforming(def.innerType, ctx); + } + if (def.type === "intersection") { + return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); + } + if (def.type === "record" || def.type === "map") { + return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); + } + if (def.type === "pipe") { + return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); + } + if (def.type === "object") { + for (const key in def.shape) { + if (isTransforming(def.shape[key], ctx)) + return true; + } + return false; + } + if (def.type === "union") { + for (const option of def.options) { + if (isTransforming(option, ctx)) + return true; + } + return false; + } + if (def.type === "tuple") { + for (const item of def.items) { + if (isTransforming(item, ctx)) + return true; + } + if (def.rest && isTransforming(def.rest, ctx)) + return true; + return false; + } + return false; +} +var createToJSONSchemaMethod = (schema, processors = {}) => (params) => { + const ctx = initializeContext({ ...params, processors }); + process(schema, ctx); + extractDefs(ctx, schema); + return finalize(ctx, schema); +}; +var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => { + const { libraryOptions, target } = params ?? {}; + const ctx = initializeContext({ ...libraryOptions ?? {}, target, io, processors }); + process(schema, ctx); + extractDefs(ctx, schema); + return finalize(ctx, schema); +}; + +// ../../node_modules/zod/v4/core/json-schema-processors.js +var formatMap = { + guid: "uuid", + url: "uri", + datetime: "date-time", + json_string: "json-string", + regex: "" + // do not set +}; +var stringProcessor = (schema, ctx, _json, _params) => { + const json2 = _json; + json2.type = "string"; + const { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag; + if (typeof minimum === "number") + json2.minLength = minimum; + if (typeof maximum === "number") + json2.maxLength = maximum; + if (format) { + json2.format = formatMap[format] ?? format; + if (json2.format === "") + delete json2.format; + if (format === "time") { + delete json2.format; + } + } + if (contentEncoding) + json2.contentEncoding = contentEncoding; + if (patterns && patterns.size > 0) { + const regexes = [...patterns]; + if (regexes.length === 1) + json2.pattern = regexes[0].source; + else if (regexes.length > 1) { + json2.allOf = [ + ...regexes.map((regex) => ({ + ...ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0" ? { type: "string" } : {}, + pattern: regex.source + })) + ]; + } + } +}; +var numberProcessor = (schema, ctx, _json, _params) => { + const json2 = _json; + const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag; + if (typeof format === "string" && format.includes("int")) + json2.type = "integer"; + else + json2.type = "number"; + if (typeof exclusiveMinimum === "number") { + if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { + json2.minimum = exclusiveMinimum; + json2.exclusiveMinimum = true; + } else { + json2.exclusiveMinimum = exclusiveMinimum; + } + } + if (typeof minimum === "number") { + json2.minimum = minimum; + if (typeof exclusiveMinimum === "number" && ctx.target !== "draft-04") { + if (exclusiveMinimum >= minimum) + delete json2.minimum; + else + delete json2.exclusiveMinimum; + } + } + if (typeof exclusiveMaximum === "number") { + if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { + json2.maximum = exclusiveMaximum; + json2.exclusiveMaximum = true; + } else { + json2.exclusiveMaximum = exclusiveMaximum; + } + } + if (typeof maximum === "number") { + json2.maximum = maximum; + if (typeof exclusiveMaximum === "number" && ctx.target !== "draft-04") { + if (exclusiveMaximum <= maximum) + delete json2.maximum; + else + delete json2.exclusiveMaximum; + } + } + if (typeof multipleOf === "number") + json2.multipleOf = multipleOf; +}; +var booleanProcessor = (_schema, _ctx, json2, _params) => { + json2.type = "boolean"; +}; +var bigintProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("BigInt cannot be represented in JSON Schema"); + } +}; +var symbolProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Symbols cannot be represented in JSON Schema"); + } +}; +var nullProcessor = (_schema, ctx, json2, _params) => { + if (ctx.target === "openapi-3.0") { + json2.type = "string"; + json2.nullable = true; + json2.enum = [null]; + } else { + json2.type = "null"; + } +}; +var undefinedProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Undefined cannot be represented in JSON Schema"); + } +}; +var voidProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Void cannot be represented in JSON Schema"); + } +}; +var neverProcessor = (_schema, _ctx, json2, _params) => { + json2.not = {}; +}; +var anyProcessor = (_schema, _ctx, _json, _params) => { +}; +var unknownProcessor = (_schema, _ctx, _json, _params) => { +}; +var dateProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Date cannot be represented in JSON Schema"); + } +}; +var enumProcessor = (schema, _ctx, json2, _params) => { + const def = schema._zod.def; + const values = getEnumValues(def.entries); + if (values.every((v) => typeof v === "number")) + json2.type = "number"; + if (values.every((v) => typeof v === "string")) + json2.type = "string"; + json2.enum = values; +}; +var literalProcessor = (schema, ctx, json2, _params) => { + const def = schema._zod.def; + const vals = []; + for (const val of def.values) { + if (val === void 0) { + if (ctx.unrepresentable === "throw") { + throw new Error("Literal `undefined` cannot be represented in JSON Schema"); + } else { + } + } else if (typeof val === "bigint") { + if (ctx.unrepresentable === "throw") { + throw new Error("BigInt literals cannot be represented in JSON Schema"); + } else { + vals.push(Number(val)); + } + } else { + vals.push(val); + } + } + if (vals.length === 0) { + } else if (vals.length === 1) { + const val = vals[0]; + json2.type = val === null ? "null" : typeof val; + if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { + json2.enum = [val]; + } else { + json2.const = val; + } + } else { + if (vals.every((v) => typeof v === "number")) + json2.type = "number"; + if (vals.every((v) => typeof v === "string")) + json2.type = "string"; + if (vals.every((v) => typeof v === "boolean")) + json2.type = "boolean"; + if (vals.every((v) => v === null)) + json2.type = "null"; + json2.enum = vals; + } +}; +var nanProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("NaN cannot be represented in JSON Schema"); + } +}; +var templateLiteralProcessor = (schema, _ctx, json2, _params) => { + const _json = json2; + const pattern = schema._zod.pattern; + if (!pattern) + throw new Error("Pattern not found in template literal"); + _json.type = "string"; + _json.pattern = pattern.source; +}; +var fileProcessor = (schema, _ctx, json2, _params) => { + const _json = json2; + const file2 = { + type: "string", + format: "binary", + contentEncoding: "binary" + }; + const { minimum, maximum, mime } = schema._zod.bag; + if (minimum !== void 0) + file2.minLength = minimum; + if (maximum !== void 0) + file2.maxLength = maximum; + if (mime) { + if (mime.length === 1) { + file2.contentMediaType = mime[0]; + Object.assign(_json, file2); + } else { + Object.assign(_json, file2); + _json.anyOf = mime.map((m) => ({ contentMediaType: m })); + } + } else { + Object.assign(_json, file2); + } +}; +var successProcessor = (_schema, _ctx, json2, _params) => { + json2.type = "boolean"; +}; +var customProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Custom types cannot be represented in JSON Schema"); + } +}; +var functionProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Function types cannot be represented in JSON Schema"); + } +}; +var transformProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Transforms cannot be represented in JSON Schema"); + } +}; +var mapProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Map cannot be represented in JSON Schema"); + } +}; +var setProcessor = (_schema, ctx, _json, _params) => { + if (ctx.unrepresentable === "throw") { + throw new Error("Set cannot be represented in JSON Schema"); + } +}; +var arrayProcessor = (schema, ctx, _json, params) => { + const json2 = _json; + const def = schema._zod.def; + const { minimum, maximum } = schema._zod.bag; + if (typeof minimum === "number") + json2.minItems = minimum; + if (typeof maximum === "number") + json2.maxItems = maximum; + json2.type = "array"; + json2.items = process(def.element, ctx, { ...params, path: [...params.path, "items"] }); +}; +var objectProcessor = (schema, ctx, _json, params) => { + const json2 = _json; + const def = schema._zod.def; + json2.type = "object"; + json2.properties = {}; + const shape = def.shape; + for (const key in shape) { + json2.properties[key] = process(shape[key], ctx, { + ...params, + path: [...params.path, "properties", key] + }); + } + const allKeys = new Set(Object.keys(shape)); + const requiredKeys = new Set([...allKeys].filter((key) => { + const v = def.shape[key]._zod; + if (ctx.io === "input") { + return v.optin === void 0; + } else { + return v.optout === void 0; + } + })); + if (requiredKeys.size > 0) { + json2.required = Array.from(requiredKeys); + } + if (def.catchall?._zod.def.type === "never") { + json2.additionalProperties = false; + } else if (!def.catchall) { + if (ctx.io === "output") + json2.additionalProperties = false; + } else if (def.catchall) { + json2.additionalProperties = process(def.catchall, ctx, { + ...params, + path: [...params.path, "additionalProperties"] + }); + } +}; +var unionProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + const isExclusive = def.inclusive === false; + const options = def.options.map((x, i) => process(x, ctx, { + ...params, + path: [...params.path, isExclusive ? "oneOf" : "anyOf", i] + })); + if (isExclusive) { + json2.oneOf = options; + } else { + json2.anyOf = options; + } +}; +var intersectionProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + const a = process(def.left, ctx, { + ...params, + path: [...params.path, "allOf", 0] + }); + const b = process(def.right, ctx, { + ...params, + path: [...params.path, "allOf", 1] + }); + const isSimpleIntersection = (val) => "allOf" in val && Object.keys(val).length === 1; + const allOf = [ + ...isSimpleIntersection(a) ? a.allOf : [a], + ...isSimpleIntersection(b) ? b.allOf : [b] + ]; + json2.allOf = allOf; +}; +var tupleProcessor = (schema, ctx, _json, params) => { + const json2 = _json; + const def = schema._zod.def; + json2.type = "array"; + const prefixPath = ctx.target === "draft-2020-12" ? "prefixItems" : "items"; + const restPath = ctx.target === "draft-2020-12" ? "items" : ctx.target === "openapi-3.0" ? "items" : "additionalItems"; + const prefixItems = def.items.map((x, i) => process(x, ctx, { + ...params, + path: [...params.path, prefixPath, i] + })); + const rest = def.rest ? process(def.rest, ctx, { + ...params, + path: [...params.path, restPath, ...ctx.target === "openapi-3.0" ? [def.items.length] : []] + }) : null; + if (ctx.target === "draft-2020-12") { + json2.prefixItems = prefixItems; + if (rest) { + json2.items = rest; + } + } else if (ctx.target === "openapi-3.0") { + json2.items = { + anyOf: prefixItems + }; + if (rest) { + json2.items.anyOf.push(rest); + } + json2.minItems = prefixItems.length; + if (!rest) { + json2.maxItems = prefixItems.length; + } + } else { + json2.items = prefixItems; + if (rest) { + json2.additionalItems = rest; + } + } + const { minimum, maximum } = schema._zod.bag; + if (typeof minimum === "number") + json2.minItems = minimum; + if (typeof maximum === "number") + json2.maxItems = maximum; +}; +var recordProcessor = (schema, ctx, _json, params) => { + const json2 = _json; + const def = schema._zod.def; + json2.type = "object"; + const keyType = def.keyType; + const keyBag = keyType._zod.bag; + const patterns = keyBag?.patterns; + if (def.mode === "loose" && patterns && patterns.size > 0) { + const valueSchema = process(def.valueType, ctx, { + ...params, + path: [...params.path, "patternProperties", "*"] + }); + json2.patternProperties = {}; + for (const pattern of patterns) { + json2.patternProperties[pattern.source] = valueSchema; + } + } else { + if (ctx.target === "draft-07" || ctx.target === "draft-2020-12") { + json2.propertyNames = process(def.keyType, ctx, { + ...params, + path: [...params.path, "propertyNames"] + }); + } + json2.additionalProperties = process(def.valueType, ctx, { + ...params, + path: [...params.path, "additionalProperties"] + }); + } + const keyValues = keyType._zod.values; + if (keyValues) { + const validKeyValues = [...keyValues].filter((v) => typeof v === "string" || typeof v === "number"); + if (validKeyValues.length > 0) { + json2.required = validKeyValues; + } + } +}; +var nullableProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + const inner = process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + if (ctx.target === "openapi-3.0") { + seen.ref = def.innerType; + json2.nullable = true; + } else { + json2.anyOf = [inner, { type: "null" }]; + } +}; +var nonoptionalProcessor = (schema, ctx, _json, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; +}; +var defaultProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; + json2.default = JSON.parse(JSON.stringify(def.defaultValue)); +}; +var prefaultProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; + if (ctx.io === "input") + json2._prefault = JSON.parse(JSON.stringify(def.defaultValue)); +}; +var catchProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; + let catchValue; + try { + catchValue = def.catchValue(void 0); + } catch { + throw new Error("Dynamic catch values are not supported in JSON Schema"); + } + json2.default = catchValue; +}; +var pipeProcessor = (schema, ctx, _json, params) => { + const def = schema._zod.def; + const innerType = ctx.io === "input" ? def.in._zod.def.type === "transform" ? def.out : def.in : def.out; + process(innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = innerType; +}; +var readonlyProcessor = (schema, ctx, json2, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; + json2.readOnly = true; +}; +var promiseProcessor = (schema, ctx, _json, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; +}; +var optionalProcessor = (schema, ctx, _json, params) => { + const def = schema._zod.def; + process(def.innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = def.innerType; +}; +var lazyProcessor = (schema, ctx, _json, params) => { + const innerType = schema._zod.innerType; + process(innerType, ctx, params); + const seen = ctx.seen.get(schema); + seen.ref = innerType; +}; +var allProcessors = { + string: stringProcessor, + number: numberProcessor, + boolean: booleanProcessor, + bigint: bigintProcessor, + symbol: symbolProcessor, + null: nullProcessor, + undefined: undefinedProcessor, + void: voidProcessor, + never: neverProcessor, + any: anyProcessor, + unknown: unknownProcessor, + date: dateProcessor, + enum: enumProcessor, + literal: literalProcessor, + nan: nanProcessor, + template_literal: templateLiteralProcessor, + file: fileProcessor, + success: successProcessor, + custom: customProcessor, + function: functionProcessor, + transform: transformProcessor, + map: mapProcessor, + set: setProcessor, + array: arrayProcessor, + object: objectProcessor, + union: unionProcessor, + intersection: intersectionProcessor, + tuple: tupleProcessor, + record: recordProcessor, + nullable: nullableProcessor, + nonoptional: nonoptionalProcessor, + default: defaultProcessor, + prefault: prefaultProcessor, + catch: catchProcessor, + pipe: pipeProcessor, + readonly: readonlyProcessor, + promise: promiseProcessor, + optional: optionalProcessor, + lazy: lazyProcessor +}; +function toJSONSchema(input, params) { + if ("_idmap" in input) { + const registry2 = input; + const ctx2 = initializeContext({ ...params, processors: allProcessors }); + const defs = {}; + for (const entry of registry2._idmap.entries()) { + const [_, schema] = entry; + process(schema, ctx2); + } + const schemas = {}; + const external = { + registry: registry2, + uri: params?.uri, + defs + }; + ctx2.external = external; + for (const entry of registry2._idmap.entries()) { + const [key, schema] = entry; + extractDefs(ctx2, schema); + schemas[key] = finalize(ctx2, schema); + } + if (Object.keys(defs).length > 0) { + const defsSegment = ctx2.target === "draft-2020-12" ? "$defs" : "definitions"; + schemas.__shared = { + [defsSegment]: defs + }; + } + return { schemas }; + } + const ctx = initializeContext({ ...params, processors: allProcessors }); + process(input, ctx); + extractDefs(ctx, input); + return finalize(ctx, input); +} + +// ../../node_modules/zod/v4/core/json-schema-generator.js +var JSONSchemaGenerator = class { + /** @deprecated Access via ctx instead */ + get metadataRegistry() { + return this.ctx.metadataRegistry; + } + /** @deprecated Access via ctx instead */ + get target() { + return this.ctx.target; + } + /** @deprecated Access via ctx instead */ + get unrepresentable() { + return this.ctx.unrepresentable; + } + /** @deprecated Access via ctx instead */ + get override() { + return this.ctx.override; + } + /** @deprecated Access via ctx instead */ + get io() { + return this.ctx.io; + } + /** @deprecated Access via ctx instead */ + get counter() { + return this.ctx.counter; + } + set counter(value) { + this.ctx.counter = value; + } + /** @deprecated Access via ctx instead */ + get seen() { + return this.ctx.seen; + } + constructor(params) { + let normalizedTarget = params?.target ?? "draft-2020-12"; + if (normalizedTarget === "draft-4") + normalizedTarget = "draft-04"; + if (normalizedTarget === "draft-7") + normalizedTarget = "draft-07"; + this.ctx = initializeContext({ + processors: allProcessors, + target: normalizedTarget, + ...params?.metadata && { metadata: params.metadata }, + ...params?.unrepresentable && { unrepresentable: params.unrepresentable }, + ...params?.override && { override: params.override }, + ...params?.io && { io: params.io } + }); + } + /** + * Process a schema to prepare it for JSON Schema generation. + * This must be called before emit(). + */ + process(schema, _params = { path: [], schemaPath: [] }) { + return process(schema, this.ctx, _params); + } + /** + * Emit the final JSON Schema after processing. + * Must call process() first. + */ + emit(schema, _params) { + if (_params) { + if (_params.cycles) + this.ctx.cycles = _params.cycles; + if (_params.reused) + this.ctx.reused = _params.reused; + if (_params.external) + this.ctx.external = _params.external; + } + extractDefs(this.ctx, schema); + const result = finalize(this.ctx, schema); + const { "~standard": _, ...plainResult } = result; + return plainResult; + } +}; + +// ../../node_modules/zod/v4/core/json-schema.js +var json_schema_exports = {}; + +// ../../node_modules/zod/v4/classic/schemas.js +var schemas_exports2 = {}; +__export(schemas_exports2, { + ZodAny: () => ZodAny, + ZodArray: () => ZodArray, + ZodBase64: () => ZodBase64, + ZodBase64URL: () => ZodBase64URL, + ZodBigInt: () => ZodBigInt, + ZodBigIntFormat: () => ZodBigIntFormat, + ZodBoolean: () => ZodBoolean, + ZodCIDRv4: () => ZodCIDRv4, + ZodCIDRv6: () => ZodCIDRv6, + ZodCUID: () => ZodCUID, + ZodCUID2: () => ZodCUID2, + ZodCatch: () => ZodCatch, + ZodCodec: () => ZodCodec, + ZodCustom: () => ZodCustom, + ZodCustomStringFormat: () => ZodCustomStringFormat, + ZodDate: () => ZodDate, + ZodDefault: () => ZodDefault, + ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, + ZodE164: () => ZodE164, + ZodEmail: () => ZodEmail, + ZodEmoji: () => ZodEmoji, + ZodEnum: () => ZodEnum, + ZodExactOptional: () => ZodExactOptional, + ZodFile: () => ZodFile, + ZodFunction: () => ZodFunction, + ZodGUID: () => ZodGUID, + ZodIPv4: () => ZodIPv4, + ZodIPv6: () => ZodIPv6, + ZodIntersection: () => ZodIntersection, + ZodJWT: () => ZodJWT, + ZodKSUID: () => ZodKSUID, + ZodLazy: () => ZodLazy, + ZodLiteral: () => ZodLiteral, + ZodMAC: () => ZodMAC, + ZodMap: () => ZodMap, + ZodNaN: () => ZodNaN, + ZodNanoID: () => ZodNanoID, + ZodNever: () => ZodNever, + ZodNonOptional: () => ZodNonOptional, + ZodNull: () => ZodNull, + ZodNullable: () => ZodNullable, + ZodNumber: () => ZodNumber, + ZodNumberFormat: () => ZodNumberFormat, + ZodObject: () => ZodObject, + ZodOptional: () => ZodOptional, + ZodPipe: () => ZodPipe, + ZodPrefault: () => ZodPrefault, + ZodPromise: () => ZodPromise, + ZodReadonly: () => ZodReadonly, + ZodRecord: () => ZodRecord, + ZodSet: () => ZodSet, + ZodString: () => ZodString, + ZodStringFormat: () => ZodStringFormat, + ZodSuccess: () => ZodSuccess, + ZodSymbol: () => ZodSymbol, + ZodTemplateLiteral: () => ZodTemplateLiteral, + ZodTransform: () => ZodTransform, + ZodTuple: () => ZodTuple, + ZodType: () => ZodType, + ZodULID: () => ZodULID, + ZodURL: () => ZodURL, + ZodUUID: () => ZodUUID, + ZodUndefined: () => ZodUndefined, + ZodUnion: () => ZodUnion, + ZodUnknown: () => ZodUnknown, + ZodVoid: () => ZodVoid, + ZodXID: () => ZodXID, + ZodXor: () => ZodXor, + _ZodString: () => _ZodString, + _default: () => _default2, + _function: () => _function, + any: () => any, + array: () => array, + base64: () => base642, + base64url: () => base64url2, + bigint: () => bigint2, + boolean: () => boolean2, + catch: () => _catch2, + check: () => check, + cidrv4: () => cidrv42, + cidrv6: () => cidrv62, + codec: () => codec, + cuid: () => cuid3, + cuid2: () => cuid22, + custom: () => custom, + date: () => date3, + describe: () => describe2, + discriminatedUnion: () => discriminatedUnion, + e164: () => e1642, + email: () => email2, + emoji: () => emoji2, + enum: () => _enum2, + exactOptional: () => exactOptional, + file: () => file, + float32: () => float32, + float64: () => float64, + function: () => _function, + guid: () => guid2, + hash: () => hash, + hex: () => hex2, + hostname: () => hostname2, + httpUrl: () => httpUrl, + instanceof: () => _instanceof, + int: () => int, + int32: () => int32, + int64: () => int64, + intersection: () => intersection, + ipv4: () => ipv42, + ipv6: () => ipv62, + json: () => json, + jwt: () => jwt, + keyof: () => keyof, + ksuid: () => ksuid2, + lazy: () => lazy, + literal: () => literal, + looseObject: () => looseObject, + looseRecord: () => looseRecord, + mac: () => mac2, + map: () => map, + meta: () => meta2, + nan: () => nan, + nanoid: () => nanoid2, + nativeEnum: () => nativeEnum, + never: () => never, + nonoptional: () => nonoptional, + null: () => _null3, + nullable: () => nullable, + nullish: () => nullish2, + number: () => number2, + object: () => object, + optional: () => optional, + partialRecord: () => partialRecord, + pipe: () => pipe, + prefault: () => prefault, + preprocess: () => preprocess, + promise: () => promise, + readonly: () => readonly, + record: () => record, + refine: () => refine, + set: () => set, + strictObject: () => strictObject, + string: () => string2, + stringFormat: () => stringFormat, + stringbool: () => stringbool, + success: () => success, + superRefine: () => superRefine, + symbol: () => symbol, + templateLiteral: () => templateLiteral, + transform: () => transform, + tuple: () => tuple, + uint32: () => uint32, + uint64: () => uint64, + ulid: () => ulid2, + undefined: () => _undefined3, + union: () => union, + unknown: () => unknown, + url: () => url, + uuid: () => uuid2, + uuidv4: () => uuidv4, + uuidv6: () => uuidv6, + uuidv7: () => uuidv7, + void: () => _void2, + xid: () => xid2, + xor: () => xor +}); + +// ../../node_modules/zod/v4/classic/checks.js +var checks_exports2 = {}; +__export(checks_exports2, { + endsWith: () => _endsWith, + gt: () => _gt, + gte: () => _gte, + includes: () => _includes, + length: () => _length, + lowercase: () => _lowercase, + lt: () => _lt, + lte: () => _lte, + maxLength: () => _maxLength, + maxSize: () => _maxSize, + mime: () => _mime, + minLength: () => _minLength, + minSize: () => _minSize, + multipleOf: () => _multipleOf, + negative: () => _negative, + nonnegative: () => _nonnegative, + nonpositive: () => _nonpositive, + normalize: () => _normalize, + overwrite: () => _overwrite, + positive: () => _positive, + property: () => _property, + regex: () => _regex, + size: () => _size, + slugify: () => _slugify, + startsWith: () => _startsWith, + toLowerCase: () => _toLowerCase, + toUpperCase: () => _toUpperCase, + trim: () => _trim, + uppercase: () => _uppercase +}); + +// ../../node_modules/zod/v4/classic/iso.js +var iso_exports = {}; +__export(iso_exports, { + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + date: () => date2, + datetime: () => datetime2, + duration: () => duration2, + time: () => time2 +}); +var ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { + $ZodISODateTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function datetime2(params) { + return _isoDateTime(ZodISODateTime, params); +} +var ZodISODate = /* @__PURE__ */ $constructor("ZodISODate", (inst, def) => { + $ZodISODate.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function date2(params) { + return _isoDate(ZodISODate, params); +} +var ZodISOTime = /* @__PURE__ */ $constructor("ZodISOTime", (inst, def) => { + $ZodISOTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function time2(params) { + return _isoTime(ZodISOTime, params); +} +var ZodISODuration = /* @__PURE__ */ $constructor("ZodISODuration", (inst, def) => { + $ZodISODuration.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function duration2(params) { + return _isoDuration(ZodISODuration, params); +} + +// ../../node_modules/zod/v4/classic/errors.js +var initializer2 = (inst, issues) => { + $ZodError.init(inst, issues); + inst.name = "ZodError"; + Object.defineProperties(inst, { + format: { + value: (mapper) => formatError(inst, mapper) + // enumerable: false, + }, + flatten: { + value: (mapper) => flattenError(inst, mapper) + // enumerable: false, + }, + addIssue: { + value: (issue2) => { + inst.issues.push(issue2); + inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2); + } + // enumerable: false, + }, + addIssues: { + value: (issues2) => { + inst.issues.push(...issues2); + inst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2); + } + // enumerable: false, + }, + isEmpty: { + get() { + return inst.issues.length === 0; + } + // enumerable: false, + } + }); +}; +var ZodError = $constructor("ZodError", initializer2); +var ZodRealError = $constructor("ZodError", initializer2, { + Parent: Error +}); + +// ../../node_modules/zod/v4/classic/parse.js +var parse2 = /* @__PURE__ */ _parse(ZodRealError); +var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError); +var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError); +var safeParseAsync2 = /* @__PURE__ */ _safeParseAsync(ZodRealError); +var encode2 = /* @__PURE__ */ _encode(ZodRealError); +var decode2 = /* @__PURE__ */ _decode(ZodRealError); +var encodeAsync2 = /* @__PURE__ */ _encodeAsync(ZodRealError); +var decodeAsync2 = /* @__PURE__ */ _decodeAsync(ZodRealError); +var safeEncode2 = /* @__PURE__ */ _safeEncode(ZodRealError); +var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError); +var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); +var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); + +// ../../node_modules/zod/v4/classic/schemas.js +var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { + $ZodType.init(inst, def); + Object.assign(inst["~standard"], { + jsonSchema: { + input: createStandardJSONSchemaMethod(inst, "input"), + output: createStandardJSONSchemaMethod(inst, "output") + } + }); + inst.toJSONSchema = createToJSONSchemaMethod(inst, {}); + inst.def = def; + inst.type = def.type; + Object.defineProperty(inst, "_def", { value: def }); + inst.check = (...checks) => { + return inst.clone(util_exports.mergeDefs(def, { + checks: [ + ...def.checks ?? [], + ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) + ] + }), { + parent: true + }); + }; + inst.with = inst.check; + inst.clone = (def2, params) => clone(inst, def2, params); + inst.brand = () => inst; + inst.register = ((reg, meta3) => { + reg.add(inst, meta3); + return inst; + }); + inst.parse = (data, params) => parse2(inst, data, params, { callee: inst.parse }); + inst.safeParse = (data, params) => safeParse2(inst, data, params); + inst.parseAsync = async (data, params) => parseAsync2(inst, data, params, { callee: inst.parseAsync }); + inst.safeParseAsync = async (data, params) => safeParseAsync2(inst, data, params); + inst.spa = inst.safeParseAsync; + inst.encode = (data, params) => encode2(inst, data, params); + inst.decode = (data, params) => decode2(inst, data, params); + inst.encodeAsync = async (data, params) => encodeAsync2(inst, data, params); + inst.decodeAsync = async (data, params) => decodeAsync2(inst, data, params); + inst.safeEncode = (data, params) => safeEncode2(inst, data, params); + inst.safeDecode = (data, params) => safeDecode2(inst, data, params); + inst.safeEncodeAsync = async (data, params) => safeEncodeAsync2(inst, data, params); + inst.safeDecodeAsync = async (data, params) => safeDecodeAsync2(inst, data, params); + inst.refine = (check2, params) => inst.check(refine(check2, params)); + inst.superRefine = (refinement) => inst.check(superRefine(refinement)); + inst.overwrite = (fn) => inst.check(_overwrite(fn)); + inst.optional = () => optional(inst); + inst.exactOptional = () => exactOptional(inst); + inst.nullable = () => nullable(inst); + inst.nullish = () => optional(nullable(inst)); + inst.nonoptional = (params) => nonoptional(inst, params); + inst.array = () => array(inst); + inst.or = (arg) => union([inst, arg]); + inst.and = (arg) => intersection(inst, arg); + inst.transform = (tx) => pipe(inst, transform(tx)); + inst.default = (def2) => _default2(inst, def2); + inst.prefault = (def2) => prefault(inst, def2); + inst.catch = (params) => _catch2(inst, params); + inst.pipe = (target) => pipe(inst, target); + inst.readonly = () => readonly(inst); + inst.describe = (description) => { + const cl = inst.clone(); + globalRegistry.add(cl, { description }); + return cl; + }; + Object.defineProperty(inst, "description", { + get() { + return globalRegistry.get(inst)?.description; + }, + configurable: true + }); + inst.meta = (...args) => { + if (args.length === 0) { + return globalRegistry.get(inst); + } + const cl = inst.clone(); + globalRegistry.add(cl, args[0]); + return cl; + }; + inst.isOptional = () => inst.safeParse(void 0).success; + inst.isNullable = () => inst.safeParse(null).success; + inst.apply = (fn) => fn(inst); + return inst; +}); +var _ZodString = /* @__PURE__ */ $constructor("_ZodString", (inst, def) => { + $ZodString.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => stringProcessor(inst, ctx, json2, params); + const bag = inst._zod.bag; + inst.format = bag.format ?? null; + inst.minLength = bag.minimum ?? null; + inst.maxLength = bag.maximum ?? null; + inst.regex = (...args) => inst.check(_regex(...args)); + inst.includes = (...args) => inst.check(_includes(...args)); + inst.startsWith = (...args) => inst.check(_startsWith(...args)); + inst.endsWith = (...args) => inst.check(_endsWith(...args)); + inst.min = (...args) => inst.check(_minLength(...args)); + inst.max = (...args) => inst.check(_maxLength(...args)); + inst.length = (...args) => inst.check(_length(...args)); + inst.nonempty = (...args) => inst.check(_minLength(1, ...args)); + inst.lowercase = (params) => inst.check(_lowercase(params)); + inst.uppercase = (params) => inst.check(_uppercase(params)); + inst.trim = () => inst.check(_trim()); + inst.normalize = (...args) => inst.check(_normalize(...args)); + inst.toLowerCase = () => inst.check(_toLowerCase()); + inst.toUpperCase = () => inst.check(_toUpperCase()); + inst.slugify = () => inst.check(_slugify()); +}); +var ZodString = /* @__PURE__ */ $constructor("ZodString", (inst, def) => { + $ZodString.init(inst, def); + _ZodString.init(inst, def); + inst.email = (params) => inst.check(_email(ZodEmail, params)); + inst.url = (params) => inst.check(_url(ZodURL, params)); + inst.jwt = (params) => inst.check(_jwt(ZodJWT, params)); + inst.emoji = (params) => inst.check(_emoji2(ZodEmoji, params)); + inst.guid = (params) => inst.check(_guid(ZodGUID, params)); + inst.uuid = (params) => inst.check(_uuid(ZodUUID, params)); + inst.uuidv4 = (params) => inst.check(_uuidv4(ZodUUID, params)); + inst.uuidv6 = (params) => inst.check(_uuidv6(ZodUUID, params)); + inst.uuidv7 = (params) => inst.check(_uuidv7(ZodUUID, params)); + inst.nanoid = (params) => inst.check(_nanoid(ZodNanoID, params)); + inst.guid = (params) => inst.check(_guid(ZodGUID, params)); + inst.cuid = (params) => inst.check(_cuid(ZodCUID, params)); + inst.cuid2 = (params) => inst.check(_cuid2(ZodCUID2, params)); + inst.ulid = (params) => inst.check(_ulid(ZodULID, params)); + inst.base64 = (params) => inst.check(_base64(ZodBase64, params)); + inst.base64url = (params) => inst.check(_base64url(ZodBase64URL, params)); + inst.xid = (params) => inst.check(_xid(ZodXID, params)); + inst.ksuid = (params) => inst.check(_ksuid(ZodKSUID, params)); + inst.ipv4 = (params) => inst.check(_ipv4(ZodIPv4, params)); + inst.ipv6 = (params) => inst.check(_ipv6(ZodIPv6, params)); + inst.cidrv4 = (params) => inst.check(_cidrv4(ZodCIDRv4, params)); + inst.cidrv6 = (params) => inst.check(_cidrv6(ZodCIDRv6, params)); + inst.e164 = (params) => inst.check(_e164(ZodE164, params)); + inst.datetime = (params) => inst.check(datetime2(params)); + inst.date = (params) => inst.check(date2(params)); + inst.time = (params) => inst.check(time2(params)); + inst.duration = (params) => inst.check(duration2(params)); +}); +function string2(params) { + return _string(ZodString, params); +} +var ZodStringFormat = /* @__PURE__ */ $constructor("ZodStringFormat", (inst, def) => { + $ZodStringFormat.init(inst, def); + _ZodString.init(inst, def); +}); +var ZodEmail = /* @__PURE__ */ $constructor("ZodEmail", (inst, def) => { + $ZodEmail.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function email2(params) { + return _email(ZodEmail, params); +} +var ZodGUID = /* @__PURE__ */ $constructor("ZodGUID", (inst, def) => { + $ZodGUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function guid2(params) { + return _guid(ZodGUID, params); +} +var ZodUUID = /* @__PURE__ */ $constructor("ZodUUID", (inst, def) => { + $ZodUUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function uuid2(params) { + return _uuid(ZodUUID, params); +} +function uuidv4(params) { + return _uuidv4(ZodUUID, params); +} +function uuidv6(params) { + return _uuidv6(ZodUUID, params); +} +function uuidv7(params) { + return _uuidv7(ZodUUID, params); +} +var ZodURL = /* @__PURE__ */ $constructor("ZodURL", (inst, def) => { + $ZodURL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function url(params) { + return _url(ZodURL, params); +} +function httpUrl(params) { + return _url(ZodURL, { + protocol: /^https?$/, + hostname: regexes_exports.domain, + ...util_exports.normalizeParams(params) + }); +} +var ZodEmoji = /* @__PURE__ */ $constructor("ZodEmoji", (inst, def) => { + $ZodEmoji.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function emoji2(params) { + return _emoji2(ZodEmoji, params); +} +var ZodNanoID = /* @__PURE__ */ $constructor("ZodNanoID", (inst, def) => { + $ZodNanoID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function nanoid2(params) { + return _nanoid(ZodNanoID, params); +} +var ZodCUID = /* @__PURE__ */ $constructor("ZodCUID", (inst, def) => { + $ZodCUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cuid3(params) { + return _cuid(ZodCUID, params); +} +var ZodCUID2 = /* @__PURE__ */ $constructor("ZodCUID2", (inst, def) => { + $ZodCUID2.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cuid22(params) { + return _cuid2(ZodCUID2, params); +} +var ZodULID = /* @__PURE__ */ $constructor("ZodULID", (inst, def) => { + $ZodULID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ulid2(params) { + return _ulid(ZodULID, params); +} +var ZodXID = /* @__PURE__ */ $constructor("ZodXID", (inst, def) => { + $ZodXID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function xid2(params) { + return _xid(ZodXID, params); +} +var ZodKSUID = /* @__PURE__ */ $constructor("ZodKSUID", (inst, def) => { + $ZodKSUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ksuid2(params) { + return _ksuid(ZodKSUID, params); +} +var ZodIPv4 = /* @__PURE__ */ $constructor("ZodIPv4", (inst, def) => { + $ZodIPv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ipv42(params) { + return _ipv4(ZodIPv4, params); +} +var ZodMAC = /* @__PURE__ */ $constructor("ZodMAC", (inst, def) => { + $ZodMAC.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function mac2(params) { + return _mac(ZodMAC, params); +} +var ZodIPv6 = /* @__PURE__ */ $constructor("ZodIPv6", (inst, def) => { + $ZodIPv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ipv62(params) { + return _ipv6(ZodIPv6, params); +} +var ZodCIDRv4 = /* @__PURE__ */ $constructor("ZodCIDRv4", (inst, def) => { + $ZodCIDRv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cidrv42(params) { + return _cidrv4(ZodCIDRv4, params); +} +var ZodCIDRv6 = /* @__PURE__ */ $constructor("ZodCIDRv6", (inst, def) => { + $ZodCIDRv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cidrv62(params) { + return _cidrv6(ZodCIDRv6, params); +} +var ZodBase64 = /* @__PURE__ */ $constructor("ZodBase64", (inst, def) => { + $ZodBase64.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function base642(params) { + return _base64(ZodBase64, params); +} +var ZodBase64URL = /* @__PURE__ */ $constructor("ZodBase64URL", (inst, def) => { + $ZodBase64URL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function base64url2(params) { + return _base64url(ZodBase64URL, params); +} +var ZodE164 = /* @__PURE__ */ $constructor("ZodE164", (inst, def) => { + $ZodE164.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function e1642(params) { + return _e164(ZodE164, params); +} +var ZodJWT = /* @__PURE__ */ $constructor("ZodJWT", (inst, def) => { + $ZodJWT.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function jwt(params) { + return _jwt(ZodJWT, params); +} +var ZodCustomStringFormat = /* @__PURE__ */ $constructor("ZodCustomStringFormat", (inst, def) => { + $ZodCustomStringFormat.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function stringFormat(format, fnOrRegex, _params = {}) { + return _stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params); +} +function hostname2(_params) { + return _stringFormat(ZodCustomStringFormat, "hostname", regexes_exports.hostname, _params); +} +function hex2(_params) { + return _stringFormat(ZodCustomStringFormat, "hex", regexes_exports.hex, _params); +} +function hash(alg, params) { + const enc = params?.enc ?? "hex"; + const format = `${alg}_${enc}`; + const regex = regexes_exports[format]; + if (!regex) + throw new Error(`Unrecognized hash format: ${format}`); + return _stringFormat(ZodCustomStringFormat, format, regex, params); +} +var ZodNumber = /* @__PURE__ */ $constructor("ZodNumber", (inst, def) => { + $ZodNumber.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => numberProcessor(inst, ctx, json2, params); + inst.gt = (value, params) => inst.check(_gt(value, params)); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.lt = (value, params) => inst.check(_lt(value, params)); + inst.lte = (value, params) => inst.check(_lte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + inst.int = (params) => inst.check(int(params)); + inst.safe = (params) => inst.check(int(params)); + inst.positive = (params) => inst.check(_gt(0, params)); + inst.nonnegative = (params) => inst.check(_gte(0, params)); + inst.negative = (params) => inst.check(_lt(0, params)); + inst.nonpositive = (params) => inst.check(_lte(0, params)); + inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); + inst.step = (value, params) => inst.check(_multipleOf(value, params)); + inst.finite = () => inst; + const bag = inst._zod.bag; + inst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null; + inst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null; + inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5); + inst.isFinite = true; + inst.format = bag.format ?? null; +}); +function number2(params) { + return _number(ZodNumber, params); +} +var ZodNumberFormat = /* @__PURE__ */ $constructor("ZodNumberFormat", (inst, def) => { + $ZodNumberFormat.init(inst, def); + ZodNumber.init(inst, def); +}); +function int(params) { + return _int(ZodNumberFormat, params); +} +function float32(params) { + return _float32(ZodNumberFormat, params); +} +function float64(params) { + return _float64(ZodNumberFormat, params); +} +function int32(params) { + return _int32(ZodNumberFormat, params); +} +function uint32(params) { + return _uint32(ZodNumberFormat, params); +} +var ZodBoolean = /* @__PURE__ */ $constructor("ZodBoolean", (inst, def) => { + $ZodBoolean.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => booleanProcessor(inst, ctx, json2, params); +}); +function boolean2(params) { + return _boolean(ZodBoolean, params); +} +var ZodBigInt = /* @__PURE__ */ $constructor("ZodBigInt", (inst, def) => { + $ZodBigInt.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => bigintProcessor(inst, ctx, json2, params); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.gt = (value, params) => inst.check(_gt(value, params)); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.lt = (value, params) => inst.check(_lt(value, params)); + inst.lte = (value, params) => inst.check(_lte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + inst.positive = (params) => inst.check(_gt(BigInt(0), params)); + inst.negative = (params) => inst.check(_lt(BigInt(0), params)); + inst.nonpositive = (params) => inst.check(_lte(BigInt(0), params)); + inst.nonnegative = (params) => inst.check(_gte(BigInt(0), params)); + inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); + const bag = inst._zod.bag; + inst.minValue = bag.minimum ?? null; + inst.maxValue = bag.maximum ?? null; + inst.format = bag.format ?? null; +}); +function bigint2(params) { + return _bigint(ZodBigInt, params); +} +var ZodBigIntFormat = /* @__PURE__ */ $constructor("ZodBigIntFormat", (inst, def) => { + $ZodBigIntFormat.init(inst, def); + ZodBigInt.init(inst, def); +}); +function int64(params) { + return _int64(ZodBigIntFormat, params); +} +function uint64(params) { + return _uint64(ZodBigIntFormat, params); +} +var ZodSymbol = /* @__PURE__ */ $constructor("ZodSymbol", (inst, def) => { + $ZodSymbol.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => symbolProcessor(inst, ctx, json2, params); +}); +function symbol(params) { + return _symbol(ZodSymbol, params); +} +var ZodUndefined = /* @__PURE__ */ $constructor("ZodUndefined", (inst, def) => { + $ZodUndefined.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => undefinedProcessor(inst, ctx, json2, params); +}); +function _undefined3(params) { + return _undefined2(ZodUndefined, params); +} +var ZodNull = /* @__PURE__ */ $constructor("ZodNull", (inst, def) => { + $ZodNull.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nullProcessor(inst, ctx, json2, params); +}); +function _null3(params) { + return _null2(ZodNull, params); +} +var ZodAny = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => { + $ZodAny.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => anyProcessor(inst, ctx, json2, params); +}); +function any() { + return _any(ZodAny); +} +var ZodUnknown = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => { + $ZodUnknown.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unknownProcessor(inst, ctx, json2, params); +}); +function unknown() { + return _unknown(ZodUnknown); +} +var ZodNever = /* @__PURE__ */ $constructor("ZodNever", (inst, def) => { + $ZodNever.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => neverProcessor(inst, ctx, json2, params); +}); +function never(params) { + return _never(ZodNever, params); +} +var ZodVoid = /* @__PURE__ */ $constructor("ZodVoid", (inst, def) => { + $ZodVoid.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => voidProcessor(inst, ctx, json2, params); +}); +function _void2(params) { + return _void(ZodVoid, params); +} +var ZodDate = /* @__PURE__ */ $constructor("ZodDate", (inst, def) => { + $ZodDate.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => dateProcessor(inst, ctx, json2, params); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + const c = inst._zod.bag; + inst.minDate = c.minimum ? new Date(c.minimum) : null; + inst.maxDate = c.maximum ? new Date(c.maximum) : null; +}); +function date3(params) { + return _date(ZodDate, params); +} +var ZodArray = /* @__PURE__ */ $constructor("ZodArray", (inst, def) => { + $ZodArray.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => arrayProcessor(inst, ctx, json2, params); + inst.element = def.element; + inst.min = (minLength, params) => inst.check(_minLength(minLength, params)); + inst.nonempty = (params) => inst.check(_minLength(1, params)); + inst.max = (maxLength, params) => inst.check(_maxLength(maxLength, params)); + inst.length = (len, params) => inst.check(_length(len, params)); + inst.unwrap = () => inst.element; +}); +function array(element, params) { + return _array(ZodArray, element, params); +} +function keyof(schema) { + const shape = schema._zod.def.shape; + return _enum2(Object.keys(shape)); +} +var ZodObject = /* @__PURE__ */ $constructor("ZodObject", (inst, def) => { + $ZodObjectJIT.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => objectProcessor(inst, ctx, json2, params); + util_exports.defineLazy(inst, "shape", () => { + return def.shape; + }); + inst.keyof = () => _enum2(Object.keys(inst._zod.def.shape)); + inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall }); + inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() }); + inst.strip = () => inst.clone({ ...inst._zod.def, catchall: void 0 }); + inst.extend = (incoming) => { + return util_exports.extend(inst, incoming); + }; + inst.safeExtend = (incoming) => { + return util_exports.safeExtend(inst, incoming); + }; + inst.merge = (other) => util_exports.merge(inst, other); + inst.pick = (mask) => util_exports.pick(inst, mask); + inst.omit = (mask) => util_exports.omit(inst, mask); + inst.partial = (...args) => util_exports.partial(ZodOptional, inst, args[0]); + inst.required = (...args) => util_exports.required(ZodNonOptional, inst, args[0]); +}); +function object(shape, params) { + const def = { + type: "object", + shape: shape ?? {}, + ...util_exports.normalizeParams(params) + }; + return new ZodObject(def); +} +function strictObject(shape, params) { + return new ZodObject({ + type: "object", + shape, + catchall: never(), + ...util_exports.normalizeParams(params) + }); +} +function looseObject(shape, params) { + return new ZodObject({ + type: "object", + shape, + catchall: unknown(), + ...util_exports.normalizeParams(params) + }); +} +var ZodUnion = /* @__PURE__ */ $constructor("ZodUnion", (inst, def) => { + $ZodUnion.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unionProcessor(inst, ctx, json2, params); + inst.options = def.options; +}); +function union(options, params) { + return new ZodUnion({ + type: "union", + options, + ...util_exports.normalizeParams(params) + }); +} +var ZodXor = /* @__PURE__ */ $constructor("ZodXor", (inst, def) => { + ZodUnion.init(inst, def); + $ZodXor.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unionProcessor(inst, ctx, json2, params); + inst.options = def.options; +}); +function xor(options, params) { + return new ZodXor({ + type: "union", + options, + inclusive: false, + ...util_exports.normalizeParams(params) + }); +} +var ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("ZodDiscriminatedUnion", (inst, def) => { + ZodUnion.init(inst, def); + $ZodDiscriminatedUnion.init(inst, def); +}); +function discriminatedUnion(discriminator, options, params) { + return new ZodDiscriminatedUnion({ + type: "union", + options, + discriminator, + ...util_exports.normalizeParams(params) + }); +} +var ZodIntersection = /* @__PURE__ */ $constructor("ZodIntersection", (inst, def) => { + $ZodIntersection.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => intersectionProcessor(inst, ctx, json2, params); +}); +function intersection(left, right) { + return new ZodIntersection({ + type: "intersection", + left, + right + }); +} +var ZodTuple = /* @__PURE__ */ $constructor("ZodTuple", (inst, def) => { + $ZodTuple.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => tupleProcessor(inst, ctx, json2, params); + inst.rest = (rest) => inst.clone({ + ...inst._zod.def, + rest + }); +}); +function tuple(items, _paramsOrRest, _params) { + const hasRest = _paramsOrRest instanceof $ZodType; + const params = hasRest ? _params : _paramsOrRest; + const rest = hasRest ? _paramsOrRest : null; + return new ZodTuple({ + type: "tuple", + items, + rest, + ...util_exports.normalizeParams(params) + }); +} +var ZodRecord = /* @__PURE__ */ $constructor("ZodRecord", (inst, def) => { + $ZodRecord.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => recordProcessor(inst, ctx, json2, params); + inst.keyType = def.keyType; + inst.valueType = def.valueType; +}); +function record(keyType, valueType, params) { + return new ZodRecord({ + type: "record", + keyType, + valueType, + ...util_exports.normalizeParams(params) + }); +} +function partialRecord(keyType, valueType, params) { + const k = clone(keyType); + k._zod.values = void 0; + return new ZodRecord({ + type: "record", + keyType: k, + valueType, + ...util_exports.normalizeParams(params) + }); +} +function looseRecord(keyType, valueType, params) { + return new ZodRecord({ + type: "record", + keyType, + valueType, + mode: "loose", + ...util_exports.normalizeParams(params) + }); +} +var ZodMap = /* @__PURE__ */ $constructor("ZodMap", (inst, def) => { + $ZodMap.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => mapProcessor(inst, ctx, json2, params); + inst.keyType = def.keyType; + inst.valueType = def.valueType; + inst.min = (...args) => inst.check(_minSize(...args)); + inst.nonempty = (params) => inst.check(_minSize(1, params)); + inst.max = (...args) => inst.check(_maxSize(...args)); + inst.size = (...args) => inst.check(_size(...args)); +}); +function map(keyType, valueType, params) { + return new ZodMap({ + type: "map", + keyType, + valueType, + ...util_exports.normalizeParams(params) + }); +} +var ZodSet = /* @__PURE__ */ $constructor("ZodSet", (inst, def) => { + $ZodSet.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => setProcessor(inst, ctx, json2, params); + inst.min = (...args) => inst.check(_minSize(...args)); + inst.nonempty = (params) => inst.check(_minSize(1, params)); + inst.max = (...args) => inst.check(_maxSize(...args)); + inst.size = (...args) => inst.check(_size(...args)); +}); +function set(valueType, params) { + return new ZodSet({ + type: "set", + valueType, + ...util_exports.normalizeParams(params) + }); +} +var ZodEnum = /* @__PURE__ */ $constructor("ZodEnum", (inst, def) => { + $ZodEnum.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => enumProcessor(inst, ctx, json2, params); + inst.enum = def.entries; + inst.options = Object.values(def.entries); + const keys = new Set(Object.keys(def.entries)); + inst.extract = (values, params) => { + const newEntries = {}; + for (const value of values) { + if (keys.has(value)) { + newEntries[value] = def.entries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; + inst.exclude = (values, params) => { + const newEntries = { ...def.entries }; + for (const value of values) { + if (keys.has(value)) { + delete newEntries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; +}); +function _enum2(values, params) { + const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + return new ZodEnum({ + type: "enum", + entries, + ...util_exports.normalizeParams(params) + }); +} +function nativeEnum(entries, params) { + return new ZodEnum({ + type: "enum", + entries, + ...util_exports.normalizeParams(params) + }); +} +var ZodLiteral = /* @__PURE__ */ $constructor("ZodLiteral", (inst, def) => { + $ZodLiteral.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => literalProcessor(inst, ctx, json2, params); + inst.values = new Set(def.values); + Object.defineProperty(inst, "value", { + get() { + if (def.values.length > 1) { + throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); + } + return def.values[0]; + } + }); +}); +function literal(value, params) { + return new ZodLiteral({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...util_exports.normalizeParams(params) + }); +} +var ZodFile = /* @__PURE__ */ $constructor("ZodFile", (inst, def) => { + $ZodFile.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => fileProcessor(inst, ctx, json2, params); + inst.min = (size, params) => inst.check(_minSize(size, params)); + inst.max = (size, params) => inst.check(_maxSize(size, params)); + inst.mime = (types, params) => inst.check(_mime(Array.isArray(types) ? types : [types], params)); +}); +function file(params) { + return _file(ZodFile, params); +} +var ZodTransform = /* @__PURE__ */ $constructor("ZodTransform", (inst, def) => { + $ZodTransform.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => transformProcessor(inst, ctx, json2, params); + inst._zod.parse = (payload, _ctx) => { + if (_ctx.direction === "backward") { + throw new $ZodEncodeError(inst.constructor.name); + } + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(util_exports.issue(issue2, payload.value, def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + _issue.input ?? (_issue.input = payload.value); + _issue.inst ?? (_issue.inst = inst); + payload.issues.push(util_exports.issue(_issue)); + } + }; + const output = def.transform(payload.value, payload); + if (output instanceof Promise) { + return output.then((output2) => { + payload.value = output2; + return payload; + }); + } + payload.value = output; + return payload; + }; +}); +function transform(fn) { + return new ZodTransform({ + type: "transform", + transform: fn + }); +} +var ZodOptional = /* @__PURE__ */ $constructor("ZodOptional", (inst, def) => { + $ZodOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => optionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function optional(innerType) { + return new ZodOptional({ + type: "optional", + innerType + }); +} +var ZodExactOptional = /* @__PURE__ */ $constructor("ZodExactOptional", (inst, def) => { + $ZodExactOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => optionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function exactOptional(innerType) { + return new ZodExactOptional({ + type: "optional", + innerType + }); +} +var ZodNullable = /* @__PURE__ */ $constructor("ZodNullable", (inst, def) => { + $ZodNullable.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nullableProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nullable(innerType) { + return new ZodNullable({ + type: "nullable", + innerType + }); +} +function nullish2(innerType) { + return optional(nullable(innerType)); +} +var ZodDefault = /* @__PURE__ */ $constructor("ZodDefault", (inst, def) => { + $ZodDefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => defaultProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeDefault = inst.unwrap; +}); +function _default2(innerType, defaultValue) { + return new ZodDefault({ + type: "default", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); + } + }); +} +var ZodPrefault = /* @__PURE__ */ $constructor("ZodPrefault", (inst, def) => { + $ZodPrefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => prefaultProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function prefault(innerType, defaultValue) { + return new ZodPrefault({ + type: "prefault", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); + } + }); +} +var ZodNonOptional = /* @__PURE__ */ $constructor("ZodNonOptional", (inst, def) => { + $ZodNonOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nonoptionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nonoptional(innerType, params) { + return new ZodNonOptional({ + type: "nonoptional", + innerType, + ...util_exports.normalizeParams(params) + }); +} +var ZodSuccess = /* @__PURE__ */ $constructor("ZodSuccess", (inst, def) => { + $ZodSuccess.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => successProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function success(innerType) { + return new ZodSuccess({ + type: "success", + innerType + }); +} +var ZodCatch = /* @__PURE__ */ $constructor("ZodCatch", (inst, def) => { + $ZodCatch.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => catchProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeCatch = inst.unwrap; +}); +function _catch2(innerType, catchValue) { + return new ZodCatch({ + type: "catch", + innerType, + catchValue: typeof catchValue === "function" ? catchValue : () => catchValue + }); +} +var ZodNaN = /* @__PURE__ */ $constructor("ZodNaN", (inst, def) => { + $ZodNaN.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nanProcessor(inst, ctx, json2, params); +}); +function nan(params) { + return _nan(ZodNaN, params); +} +var ZodPipe = /* @__PURE__ */ $constructor("ZodPipe", (inst, def) => { + $ZodPipe.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => pipeProcessor(inst, ctx, json2, params); + inst.in = def.in; + inst.out = def.out; +}); +function pipe(in_, out) { + return new ZodPipe({ + type: "pipe", + in: in_, + out + // ...util.normalizeParams(params), + }); +} +var ZodCodec = /* @__PURE__ */ $constructor("ZodCodec", (inst, def) => { + ZodPipe.init(inst, def); + $ZodCodec.init(inst, def); +}); +function codec(in_, out, params) { + return new ZodCodec({ + type: "pipe", + in: in_, + out, + transform: params.decode, + reverseTransform: params.encode + }); +} +var ZodReadonly = /* @__PURE__ */ $constructor("ZodReadonly", (inst, def) => { + $ZodReadonly.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => readonlyProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function readonly(innerType) { + return new ZodReadonly({ + type: "readonly", + innerType + }); +} +var ZodTemplateLiteral = /* @__PURE__ */ $constructor("ZodTemplateLiteral", (inst, def) => { + $ZodTemplateLiteral.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => templateLiteralProcessor(inst, ctx, json2, params); +}); +function templateLiteral(parts, params) { + return new ZodTemplateLiteral({ + type: "template_literal", + parts, + ...util_exports.normalizeParams(params) + }); +} +var ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => { + $ZodLazy.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => lazyProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.getter(); +}); +function lazy(getter) { + return new ZodLazy({ + type: "lazy", + getter + }); +} +var ZodPromise = /* @__PURE__ */ $constructor("ZodPromise", (inst, def) => { + $ZodPromise.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => promiseProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function promise(innerType) { + return new ZodPromise({ + type: "promise", + innerType + }); +} +var ZodFunction = /* @__PURE__ */ $constructor("ZodFunction", (inst, def) => { + $ZodFunction.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => functionProcessor(inst, ctx, json2, params); +}); +function _function(params) { + return new ZodFunction({ + type: "function", + input: Array.isArray(params?.input) ? tuple(params?.input) : params?.input ?? array(unknown()), + output: params?.output ?? unknown() + }); +} +var ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => { + $ZodCustom.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => customProcessor(inst, ctx, json2, params); +}); +function check(fn) { + const ch = new $ZodCheck({ + check: "custom" + // ...util.normalizeParams(params), + }); + ch._zod.check = fn; + return ch; +} +function custom(fn, _params) { + return _custom(ZodCustom, fn ?? (() => true), _params); +} +function refine(fn, _params = {}) { + return _refine(ZodCustom, fn, _params); +} +function superRefine(fn) { + return _superRefine(fn); +} +var describe2 = describe; +var meta2 = meta; +function _instanceof(cls, params = {}) { + const inst = new ZodCustom({ + type: "custom", + check: "custom", + fn: (data) => data instanceof cls, + abort: true, + ...util_exports.normalizeParams(params) + }); + inst._zod.bag.Class = cls; + inst._zod.check = (payload) => { + if (!(payload.value instanceof cls)) { + payload.issues.push({ + code: "invalid_type", + expected: cls.name, + input: payload.value, + inst, + path: [...inst._zod.def.path ?? []] + }); + } + }; + return inst; +} +var stringbool = (...args) => _stringbool({ + Codec: ZodCodec, + Boolean: ZodBoolean, + String: ZodString +}, ...args); +function json(params) { + const jsonSchema = lazy(() => { + return union([string2(params), number2(), boolean2(), _null3(), array(jsonSchema), record(string2(), jsonSchema)]); + }); + return jsonSchema; +} +function preprocess(fn, schema) { + return pipe(transform(fn), schema); +} + +// ../../node_modules/zod/v4/classic/compat.js +var ZodIssueCode = { + invalid_type: "invalid_type", + too_big: "too_big", + too_small: "too_small", + invalid_format: "invalid_format", + not_multiple_of: "not_multiple_of", + unrecognized_keys: "unrecognized_keys", + invalid_union: "invalid_union", + invalid_key: "invalid_key", + invalid_element: "invalid_element", + invalid_value: "invalid_value", + custom: "custom" +}; +function setErrorMap(map2) { + config({ + customError: map2 + }); +} +function getErrorMap() { + return config().customError; +} +var ZodFirstPartyTypeKind; +/* @__PURE__ */ (function(ZodFirstPartyTypeKind2) { +})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); + +// ../../node_modules/zod/v4/classic/from-json-schema.js +var z = { + ...schemas_exports2, + ...checks_exports2, + iso: iso_exports +}; +var RECOGNIZED_KEYS = /* @__PURE__ */ new Set([ + // Schema identification + "$schema", + "$ref", + "$defs", + "definitions", + // Core schema keywords + "$id", + "id", + "$comment", + "$anchor", + "$vocabulary", + "$dynamicRef", + "$dynamicAnchor", + // Type + "type", + "enum", + "const", + // Composition + "anyOf", + "oneOf", + "allOf", + "not", + // Object + "properties", + "required", + "additionalProperties", + "patternProperties", + "propertyNames", + "minProperties", + "maxProperties", + // Array + "items", + "prefixItems", + "additionalItems", + "minItems", + "maxItems", + "uniqueItems", + "contains", + "minContains", + "maxContains", + // String + "minLength", + "maxLength", + "pattern", + "format", + // Number + "minimum", + "maximum", + "exclusiveMinimum", + "exclusiveMaximum", + "multipleOf", + // Already handled metadata + "description", + "default", + // Content + "contentEncoding", + "contentMediaType", + "contentSchema", + // Unsupported (error-throwing) + "unevaluatedItems", + "unevaluatedProperties", + "if", + "then", + "else", + "dependentSchemas", + "dependentRequired", + // OpenAPI + "nullable", + "readOnly" +]); +function detectVersion(schema, defaultTarget) { + const $schema = schema.$schema; + if ($schema === "https://json-schema.org/draft/2020-12/schema") { + return "draft-2020-12"; + } + if ($schema === "http://json-schema.org/draft-07/schema#") { + return "draft-7"; + } + if ($schema === "http://json-schema.org/draft-04/schema#") { + return "draft-4"; + } + return defaultTarget ?? "draft-2020-12"; +} +function resolveRef(ref, ctx) { + if (!ref.startsWith("#")) { + throw new Error("External $ref is not supported, only local refs (#/...) are allowed"); + } + const path = ref.slice(1).split("/").filter(Boolean); + if (path.length === 0) { + return ctx.rootSchema; + } + const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions"; + if (path[0] === defsKey) { + const key = path[1]; + if (!key || !ctx.defs[key]) { + throw new Error(`Reference not found: ${ref}`); + } + return ctx.defs[key]; + } + throw new Error(`Reference not found: ${ref}`); +} +function convertBaseSchema(schema, ctx) { + if (schema.not !== void 0) { + if (typeof schema.not === "object" && Object.keys(schema.not).length === 0) { + return z.never(); + } + throw new Error("not is not supported in Zod (except { not: {} } for never)"); + } + if (schema.unevaluatedItems !== void 0) { + throw new Error("unevaluatedItems is not supported"); + } + if (schema.unevaluatedProperties !== void 0) { + throw new Error("unevaluatedProperties is not supported"); + } + if (schema.if !== void 0 || schema.then !== void 0 || schema.else !== void 0) { + throw new Error("Conditional schemas (if/then/else) are not supported"); + } + if (schema.dependentSchemas !== void 0 || schema.dependentRequired !== void 0) { + throw new Error("dependentSchemas and dependentRequired are not supported"); + } + if (schema.$ref) { + const refPath = schema.$ref; + if (ctx.refs.has(refPath)) { + return ctx.refs.get(refPath); + } + if (ctx.processing.has(refPath)) { + return z.lazy(() => { + if (!ctx.refs.has(refPath)) { + throw new Error(`Circular reference not resolved: ${refPath}`); + } + return ctx.refs.get(refPath); + }); + } + ctx.processing.add(refPath); + const resolved = resolveRef(refPath, ctx); + const zodSchema2 = convertSchema(resolved, ctx); + ctx.refs.set(refPath, zodSchema2); + ctx.processing.delete(refPath); + return zodSchema2; + } + if (schema.enum !== void 0) { + const enumValues = schema.enum; + if (ctx.version === "openapi-3.0" && schema.nullable === true && enumValues.length === 1 && enumValues[0] === null) { + return z.null(); + } + if (enumValues.length === 0) { + return z.never(); + } + if (enumValues.length === 1) { + return z.literal(enumValues[0]); + } + if (enumValues.every((v) => typeof v === "string")) { + return z.enum(enumValues); + } + const literalSchemas = enumValues.map((v) => z.literal(v)); + if (literalSchemas.length < 2) { + return literalSchemas[0]; + } + return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]); + } + if (schema.const !== void 0) { + return z.literal(schema.const); + } + const type = schema.type; + if (Array.isArray(type)) { + const typeSchemas = type.map((t) => { + const typeSchema = { ...schema, type: t }; + return convertBaseSchema(typeSchema, ctx); + }); + if (typeSchemas.length === 0) { + return z.never(); + } + if (typeSchemas.length === 1) { + return typeSchemas[0]; + } + return z.union(typeSchemas); + } + if (!type) { + return z.any(); + } + let zodSchema; + switch (type) { + case "string": { + let stringSchema = z.string(); + if (schema.format) { + const format = schema.format; + if (format === "email") { + stringSchema = stringSchema.check(z.email()); + } else if (format === "uri" || format === "uri-reference") { + stringSchema = stringSchema.check(z.url()); + } else if (format === "uuid" || format === "guid") { + stringSchema = stringSchema.check(z.uuid()); + } else if (format === "date-time") { + stringSchema = stringSchema.check(z.iso.datetime()); + } else if (format === "date") { + stringSchema = stringSchema.check(z.iso.date()); + } else if (format === "time") { + stringSchema = stringSchema.check(z.iso.time()); + } else if (format === "duration") { + stringSchema = stringSchema.check(z.iso.duration()); + } else if (format === "ipv4") { + stringSchema = stringSchema.check(z.ipv4()); + } else if (format === "ipv6") { + stringSchema = stringSchema.check(z.ipv6()); + } else if (format === "mac") { + stringSchema = stringSchema.check(z.mac()); + } else if (format === "cidr") { + stringSchema = stringSchema.check(z.cidrv4()); + } else if (format === "cidr-v6") { + stringSchema = stringSchema.check(z.cidrv6()); + } else if (format === "base64") { + stringSchema = stringSchema.check(z.base64()); + } else if (format === "base64url") { + stringSchema = stringSchema.check(z.base64url()); + } else if (format === "e164") { + stringSchema = stringSchema.check(z.e164()); + } else if (format === "jwt") { + stringSchema = stringSchema.check(z.jwt()); + } else if (format === "emoji") { + stringSchema = stringSchema.check(z.emoji()); + } else if (format === "nanoid") { + stringSchema = stringSchema.check(z.nanoid()); + } else if (format === "cuid") { + stringSchema = stringSchema.check(z.cuid()); + } else if (format === "cuid2") { + stringSchema = stringSchema.check(z.cuid2()); + } else if (format === "ulid") { + stringSchema = stringSchema.check(z.ulid()); + } else if (format === "xid") { + stringSchema = stringSchema.check(z.xid()); + } else if (format === "ksuid") { + stringSchema = stringSchema.check(z.ksuid()); + } + } + if (typeof schema.minLength === "number") { + stringSchema = stringSchema.min(schema.minLength); + } + if (typeof schema.maxLength === "number") { + stringSchema = stringSchema.max(schema.maxLength); + } + if (schema.pattern) { + stringSchema = stringSchema.regex(new RegExp(schema.pattern)); + } + zodSchema = stringSchema; + break; + } + case "number": + case "integer": { + let numberSchema = type === "integer" ? z.number().int() : z.number(); + if (typeof schema.minimum === "number") { + numberSchema = numberSchema.min(schema.minimum); + } + if (typeof schema.maximum === "number") { + numberSchema = numberSchema.max(schema.maximum); + } + if (typeof schema.exclusiveMinimum === "number") { + numberSchema = numberSchema.gt(schema.exclusiveMinimum); + } else if (schema.exclusiveMinimum === true && typeof schema.minimum === "number") { + numberSchema = numberSchema.gt(schema.minimum); + } + if (typeof schema.exclusiveMaximum === "number") { + numberSchema = numberSchema.lt(schema.exclusiveMaximum); + } else if (schema.exclusiveMaximum === true && typeof schema.maximum === "number") { + numberSchema = numberSchema.lt(schema.maximum); + } + if (typeof schema.multipleOf === "number") { + numberSchema = numberSchema.multipleOf(schema.multipleOf); + } + zodSchema = numberSchema; + break; + } + case "boolean": { + zodSchema = z.boolean(); + break; + } + case "null": { + zodSchema = z.null(); + break; + } + case "object": { + const shape = {}; + const properties = schema.properties || {}; + const requiredSet = new Set(schema.required || []); + for (const [key, propSchema] of Object.entries(properties)) { + const propZodSchema = convertSchema(propSchema, ctx); + shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional(); + } + if (schema.propertyNames) { + const keySchema = convertSchema(schema.propertyNames, ctx); + const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === "object" ? convertSchema(schema.additionalProperties, ctx) : z.any(); + if (Object.keys(shape).length === 0) { + zodSchema = z.record(keySchema, valueSchema); + break; + } + const objectSchema2 = z.object(shape).passthrough(); + const recordSchema = z.looseRecord(keySchema, valueSchema); + zodSchema = z.intersection(objectSchema2, recordSchema); + break; + } + if (schema.patternProperties) { + const patternProps = schema.patternProperties; + const patternKeys = Object.keys(patternProps); + const looseRecords = []; + for (const pattern of patternKeys) { + const patternValue = convertSchema(patternProps[pattern], ctx); + const keySchema = z.string().regex(new RegExp(pattern)); + looseRecords.push(z.looseRecord(keySchema, patternValue)); + } + const schemasToIntersect = []; + if (Object.keys(shape).length > 0) { + schemasToIntersect.push(z.object(shape).passthrough()); + } + schemasToIntersect.push(...looseRecords); + if (schemasToIntersect.length === 0) { + zodSchema = z.object({}).passthrough(); + } else if (schemasToIntersect.length === 1) { + zodSchema = schemasToIntersect[0]; + } else { + let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]); + for (let i = 2; i < schemasToIntersect.length; i++) { + result = z.intersection(result, schemasToIntersect[i]); + } + zodSchema = result; + } + break; + } + const objectSchema = z.object(shape); + if (schema.additionalProperties === false) { + zodSchema = objectSchema.strict(); + } else if (typeof schema.additionalProperties === "object") { + zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx)); + } else { + zodSchema = objectSchema.passthrough(); + } + break; + } + case "array": { + const prefixItems = schema.prefixItems; + const items = schema.items; + if (prefixItems && Array.isArray(prefixItems)) { + const tupleItems = prefixItems.map((item) => convertSchema(item, ctx)); + const rest = items && typeof items === "object" && !Array.isArray(items) ? convertSchema(items, ctx) : void 0; + if (rest) { + zodSchema = z.tuple(tupleItems).rest(rest); + } else { + zodSchema = z.tuple(tupleItems); + } + if (typeof schema.minItems === "number") { + zodSchema = zodSchema.check(z.minLength(schema.minItems)); + } + if (typeof schema.maxItems === "number") { + zodSchema = zodSchema.check(z.maxLength(schema.maxItems)); + } + } else if (Array.isArray(items)) { + const tupleItems = items.map((item) => convertSchema(item, ctx)); + const rest = schema.additionalItems && typeof schema.additionalItems === "object" ? convertSchema(schema.additionalItems, ctx) : void 0; + if (rest) { + zodSchema = z.tuple(tupleItems).rest(rest); + } else { + zodSchema = z.tuple(tupleItems); + } + if (typeof schema.minItems === "number") { + zodSchema = zodSchema.check(z.minLength(schema.minItems)); + } + if (typeof schema.maxItems === "number") { + zodSchema = zodSchema.check(z.maxLength(schema.maxItems)); + } + } else if (items !== void 0) { + const element = convertSchema(items, ctx); + let arraySchema = z.array(element); + if (typeof schema.minItems === "number") { + arraySchema = arraySchema.min(schema.minItems); + } + if (typeof schema.maxItems === "number") { + arraySchema = arraySchema.max(schema.maxItems); + } + zodSchema = arraySchema; + } else { + zodSchema = z.array(z.any()); + } + break; + } + default: + throw new Error(`Unsupported type: ${type}`); + } + if (schema.description) { + zodSchema = zodSchema.describe(schema.description); + } + if (schema.default !== void 0) { + zodSchema = zodSchema.default(schema.default); + } + return zodSchema; +} +function convertSchema(schema, ctx) { + if (typeof schema === "boolean") { + return schema ? z.any() : z.never(); + } + let baseSchema = convertBaseSchema(schema, ctx); + const hasExplicitType = schema.type || schema.enum !== void 0 || schema.const !== void 0; + if (schema.anyOf && Array.isArray(schema.anyOf)) { + const options = schema.anyOf.map((s) => convertSchema(s, ctx)); + const anyOfUnion = z.union(options); + baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion; + } + if (schema.oneOf && Array.isArray(schema.oneOf)) { + const options = schema.oneOf.map((s) => convertSchema(s, ctx)); + const oneOfUnion = z.xor(options); + baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion; + } + if (schema.allOf && Array.isArray(schema.allOf)) { + if (schema.allOf.length === 0) { + baseSchema = hasExplicitType ? baseSchema : z.any(); + } else { + let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx); + const startIdx = hasExplicitType ? 0 : 1; + for (let i = startIdx; i < schema.allOf.length; i++) { + result = z.intersection(result, convertSchema(schema.allOf[i], ctx)); + } + baseSchema = result; + } + } + if (schema.nullable === true && ctx.version === "openapi-3.0") { + baseSchema = z.nullable(baseSchema); + } + if (schema.readOnly === true) { + baseSchema = z.readonly(baseSchema); + } + const extraMeta = {}; + const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"]; + for (const key of coreMetadataKeys) { + if (key in schema) { + extraMeta[key] = schema[key]; + } + } + const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"]; + for (const key of contentMetadataKeys) { + if (key in schema) { + extraMeta[key] = schema[key]; + } + } + for (const key of Object.keys(schema)) { + if (!RECOGNIZED_KEYS.has(key)) { + extraMeta[key] = schema[key]; + } + } + if (Object.keys(extraMeta).length > 0) { + ctx.registry.add(baseSchema, extraMeta); + } + return baseSchema; +} +function fromJSONSchema(schema, params) { + if (typeof schema === "boolean") { + return schema ? z.any() : z.never(); + } + const version2 = detectVersion(schema, params?.defaultTarget); + const defs = schema.$defs || schema.definitions || {}; + const ctx = { + version: version2, + defs, + refs: /* @__PURE__ */ new Map(), + processing: /* @__PURE__ */ new Set(), + rootSchema: schema, + registry: params?.registry ?? globalRegistry + }; + return convertSchema(schema, ctx); +} + +// ../../node_modules/zod/v4/classic/coerce.js +var coerce_exports = {}; +__export(coerce_exports, { + bigint: () => bigint3, + boolean: () => boolean3, + date: () => date4, + number: () => number3, + string: () => string3 +}); +function string3(params) { + return _coercedString(ZodString, params); +} +function number3(params) { + return _coercedNumber(ZodNumber, params); +} +function boolean3(params) { + return _coercedBoolean(ZodBoolean, params); +} +function bigint3(params) { + return _coercedBigint(ZodBigInt, params); +} +function date4(params) { + return _coercedDate(ZodDate, params); +} + +// ../../node_modules/zod/v4/classic/external.js +config(en_default()); + +// ../shared/dist/schemas/session.js +var ToolCallSchema = external_exports.object({ + id: external_exports.string(), + name: external_exports.string(), + input: external_exports.record(external_exports.string(), external_exports.unknown()), + result: external_exports.string().optional(), + isError: external_exports.boolean().optional() +}); +var ParsedMessageSchema = external_exports.object({ + uuid: external_exports.string(), + role: external_exports.enum(["user", "assistant"]), + timestamp: external_exports.string(), + content: external_exports.string(), + isMeta: external_exports.boolean().optional(), + sourceToolUseID: external_exports.string().optional(), + toolUseResult: external_exports.unknown().optional(), + toolCalls: external_exports.array(ToolCallSchema).optional(), + tokenUsage: external_exports.object({ + input: external_exports.number().int().min(0), + output: external_exports.number().int().min(0) + }).optional() +}); +var SessionStatsSchema = external_exports.object({ + userMessageCount: external_exports.number().int().min(0), + assistantMessageCount: external_exports.number().int().min(0), + toolCallCount: external_exports.number().int().min(0), + uniqueToolsUsed: external_exports.array(external_exports.string()), + totalInputTokens: external_exports.number().int().min(0), + totalOutputTokens: external_exports.number().int().min(0) +}); +var SessionSourceTypeSchema = external_exports.enum([ + "claude-code", + "cursor", + "cursor-composer" +]); +var ParsedSessionSchema = external_exports.object({ + sessionId: external_exports.string(), + projectPath: external_exports.string(), + projectName: external_exports.string().optional(), + startTime: external_exports.string(), + endTime: external_exports.string(), + durationSeconds: external_exports.number().min(0), + claudeCodeVersion: external_exports.string(), + messages: external_exports.array(ParsedMessageSchema), + stats: SessionStatsSchema, + source: SessionSourceTypeSchema.optional() +}); + +// ../shared/dist/schemas/phase1-output.js +var AIInsightBlockSchema = external_exports.object({ + sessionId: external_exports.string(), + turnIndex: external_exports.number().int().min(0), + content: external_exports.string(), + triggeringUtteranceId: external_exports.string().optional() +}); +var NaturalLanguageSegmentSchema = external_exports.object({ + start: external_exports.number().int().min(0), + end: external_exports.number().int().min(0), + text: external_exports.string() +}); +var UserUtteranceSchema = external_exports.object({ + id: external_exports.string(), + text: external_exports.string(), + displayText: external_exports.string().optional(), + naturalLanguageSegments: external_exports.array(NaturalLanguageSegmentSchema).optional(), + timestamp: external_exports.string(), + sessionId: external_exports.string(), + turnIndex: external_exports.number().int().min(0), + characterCount: external_exports.number().int().min(0), + wordCount: external_exports.number().int().min(0), + hasCodeBlock: external_exports.boolean(), + hasQuestion: external_exports.boolean(), + isSessionStart: external_exports.boolean().optional(), + isContinuation: external_exports.boolean().optional(), + machineContentRatio: external_exports.number().min(0).max(1).optional(), + precedingAIToolCalls: external_exports.array(external_exports.string()).optional(), + precedingAIHadError: external_exports.boolean().optional() +}); +var FrictionSignalsSchema = external_exports.object({ + toolFailureCount: external_exports.number().int().min(0), + userRejectionSignals: external_exports.number().int().min(0), + excessiveIterationSessions: external_exports.number().int().min(0), + contextOverflowSessions: external_exports.number().int().min(0), + frustrationExpressionCount: external_exports.number().int().min(0), + repeatedToolErrorPatterns: external_exports.number().int().min(0), + bareRetryAfterErrorCount: external_exports.number().int().min(0), + errorChainMaxLength: external_exports.number().int().min(0) +}); +var SessionHintsSchema = external_exports.object({ + avgTurnsPerSession: external_exports.number().min(0), + shortSessions: external_exports.number().int().min(0), + mediumSessions: external_exports.number().int().min(0), + longSessions: external_exports.number().int().min(0) +}); +var Phase1SessionMetricsSchema = external_exports.object({ + totalSessions: external_exports.number().int().min(0), + totalMessages: external_exports.number().int().min(0), + totalDeveloperUtterances: external_exports.number().int().min(0), + totalAIResponses: external_exports.number().int().min(0), + avgMessagesPerSession: external_exports.number(), + avgDeveloperMessageLength: external_exports.number(), + questionRatio: external_exports.number().min(0).max(1), + codeBlockRatio: external_exports.number().min(0).max(1), + dateRange: external_exports.object({ + earliest: external_exports.string(), + latest: external_exports.string() + }), + slashCommandCounts: external_exports.record(external_exports.string(), external_exports.number()).optional(), + avgContextFillPercent: external_exports.number().min(0).max(100).optional(), + maxContextFillPercent: external_exports.number().min(0).max(100).optional(), + contextFillExceeded90Count: external_exports.number().int().min(0).optional(), + frictionSignals: FrictionSignalsSchema.optional(), + sessionHints: SessionHintsSchema.optional(), + aiInsightBlockCount: external_exports.number().int().min(0).optional() +}); +var ActivitySessionSchema = external_exports.object({ + sessionId: external_exports.string(), + projectName: external_exports.string(), + projectPath: external_exports.string().optional(), + startTime: external_exports.string(), + durationSeconds: external_exports.number().min(0), + messageCount: external_exports.number().int().min(0), + userMessageCount: external_exports.number().int().min(0), + assistantMessageCount: external_exports.number().int().min(0), + totalInputTokens: external_exports.number().int().min(0), + totalOutputTokens: external_exports.number().int().min(0), + /** First user message text (truncated to 200 chars) for summary context */ + firstUserMessage: external_exports.string().optional() +}); +var Phase1OutputSchema = external_exports.object({ + developerUtterances: external_exports.array(UserUtteranceSchema), + sessionMetrics: Phase1SessionMetricsSchema, + aiInsightBlocks: external_exports.array(AIInsightBlockSchema).optional(), + /** Per-session metadata for Phase 1.5/2 stages */ + activitySessions: external_exports.array(ActivitySessionSchema).optional(), + /** Full parsed sessions preserved for downstream evidence and parity needs */ + sessions: external_exports.array(ParsedSessionSchema).optional(), + skippedFiles: external_exports.number().optional() +}); + +// ../shared/dist/schemas/deterministic-scores.js +var DeterministicScoresSchema = external_exports.object({ + aiPartnership: external_exports.number().min(0).max(100), + sessionCraft: external_exports.number().min(0).max(100), + toolMastery: external_exports.number().min(0).max(100), + skillResilience: external_exports.number().min(0).max(100), + sessionMastery: external_exports.number().min(0).max(100), + controlScore: external_exports.number().min(0).max(100), + // Legacy fields — present on old runs, not computed for new + contextEfficiency: external_exports.number().min(0).max(100).optional(), + sessionOutcome: external_exports.number().min(0).max(100).optional(), + thinkingQuality: external_exports.number().min(0).max(100).optional(), + learningBehavior: external_exports.number().min(0).max(100).optional(), + communicationPatterns: external_exports.number().min(0).max(100).optional() +}); +var CodingStyleTypeSchema = external_exports.enum([ + "architect", + "analyst", + "conductor", + "speedrunner", + "trendsetter" +]); +var AIControlLevelSchema = external_exports.enum([ + "explorer", + "navigator", + "cartographer" +]); +var DeterministicTypeResultSchema = external_exports.object({ + primaryType: CodingStyleTypeSchema, + distribution: external_exports.object({ + architect: external_exports.number(), + analyst: external_exports.number(), + conductor: external_exports.number(), + speedrunner: external_exports.number(), + trendsetter: external_exports.number() + }), + controlLevel: AIControlLevelSchema, + controlScore: external_exports.number().min(0).max(100), + matrixName: external_exports.string(), + matrixEmoji: external_exports.string() +}); + +// ../shared/dist/schemas/domain-result.js +var EvidenceSchema = external_exports.object({ + utteranceId: external_exports.string(), + quote: external_exports.string(), + context: external_exports.string().optional() +}); +var DomainStrengthSchema = external_exports.object({ + title: external_exports.string(), + description: external_exports.string().min(100), + evidence: external_exports.array(EvidenceSchema).min(1) +}); +var DomainGrowthAreaSchema = external_exports.object({ + title: external_exports.string(), + description: external_exports.string().min(100), + severity: external_exports.enum(["critical", "high", "medium", "low"]), + recommendation: external_exports.string().min(50), + evidence: external_exports.array(EvidenceSchema).min(1) +}); +var DomainResultSchema = external_exports.object({ + domain: external_exports.enum([ + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery", + // Legacy domains accepted for backward compat with old runs + "thinkingQuality", + "communicationPatterns", + "learningBehavior", + "contextEfficiency", + "sessionOutcome", + "content" + ]), + overallScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + strengths: external_exports.array(DomainStrengthSchema), + growthAreas: external_exports.array(DomainGrowthAreaSchema), + /** Domain-specific typed data. Validated per domain when available. */ + data: external_exports.record(external_exports.string(), external_exports.unknown()).optional(), + analyzedAt: external_exports.string() +}); +var AnalysisReportSchema = external_exports.object({ + userId: external_exports.string(), + analyzedAt: external_exports.string(), + phase1Metrics: Phase1SessionMetricsSchema, + deterministicScores: DeterministicScoresSchema, + typeResult: DeterministicTypeResultSchema.nullable(), + domainResults: external_exports.array(DomainResultSchema), + content: external_exports.object({ + topFocusAreas: external_exports.array(external_exports.object({ + title: external_exports.string(), + narrative: external_exports.string().optional(), + description: external_exports.string().optional(), + actions: external_exports.object({ + start: external_exports.string(), + stop: external_exports.string(), + continue: external_exports.string() + }).optional() + })).optional(), + personalitySummary: external_exports.array(external_exports.string()).optional() + }).optional() +}); + +// ../shared/dist/schemas/stage-outputs.js +var SessionSummarySchema = external_exports.object({ + sessionId: external_exports.string(), + summary: external_exports.string() +}); +var SessionSummaryBatchSchema = external_exports.object({ + summaries: external_exports.array(SessionSummarySchema) +}); +var ProjectSummarySchema = external_exports.object({ + projectName: external_exports.string(), + summaryLines: external_exports.array(external_exports.string()), + sessionCount: external_exports.number().int().min(0) +}); +var ProjectSummaryBatchSchema = external_exports.object({ + projects: external_exports.array(ProjectSummarySchema) +}); +var WeeklyProjectBreakdownSchema = external_exports.object({ + projectName: external_exports.string(), + sessionCount: external_exports.number().int().min(0), + percentage: external_exports.number().min(0).max(100) +}); +var WeeklyTopSessionSchema = external_exports.object({ + sessionId: external_exports.string(), + summary: external_exports.string() +}); +var WeeklyInsightsSchema = external_exports.object({ + stats: external_exports.object({ + sessionCount: external_exports.number().int().min(0), + totalMinutes: external_exports.number().min(0), + totalTokens: external_exports.number().int().min(0), + activeDays: external_exports.number().int().min(0).max(7), + deltaSessionCount: external_exports.number().optional(), + deltaMinutes: external_exports.number().optional(), + deltaTokens: external_exports.number().optional() + }), + projects: external_exports.array(WeeklyProjectBreakdownSchema), + topSessions: external_exports.array(WeeklyTopSessionSchema), + narrative: external_exports.string(), + highlights: external_exports.array(external_exports.string()) +}); +var EvidenceVerificationResultSchema = external_exports.object({ + utteranceId: external_exports.string(), + quote: external_exports.string(), + relevanceScore: external_exports.number().min(0).max(100), + verified: external_exports.boolean() +}); +var DomainVerificationStatsSchema = external_exports.object({ + domain: external_exports.string(), + totalEvidence: external_exports.number().int().min(0), + keptCount: external_exports.number().int().min(0), + filteredCount: external_exports.number().int().min(0) +}); +var EvidenceVerificationOutputSchema = external_exports.object({ + verifiedResults: external_exports.array(EvidenceVerificationResultSchema), + domainStats: external_exports.array(DomainVerificationStatsSchema), + threshold: external_exports.number().min(0).max(100) +}); +var TopFocusAreaSchema = external_exports.object({ + title: external_exports.string(), + description: external_exports.string(), + relatedQualities: external_exports.array(external_exports.string()), + actions: external_exports.object({ + start: external_exports.string(), + stop: external_exports.string(), + continue: external_exports.string() + }) +}); +var ContentWriterOutputSchema = external_exports.object({ + topFocusAreas: external_exports.array(TopFocusAreaSchema), + personalitySummary: external_exports.array(external_exports.string()).optional() +}); +var TypeClassificationStageOutputSchema = external_exports.object({ + reasoning: external_exports.array(external_exports.string()), + personalityNarrative: external_exports.array(external_exports.string()), + collaborationMaturity: external_exports.string().optional() +}); +var TranslatorOutputSchema = external_exports.object({ + targetLanguage: external_exports.string(), + translatedFields: external_exports.record(external_exports.string(), external_exports.unknown()) +}); +var DimensionExtractionSchema = external_exports.object({ + dimension: external_exports.string(), + quotes: external_exports.array(external_exports.object({ + text: external_exports.string(), + utteranceId: external_exports.string().optional(), + sessionId: external_exports.string().optional(), + behavioralMarker: external_exports.string().optional(), + signalType: external_exports.enum(["strength", "growth"]).optional(), + confidence: external_exports.number().min(0).max(1).optional() + }).passthrough()), + patterns: external_exports.array(external_exports.object({ + name: external_exports.string(), + category: external_exports.string().optional(), + examples: external_exports.array(external_exports.string()).optional(), + frequency: external_exports.string().optional() + }).passthrough()).optional(), + signals: external_exports.record(external_exports.string(), external_exports.unknown()).optional(), + score: external_exports.number().min(0).max(100).optional(), + metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional() +}).passthrough(); +var STAGE_NAMES = [ + "sessionSummaries", + "projectSummaries", + "weeklyInsights", + "typeClassification", + "evidenceVerification", + "contentWriter", + "translator", + // 5-dimension extractors (v2) + "extractAiPartnership", + "extractSessionCraft", + "extractToolMastery", + "extractSkillResilience", + "extractSessionMastery", + // Legacy extractors (old runs only) + "extractAiCollaboration", + "extractContextEngineering", + "extractBurnoutRisk", + "extractAiControl" +]; +var STAGE_SCHEMAS = { + sessionSummaries: SessionSummaryBatchSchema, + projectSummaries: ProjectSummaryBatchSchema, + weeklyInsights: WeeklyInsightsSchema, + typeClassification: TypeClassificationStageOutputSchema, + evidenceVerification: EvidenceVerificationOutputSchema, + contentWriter: ContentWriterOutputSchema, + translator: TranslatorOutputSchema, + // 5-dimension extractors (v2) + extractAiPartnership: DimensionExtractionSchema, + extractSessionCraft: DimensionExtractionSchema, + extractToolMastery: DimensionExtractionSchema, + extractSkillResilience: DimensionExtractionSchema, + extractSessionMastery: DimensionExtractionSchema, + // Legacy extractors (old runs) + extractAiCollaboration: DimensionExtractionSchema, + extractContextEngineering: DimensionExtractionSchema, + extractBurnoutRisk: DimensionExtractionSchema, + extractAiControl: DimensionExtractionSchema +}; + +// ../shared/dist/schemas/worker-outputs.js +var InsightEvidenceSchema = external_exports.object({ + /** Utterance ID from Phase 1 (format: {sessionId}_{turnIndex}) */ + utteranceId: external_exports.string(), + /** Direct quote or paraphrase from the developer's message */ + quote: external_exports.string(), + /** Brief context description */ + context: external_exports.string().optional() +}); +var EvidenceItemSchema = external_exports.union([ + external_exports.string(), + InsightEvidenceSchema +]); +var WorkerStrengthSchema = external_exports.object({ + /** Clear, specific title (e.g., "Systematic Output Verification") */ + title: external_exports.string(), + /** 6-10 sentences providing comprehensive analysis */ + description: external_exports.string(), + /** + * Direct quotes from developer messages demonstrating this (1-8 items). + * Can be simple strings (legacy) or structured with utterance linking. + */ + evidence: external_exports.array(EvidenceItemSchema).min(1).max(8), + /** Truncated description preview for free tier blur teaser (set by ContentGateway) */ + descriptionPreview: external_exports.string().optional() +}); +var WorkerGrowthSeveritySchema = external_exports.enum(["critical", "high", "medium", "low"]); +var WorkerGrowthSchema = external_exports.object({ + /** Clear, specific title (e.g., "Error Loop Pattern") */ + title: external_exports.string(), + /** 6-10 sentences providing comprehensive analysis */ + description: external_exports.string(), + /** + * Direct quotes from developer messages showing this pattern (1-8 items). + * Can be simple strings (legacy) or structured with utterance linking. + */ + evidence: external_exports.array(EvidenceItemSchema).min(1).max(8), + /** 4-6 sentences with step-by-step actionable advice */ + recommendation: external_exports.string(), + /** How critical this growth area is to address */ + severity: WorkerGrowthSeveritySchema.optional(), + /** Truncated description preview for free tier blur teaser (set by ContentGateway) */ + descriptionPreview: external_exports.string().optional(), + /** Truncated recommendation preview for free tier blur teaser (set by ContentGateway) */ + recommendationPreview: external_exports.string().optional() +}); +var ReferencedInsightSchema = external_exports.object({ + /** Insight ID (e.g., "pi-001") */ + id: external_exports.string(), + /** Human-readable title */ + title: external_exports.string(), + /** Source URL for the insight */ + url: external_exports.string(), + /** Main insight text */ + keyTakeaway: external_exports.string(), + /** Actionable tips array */ + actionableAdvice: external_exports.array(external_exports.string()), + /** Insight category: diagnosis | trend | tool | type-specific */ + category: external_exports.string(), + /** Author name from source */ + sourceAuthor: external_exports.string() +}); +var PlanningHabitTypeSchema = external_exports.enum([ + "uses_plan_command", + "plan_mode_usage", + "task_decomposition", + "structure_first", + "todowrite_usage", + "no_planning" +]); +var HabitFrequencySchema = external_exports.enum(["always", "often", "sometimes", "rarely", "never"]); +var PlanningHabitSchema = external_exports.object({ + type: PlanningHabitTypeSchema, + frequency: HabitFrequencySchema, + examples: external_exports.array(external_exports.string()), + effectiveness: external_exports.enum(["high", "medium", "low"]).optional() +}); +var CriticalThinkingTypeSchema = external_exports.enum([ + "verification_request", + "output_validation", + "assumption_questioning", + "alternative_exploration", + "edge_case_consideration", + "security_check", + "ai_output_correction" +]); +var CriticalThinkingMomentSchema = external_exports.object({ + type: CriticalThinkingTypeSchema, + quote: external_exports.string(), + result: external_exports.string(), + utteranceId: external_exports.string().optional() +}); +var VerificationLevelSchema = external_exports.enum([ + "blind_trust", + "occasional_review", + "systematic_verification", + "skeptical" +]); +var VerificationBehaviorSchema = external_exports.object({ + level: VerificationLevelSchema, + examples: external_exports.array(external_exports.string()), + recommendation: external_exports.string(), + confidence: external_exports.number().min(0).max(1).optional() +}); +var PatternSeveritySchema = external_exports.enum(["critical", "significant", "moderate", "mild"]); +var AntiPatternExampleSchema = external_exports.object({ + utteranceId: external_exports.string(), + quote: external_exports.string(), + context: external_exports.string().optional() +}); +var DetectedAntiPatternSchema = external_exports.object({ + type: external_exports.string(), + frequency: external_exports.number().int().min(1), + examples: external_exports.array(AntiPatternExampleSchema), + severity: PatternSeveritySchema, + improvement: external_exports.string().optional(), + sessionPercentage: external_exports.number().min(0).max(100).optional() +}); +var ContextPollutionSchema = external_exports.object({ + description: external_exports.string(), + impact: external_exports.enum(["high", "medium", "low"]) +}); +var MultitaskingPatternSchema = external_exports.object({ + mixesTopicsInSessions: external_exports.boolean(), + contextPollutionInstances: external_exports.array(ContextPollutionSchema), + focusScore: external_exports.number().min(0).max(100).optional(), + recommendation: external_exports.string().optional() +}); +var ThinkingQualityOutputSchema = external_exports.object({ + // Planning Dimension + planningHabits: external_exports.array(PlanningHabitSchema), + planQualityScore: external_exports.number().min(0).max(100), + multitaskingPattern: MultitaskingPatternSchema.optional(), + // Critical Thinking Dimension + verificationBehavior: VerificationBehaviorSchema, + criticalThinkingMoments: external_exports.array(CriticalThinkingMomentSchema), + verificationAntiPatterns: external_exports.array(DetectedAntiPatternSchema), + // Overall Scores + overallThinkingQualityScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var PatternFrequencySchema = external_exports.enum(["frequent", "occasional", "rare"]); +var PatternEffectivenessSchema = external_exports.enum(["highly_effective", "effective", "could_improve"]); +var PatternExampleSchema = external_exports.object({ + utteranceId: external_exports.string(), + analysis: external_exports.string() +}); +var CommunicationPatternSchema = external_exports.object({ + patternName: external_exports.string(), + description: external_exports.string(), + frequency: PatternFrequencySchema, + examples: external_exports.array(PatternExampleSchema).min(1).max(5), + effectiveness: PatternEffectivenessSchema, + tip: external_exports.string().optional() +}); +var SignatureQuoteSchema = external_exports.object({ + utteranceId: external_exports.string(), + significance: external_exports.string(), + representedStrength: external_exports.string() +}); +var CommunicationPatternsOutputSchema = external_exports.object({ + // Communication Patterns + communicationPatterns: external_exports.array(CommunicationPatternSchema), + signatureQuotes: external_exports.array(SignatureQuoteSchema).optional(), + // Overall Scores + overallCommunicationScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var KnowledgeGapItemSchema = external_exports.object({ + topic: external_exports.string(), + description: external_exports.string(), + questionCount: external_exports.number().int().min(1), + depth: external_exports.enum(["shallow", "moderate", "deep"]), + example: external_exports.string() +}); +var LearningProgressSchema = external_exports.object({ + topic: external_exports.string(), + description: external_exports.string(), + startLevel: external_exports.enum(["novice", "shallow", "moderate", "deep", "expert"]), + currentLevel: external_exports.enum(["novice", "shallow", "moderate", "deep", "expert"]), + evidence: external_exports.string() +}); +var ResourceSchema = external_exports.object({ + topic: external_exports.string(), + resourceType: external_exports.enum(["docs", "tutorial", "course", "article", "video"]), + url: external_exports.string() +}); +var RepeatedMistakePatternSchema = external_exports.object({ + category: external_exports.string(), + mistakeType: external_exports.string(), + description: external_exports.string(), + occurrenceCount: external_exports.number().int().min(2), + sessionPercentage: external_exports.number().min(0).max(100).optional(), + exampleUtteranceIds: external_exports.array(external_exports.string()).max(5), + recommendation: external_exports.string() +}); +var LearningBehaviorOutputSchema = external_exports.object({ + // Knowledge Gap Dimension + knowledgeGaps: external_exports.array(KnowledgeGapItemSchema), + learningProgress: external_exports.array(LearningProgressSchema), + recommendedResources: external_exports.array(ResourceSchema), + // Repeated Mistakes Dimension + repeatedMistakePatterns: external_exports.array(RepeatedMistakePatternSchema), + // Insights + topInsights: external_exports.array(external_exports.string()).max(3), + kptKeep: external_exports.array(external_exports.string()).max(2).optional(), + kptProblem: external_exports.array(external_exports.string()).max(2).optional(), + kptTry: external_exports.array(external_exports.string()).max(2).optional(), + // Overall Scores + overallLearningScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var ContextUsagePatternSchema = external_exports.object({ + sessionId: external_exports.string(), + avgFillPercent: external_exports.number().min(0).max(100), + compactTriggerPercent: external_exports.number().min(0).max(100).optional() +}); +var InefficiencyPatternEnum = external_exports.enum([ + "late_compact", + "context_bloat", + "redundant_info", + "prompt_length_inflation", + "no_session_separation", + "verbose_error_pasting", + "no_knowledge_persistence" +]); +var InefficiencySchema = external_exports.object({ + pattern: InefficiencyPatternEnum, + frequency: external_exports.number().int().min(1), + impact: external_exports.enum(["high", "medium", "low"]), + description: external_exports.string() +}); +var PromptLengthTrendSchema = external_exports.object({ + phase: external_exports.enum(["early", "mid", "late"]), + avgLength: external_exports.number().int().min(0) +}); +var RedundantInfoSchema = external_exports.object({ + infoType: external_exports.string(), + repeatCount: external_exports.number().int().min(1) +}); +var IterationSummarySchema = external_exports.object({ + sessionId: external_exports.string(), + iterationCount: external_exports.number().int().min(0), + avgTurnsPerIteration: external_exports.number().min(0) +}); +var ContextEfficiencyOutputSchema = external_exports.object({ + // Context usage patterns + contextUsagePatterns: external_exports.array(ContextUsagePatternSchema), + inefficiencyPatterns: external_exports.array(InefficiencySchema), + promptLengthTrends: external_exports.array(PromptLengthTrendSchema), + redundantInfo: external_exports.array(RedundantInfoSchema), + // Insights + topInsights: external_exports.array(external_exports.string()).max(3), + kptKeep: external_exports.array(external_exports.string()).max(2).optional(), + kptProblem: external_exports.array(external_exports.string()).max(2).optional(), + kptTry: external_exports.array(external_exports.string()).max(2).optional(), + // Overall Scores + overallEfficiencyScore: external_exports.number().min(0).max(100), + avgContextFillPercent: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional(), + // Productivity metrics (consolidated from ProductivityAnalyst) + iterationSummaries: external_exports.array(IterationSummarySchema).optional(), + collaborationEfficiencyScore: external_exports.number().min(0).max(100).optional(), + overallProductivityScore: external_exports.number().min(0).max(100).optional(), + productivitySummary: external_exports.string().optional() +}); +var GoalCategoryEnum = external_exports.enum([ + "debug_investigate", + "implement_feature", + "fix_bug", + "refactor", + "write_tests", + "setup_config", + "documentation", + "review_feedback", + "exploration", + "quick_question", + "deploy_infra", + "dependency_management", + "performance_optimization", + "security_audit" +]); +var SessionTypeEnum = external_exports.enum([ + "single_task", + "multi_task", + "iterative_refinement", + "exploration", + "quick_question" +]); +var FrictionTypeEnum = external_exports.enum([ + "misunderstood_request", + "wrong_approach", + "buggy_code_generated", + "user_rejection", + "blocked_state", + "tool_failure", + "context_overflow", + "hallucination", + "incomplete_solution", + "excessive_iterations", + "permission_error", + "environment_mismatch" +]); +var OutcomeEnum = external_exports.enum([ + "fully_achieved", + "mostly_achieved", + "partially_achieved", + "not_achieved", + "unclear" +]); +var SatisfactionEnum = external_exports.enum([ + "frustrated", + "dissatisfied", + "neutral", + "satisfied", + "happy" +]); +var SessionAnalysisSchema = external_exports.object({ + sessionId: external_exports.string(), + primaryGoal: GoalCategoryEnum, + secondaryGoals: external_exports.array(GoalCategoryEnum).max(2).optional(), + sessionType: SessionTypeEnum, + outcome: OutcomeEnum, + satisfaction: SatisfactionEnum, + frictionTypes: external_exports.array(FrictionTypeEnum).max(3), + keyMoment: external_exports.string().optional() +}); +var GoalDistributionItemSchema = external_exports.object({ + goal: GoalCategoryEnum, + count: external_exports.number().int().min(1), + successRate: external_exports.number().min(0).max(100) +}); +var SessionTypeDistributionItemSchema = external_exports.object({ + type: SessionTypeEnum, + count: external_exports.number().int().min(1), + avgOutcomeScore: external_exports.number().min(0).max(100) +}); +var FrictionSummaryItemSchema = external_exports.object({ + type: FrictionTypeEnum, + count: external_exports.number().int().min(1), + impactLevel: external_exports.enum(["high", "medium", "low"]), + commonCause: external_exports.string(), + recommendation: external_exports.string() +}); +var SuccessPatternSchema = external_exports.object({ + pattern: external_exports.string(), + associatedGoals: external_exports.array(GoalCategoryEnum), + frequency: external_exports.number().min(0).max(100) +}); +var FailurePatternSchema = external_exports.object({ + pattern: external_exports.string(), + associatedFrictions: external_exports.array(FrictionTypeEnum), + frequency: external_exports.number().min(0).max(100) +}); +var SessionOutcomeOutputSchema = external_exports.object({ + // Per-Session Analysis + sessionAnalyses: external_exports.array(SessionAnalysisSchema), + // Aggregated Statistics + overallSuccessRate: external_exports.number().min(0).max(100), + goalDistribution: external_exports.array(GoalDistributionItemSchema), + sessionTypeDistribution: external_exports.array(SessionTypeDistributionItemSchema), + frictionSummary: external_exports.array(FrictionSummaryItemSchema), + // Pattern Analysis + successPatterns: external_exports.array(SuccessPatternSchema), + failurePatterns: external_exports.array(FailurePatternSchema), + // Overall Scores + overallOutcomeScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var AiPartnershipOutputSchema = external_exports.object({ + // Planning Dimension (from ThinkingQuality) + planningHabits: external_exports.array(PlanningHabitSchema), + planQualityScore: external_exports.number().min(0).max(100), + multitaskingPattern: MultitaskingPatternSchema.optional(), + // Critical Thinking Dimension (from ThinkingQuality) + verificationBehavior: VerificationBehaviorSchema, + criticalThinkingMoments: external_exports.array(CriticalThinkingMomentSchema), + verificationAntiPatterns: external_exports.array(DetectedAntiPatternSchema), + // AI Control Dimension (from SessionOutcome) + sessionAnalyses: external_exports.array(SessionAnalysisSchema), + overallSuccessRate: external_exports.number().min(0).max(100), + goalDistribution: external_exports.array(GoalDistributionItemSchema), + frictionSummary: external_exports.array(FrictionSummaryItemSchema), + // Overall Scores + overallAiPartnershipScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var SessionCraftOutputSchema = external_exports.object({ + // Context Efficiency Dimension + contextUsagePatterns: external_exports.array(ContextUsagePatternSchema), + inefficiencyPatterns: external_exports.array(InefficiencySchema), + promptLengthTrends: external_exports.array(PromptLengthTrendSchema), + avgContextFillPercent: external_exports.number().min(0).max(100), + // Burnout / Learning Dimension + repeatedMistakePatterns: external_exports.array(RepeatedMistakePatternSchema), + knowledgeGaps: external_exports.array(KnowledgeGapItemSchema), + // Insights + topInsights: external_exports.array(external_exports.string()).max(3), + // Overall Scores + overallSessionCraftScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); +var AbsenceIndicatorSchema = external_exports.object({ + /** Name of the anti-pattern being checked */ + pattern: external_exports.string(), + /** Whether the anti-pattern was observed */ + present: external_exports.boolean(), + /** Number of occurrences (0 = absent) */ + occurrenceCount: external_exports.number().int().min(0), + /** Total sessions checked */ + sessionsChecked: external_exports.number().int().min(1), + /** Score contribution: 0 (always present) to 100 (always absent) */ + absenceScore: external_exports.number().min(0).max(100), + /** Evidence of presence (empty if absent — which is good) */ + evidence: external_exports.array(EvidenceItemSchema), + /** + * Expert interpretation: + * - 'internalized': absence indicates mastery (skill no longer needs scaffolding) + * - 'not_applicable': pattern not relevant for this developer's workflow + * - 'concerning': absence may indicate gap (e.g., never verifies output) + */ + interpretation: external_exports.enum(["internalized", "not_applicable", "concerning"]) +}); +var SessionCleanlinessSchema = external_exports.object({ + sessionId: external_exports.string(), + cleanlinessScore: external_exports.number().min(0).max(100), + antiPatternCount: external_exports.number().int().min(0), + /** Indicates expert-level session control */ + isCleanSession: external_exports.boolean() +}); +var SessionMasteryOutputSchema = external_exports.object({ + // Absence Indicators + absenceIndicators: external_exports.array(AbsenceIndicatorSchema), + // Session Cleanliness + sessionCleanliness: external_exports.array(SessionCleanlinessSchema), + cleanSessionPercentage: external_exports.number().min(0).max(100), + // Expert Differentiation + scaffoldingDependencyScore: external_exports.number().min(0).max(100), + internalizedSkillSignals: external_exports.array(external_exports.string()), + expertBehaviorIndicators: external_exports.array(external_exports.string()), + // Overall Scores + overallSessionMasteryScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1), + summary: external_exports.string().optional(), + // Domain-specific Strengths & Growth Areas + strengths: external_exports.array(WorkerStrengthSchema).optional(), + growthAreas: external_exports.array(WorkerGrowthSchema).optional(), + referencedInsights: external_exports.array(ReferencedInsightSchema).optional() +}); + +// ../shared/dist/schemas/analysis-run.js +var ReportActivitySessionSchema = external_exports.object({ + sessionId: external_exports.string(), + projectName: external_exports.string(), + startTime: external_exports.string(), + durationMinutes: external_exports.number().min(0), + messageCount: external_exports.number().int().min(0), + summary: external_exports.string(), + totalInputTokens: external_exports.number().int().min(0).optional(), + totalOutputTokens: external_exports.number().int().min(0).optional() +}); +var CanonicalStageOutputsSchema = external_exports.object({ + sessionSummaries: SessionSummaryBatchSchema.optional(), + projectSummaries: ProjectSummaryBatchSchema.optional(), + weeklyInsights: WeeklyInsightsSchema.optional(), + typeClassification: TypeClassificationStageOutputSchema.optional(), + evidenceVerification: EvidenceVerificationOutputSchema.optional(), + contentWriter: ContentWriterOutputSchema.optional(), + translator: TranslatorOutputSchema.optional() +}); +var CanonicalEvaluationPayloadSchema = external_exports.record(external_exports.string(), external_exports.unknown()); +var CanonicalAnalysisRunSchema = external_exports.object({ + runId: external_exports.number().int().min(1), + analyzedAt: external_exports.string(), + phase1Output: Phase1OutputSchema, + activitySessions: external_exports.array(ReportActivitySessionSchema), + deterministicScores: DeterministicScoresSchema, + typeResult: DeterministicTypeResultSchema.nullable(), + domainResults: external_exports.array(DomainResultSchema), + stageOutputs: CanonicalStageOutputsSchema, + evaluation: CanonicalEvaluationPayloadSchema, + translation: TranslatorOutputSchema.optional(), + debug: external_exports.record(external_exports.string(), external_exports.unknown()).optional() +}); + +// ../shared/dist/evaluation/canonical-analysis.js +var DOMAIN_TO_EVALUATION_DIMENSION = { + thinkingQuality: "aiControl", + communicationPatterns: "aiCollaboration", + learningBehavior: "skillResilience", + contextEfficiency: "contextEngineering", + sessionOutcome: "burnoutRisk" +}; +function normalizeQuote(text) { + return text.replace(/\s+/g, " ").trim(); +} +function buildVerificationKey(utteranceId, quote) { + return `${utteranceId}::${normalizeQuote(quote)}`; +} +function isRecord(value) { + return !!value && typeof value === "object" && !Array.isArray(value); +} +function filterEvidence(evidence, verification) { + if (!verification?.verifiedResults?.length) { + return evidence; + } + const verifiedKeys = new Set(verification.verifiedResults.filter((item) => item.verified).map((item) => buildVerificationKey(item.utteranceId, item.quote))); + return evidence.filter((item) => { + if (!item || typeof item === "string") { + return false; + } + return verifiedKeys.has(buildVerificationKey(item.utteranceId, item.quote)); + }); +} +function applyEvidenceVerification(domainResults, verification) { + if (!verification?.verifiedResults?.length) { + return domainResults; + } + return domainResults.map((result) => ({ + ...result, + strengths: result.strengths.map((strength) => ({ + ...strength, + evidence: filterEvidence(strength.evidence, verification) + })).filter((strength) => strength.evidence.length > 0), + growthAreas: result.growthAreas.map((area) => ({ + ...area, + evidence: filterEvidence(area.evidence, verification) + })).filter((area) => area.evidence.length > 0) + })); +} +function buildSessionSummaryLookup(sessionSummaries) { + const lookup = /* @__PURE__ */ new Map(); + for (const item of sessionSummaries?.summaries ?? []) { + lookup.set(item.sessionId, item.summary); + } + return lookup; +} +function buildReportActivitySessions(phase1Output, sessionSummaries) { + const summaryLookup = buildSessionSummaryLookup(sessionSummaries); + return (phase1Output.activitySessions ?? []).map((session) => ({ + sessionId: session.sessionId, + projectName: session.projectName, + startTime: session.startTime, + durationMinutes: Math.round((session.durationSeconds ?? 0) / 60 * 10) / 10, + messageCount: session.messageCount, + summary: summaryLookup.get(session.sessionId) ?? session.firstUserMessage ?? "Session activity", + ...typeof session.totalInputTokens === "number" ? { totalInputTokens: session.totalInputTokens } : {}, + ...typeof session.totalOutputTokens === "number" ? { totalOutputTokens: session.totalOutputTokens } : {} + })); +} +function assembleFinalEvaluationEnvelope(args) { + const evaluation = { + sessionId: args.sessionId, + analyzedAt: args.analyzedAt, + sessionsAnalyzed: args.sessionsAnalyzed, + avgPromptLength: args.avgPromptLength, + avgTurnsPerSession: args.avgTurnsPerSession, + ...args.activitySessions !== void 0 ? { activitySessions: args.activitySessions } : {}, + ...args.sessionSummaries !== void 0 ? { sessionSummaries: args.sessionSummaries } : {}, + ...args.projectSummaries !== void 0 ? { projectSummaries: args.projectSummaries } : {}, + ...args.weeklyInsights !== void 0 ? { weeklyInsights: args.weeklyInsights } : {}, + ...args.assembledSections ?? {}, + ...args.agentOutputs !== void 0 ? { agentOutputs: args.agentOutputs } : {}, + ...args.translatedAgentInsights !== void 0 ? { translatedAgentInsights: args.translatedAgentInsights } : {}, + ...args.knowledgeResources !== void 0 ? { knowledgeResources: args.knowledgeResources } : {}, + ...args.pipelineTokenUsage !== void 0 ? { pipelineTokenUsage: args.pipelineTokenUsage } : {}, + ...args.analysisMetadata !== void 0 ? { analysisMetadata: args.analysisMetadata } : {} + }; + return evaluation; +} +function toPromptPatternFrequency(value) { + if (typeof value === "number") { + if (value >= 0.34) + return "frequent"; + if (value >= 0.12) + return "occasional"; + return "rare"; + } + if (typeof value === "string") { + if (value === "frequent" || value === "occasional" || value === "rare") { + return value; + } + if (value === "often" || value === "high") + return "frequent"; + if (value === "sometimes" || value === "medium") + return "occasional"; + } + return "occasional"; +} +function toPromptPatternEffectiveness(value) { + if (typeof value === "string") { + if (value === "highly_effective" || value === "effective" || value === "could_improve") { + return value; + } + if (value === "very_effective" || value === "high") + return "highly_effective"; + if (value === "medium" || value === "moderate") + return "effective"; + } + return "effective"; +} +function buildPromptPatterns(domainResults) { + const communication = domainResults.find((result) => result.domain === "communicationPatterns"); + const rawPatterns = communication?.data && typeof communication.data === "object" ? communication.data.communicationPatterns : void 0; + if (!Array.isArray(rawPatterns)) { + return []; + } + return rawPatterns.filter((pattern) => !!pattern && typeof pattern === "object").map((pattern, index) => { + const evidence = Array.isArray(pattern.evidence) ? pattern.evidence : []; + return { + patternName: typeof pattern.title === "string" ? pattern.title : typeof pattern.patternId === "string" ? pattern.patternId : `Pattern ${index + 1}`, + description: typeof pattern.description === "string" ? pattern.description : "", + frequency: toPromptPatternFrequency(pattern.frequency), + examples: evidence.filter((item) => !!item && typeof item === "object").map((item) => ({ + quote: typeof item.quote === "string" ? item.quote : "", + analysis: typeof item.context === "string" ? item.context : "Observed in communication behavior" + })).filter((item) => item.quote).slice(0, 3), + effectiveness: toPromptPatternEffectiveness(pattern.effectiveness) + }; + }).filter((pattern) => typeof pattern.description === "string" && pattern.description.length > 0); +} +function buildTopFocusAreas(contentWriter) { + if (!contentWriter?.topFocusAreas?.length) { + return void 0; + } + return { + summary: "Highest-leverage collaboration habits surfaced in this analysis.", + areas: contentWriter.topFocusAreas.slice(0, 3).map((area, index) => ({ + rank: index + 1, + dimension: DOMAIN_TO_EVALUATION_DIMENSION[area.relatedQualities[0] ?? ""] ?? "aiCollaboration", + title: area.title, + narrative: area.description, + expectedImpact: `Improves ${area.relatedQualities.join(", ") || "overall collaboration quality"}.`, + priorityScore: Math.max(100 - index * 10, 70), + ...area.actions ? { actions: area.actions } : {} + })) + }; +} +function inferWeekRange(activitySessions, analyzedAt) { + const end = activitySessions[0]?.startTime ?? analyzedAt; + const startDate = new Date(end); + startDate.setDate(startDate.getDate() - 6); + return { + start: startDate.toISOString(), + end + }; +} +function buildWeeklyInsights(weeklyInsights, activitySessions, analyzedAt) { + if (!weeklyInsights) { + return void 0; + } + const totalMinutes = weeklyInsights.stats.totalMinutes; + return { + weekRange: inferWeekRange(activitySessions, analyzedAt), + stats: { + totalSessions: weeklyInsights.stats.sessionCount, + totalMinutes, + totalTokens: weeklyInsights.stats.totalTokens, + activeDays: weeklyInsights.stats.activeDays, + avgSessionMinutes: weeklyInsights.stats.sessionCount > 0 ? Math.round(totalMinutes / weeklyInsights.stats.sessionCount * 10) / 10 : 0 + }, + ...typeof weeklyInsights.stats.deltaSessionCount === "number" || typeof weeklyInsights.stats.deltaMinutes === "number" || typeof weeklyInsights.stats.deltaTokens === "number" ? { + comparison: { + sessionsDelta: weeklyInsights.stats.deltaSessionCount ?? 0, + minutesDelta: weeklyInsights.stats.deltaMinutes ?? 0, + tokensDelta: weeklyInsights.stats.deltaTokens ?? 0, + activeDaysDelta: 0 + } + } : {}, + projects: weeklyInsights.projects.map((project) => ({ + projectName: project.projectName, + sessionCount: project.sessionCount, + totalMinutes: Math.round(totalMinutes * project.percentage / 100), + percentage: project.percentage + })), + topProjectSessions: weeklyInsights.topSessions.map((session) => { + const activity = activitySessions.find((item) => item.sessionId === session.sessionId); + return { + summary: session.summary, + durationMinutes: activity?.durationMinutes ?? 0, + date: activity?.startTime ? new Date(activity.startTime).toLocaleDateString("en-US", { month: "short", day: "numeric" }) : "" + }; + }), + narrative: weeklyInsights.narrative, + highlights: weeklyInsights.highlights + }; +} +function buildWorkerInsights(domainResults) { + const workerInsights = {}; + for (const result of domainResults) { + if (result.domain === "content") + continue; + workerInsights[result.domain] = { + strengths: result.strengths, + growthAreas: result.growthAreas, + domainScore: result.overallScore + }; + } + return workerInsights; +} +function formatDisplayName(type) { + return type.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" "); +} +function mapAntiPatternSeverity(severity) { + if (severity === "critical" || severity === "significant") + return "significant"; + if (severity === "mild") + return "mild"; + return "moderate"; +} +function buildAntiPatternsAnalysis(domainResults) { + const tq = domainResults.find((r) => r.domain === "thinkingQuality"); + const data = tq?.data; + const antiPatterns = data?.verificationAntiPatterns; + if (!Array.isArray(antiPatterns) || antiPatterns.length === 0) { + return void 0; + } + const detected = antiPatterns.filter((ap) => isRecord(ap)).map((ap) => { + const type = String(ap.type ?? "unknown"); + return { + antiPatternType: type, + displayName: formatDisplayName(type), + description: typeof ap.improvement === "string" ? ap.improvement : `Detected ${type.replace(/_/g, " ")} pattern`, + occurrences: typeof ap.frequency === "number" ? ap.frequency : 1, + severity: mapAntiPatternSeverity(ap.severity), + evidence: Array.isArray(ap.examples) ? ap.examples.filter((e) => isRecord(e)).map((e) => typeof e.quote === "string" ? e.quote : "").filter(Boolean) : [], + growthOpportunity: typeof ap.improvement === "string" ? ap.improvement : `Consider addressing the ${type.replace(/_/g, " ")} pattern`, + actionableTip: typeof ap.improvement === "string" ? ap.improvement : `Try to be more mindful of ${type.replace(/_/g, " ")} patterns` + }; + }); + return { + detected, + summary: typeof data?.summary === "string" ? data.summary : "Some growth opportunities were identified. These are common learning patterns that every developer experiences.", + overallHealthScore: tq?.overallScore ?? 80 + }; +} +function buildCriticalThinkingAnalysis(domainResults) { + const tq = domainResults.find((r) => r.domain === "thinkingQuality"); + const data = tq?.data; + const moments = data?.criticalThinkingMoments; + if (!Array.isArray(moments) || moments.length === 0) { + return void 0; + } + const strengths = moments.filter((ct) => isRecord(ct)).map((ct) => ({ + indicatorType: typeof ct.type === "string" ? ct.type : "unknown", + displayName: formatDisplayName(typeof ct.type === "string" ? ct.type : "unknown"), + description: typeof ct.result === "string" ? ct.result : `Demonstrated ${String(ct.type ?? "critical thinking").replace(/_/g, " ")}`, + frequency: 1, + quality: "intermediate", + evidence: typeof ct.quote === "string" ? [ct.quote] : [] + })); + const uniqueTypes = new Set(moments.filter((ct) => isRecord(ct)).map((ct) => ct.type)); + const overallScore = Math.min(100, 40 + uniqueTypes.size * 10 + moments.length * 5); + return { + strengths, + opportunities: [], + summary: typeof data?.summary === "string" ? data.summary : "Shows signs of critical evaluation when working with AI-generated content.", + overallScore + }; +} +function buildPlanningAnalysis(domainResults) { + const tq = domainResults.find((r) => r.domain === "thinkingQuality"); + const data = tq?.data; + const habits = data?.planningHabits; + if (!Array.isArray(habits) || habits.length === 0) { + return void 0; + } + const hasSlashPlan = habits.some((h) => isRecord(h) && h.type === "uses_plan_command"); + const hasTodoWrite = habits.some((h) => isRecord(h) && h.type === "todowrite_usage"); + const hasTaskDecomp = habits.some((h) => isRecord(h) && h.type === "task_decomposition"); + const maturityLevel = hasSlashPlan && hasTaskDecomp ? "expert" : hasSlashPlan ? "structured" : hasTodoWrite || hasTaskDecomp ? "emerging" : "reactive"; + const strengths = []; + const opportunities = []; + for (const habit of habits) { + if (!isRecord(habit)) + continue; + const type = typeof habit.type === "string" ? habit.type : "unknown"; + const frequency = typeof habit.frequency === "string" ? habit.frequency : "sometimes"; + const effectiveness = typeof habit.effectiveness === "string" ? habit.effectiveness : "medium"; + const insight = { + behaviorType: type, + displayName: formatDisplayName(type), + description: `Planning habit "${type.replace(/_/g, " ")}" observed with ${frequency} frequency`, + frequency: frequency === "always" || frequency === "often" ? 3 : frequency === "sometimes" ? 2 : 1, + sophistication: effectiveness === "high" ? "advanced" : effectiveness === "medium" ? "intermediate" : "basic", + evidence: Array.isArray(habit.examples) ? habit.examples : [] + }; + const isStrength = effectiveness === "high" || frequency === "always" || frequency === "often"; + if (isStrength) { + strengths.push(insight); + } else { + opportunities.push(insight); + } + } + return { + strengths, + opportunities, + summary: typeof data?.summary === "string" ? data.summary : "Shows planning awareness in development workflow.", + planningMaturityLevel: maturityLevel + }; +} +function normalizeInefficiencyPattern(value) { + if (value === "late_compact" || value === "context_bloat" || value === "redundant_info" || value === "prompt_length_inflation" || value === "no_session_separation" || value === "verbose_error_pasting" || value === "no_knowledge_persistence") { + return value; + } + if (value === "stale_context" || value === "context_spillover") { + return "context_bloat"; + } + return "context_bloat"; +} +function buildAgentOutputs(phase1Output, domainResults) { + const contextEfficiency = domainResults.find((result) => result.domain === "contextEfficiency"); + const patterns = contextEfficiency?.data && typeof contextEfficiency.data === "object" ? contextEfficiency.data.inefficiencyPatterns : void 0; + if (!contextEfficiency) { + return void 0; + } + const mappedPatterns = Array.isArray(patterns) ? patterns.filter((pattern) => isRecord(pattern)).map((pattern) => ({ + pattern: normalizeInefficiencyPattern(pattern.type ?? pattern.pattern), + frequency: typeof pattern.frequency === "number" ? Math.max(1, Math.round(pattern.frequency)) : 1, + impact: pattern.impact === "high" || pattern.impact === "low" ? pattern.impact : "medium", + description: typeof pattern.description === "string" ? pattern.description : `Observed ${String(pattern.type ?? pattern.pattern ?? "context issue")} behavior with ${String(pattern.impact ?? "medium")} impact.` + })) : []; + return { + efficiency: { + contextUsagePatterns: [], + inefficiencyPatterns: mappedPatterns, + promptLengthTrends: [], + redundantInfo: [], + topInsights: [], + overallEfficiencyScore: contextEfficiency.overallScore, + avgContextFillPercent: phase1Output.sessionMetrics.avgContextFillPercent ?? 0, + confidenceScore: contextEfficiency.confidenceScore, + strengths: contextEfficiency.strengths, + growthAreas: contextEfficiency.growthAreas + } + }; +} +function mergePromptPatternTranslations(evaluation, translatedFields) { + if (!Array.isArray(translatedFields.promptPatterns) || !Array.isArray(evaluation.promptPatterns)) { + return; + } + const translatedPatterns = translatedFields.promptPatterns; + const englishPatterns = evaluation.promptPatterns; + const minLength = Math.min(translatedPatterns.length, englishPatterns.length); + for (let i = 0; i < minLength; i += 1) { + const translated = translatedPatterns[i]; + const english = englishPatterns[i]; + if (typeof translated.patternName === "string") + english.patternName = translated.patternName; + if (typeof translated.description === "string") + english.description = translated.description; + if (typeof translated.tip === "string") + english.tip = translated.tip; + if (!Array.isArray(translated.examples) || !Array.isArray(english.examples)) { + continue; + } + const translatedExamples = translated.examples; + const englishExamples = english.examples; + const exampleCount = Math.min(translatedExamples.length, englishExamples.length); + for (let j = 0; j < exampleCount; j += 1) { + if (typeof translatedExamples[j]?.analysis === "string") { + englishExamples[j].analysis = translatedExamples[j].analysis; + } + } + } +} +function mergeTopFocusAreaTranslations(evaluation, translatedFields) { + if (!isRecord(translatedFields.topFocusAreas) || !isRecord(evaluation.topFocusAreas)) { + return; + } + const translated = translatedFields.topFocusAreas; + const english = evaluation.topFocusAreas; + if (typeof translated.summary === "string") { + english.summary = translated.summary; + } + if (!Array.isArray(translated.areas) || !Array.isArray(english.areas)) { + return; + } + const englishAreas = english.areas; + for (const translatedArea of translated.areas) { + const rank = typeof translatedArea.rank === "number" ? translatedArea.rank : null; + const englishArea = rank === null ? void 0 : englishAreas.find((area) => area.rank === rank); + if (!englishArea) + continue; + if (typeof translatedArea.title === "string") + englishArea.title = translatedArea.title; + if (typeof translatedArea.narrative === "string") + englishArea.narrative = translatedArea.narrative; + if (typeof translatedArea.expectedImpact === "string") { + englishArea.expectedImpact = translatedArea.expectedImpact; + } + if (!isRecord(translatedArea.actions) || !isRecord(englishArea.actions)) { + continue; + } + englishArea.actions = { + start: typeof translatedArea.actions.start === "string" ? translatedArea.actions.start : "", + stop: typeof translatedArea.actions.stop === "string" ? translatedArea.actions.stop : "", + continue: typeof translatedArea.actions.continue === "string" ? translatedArea.actions.continue : "" + }; + } +} +function mergeProjectSummaryTranslations(evaluation, translatedFields) { + if (!Array.isArray(translatedFields.projectSummaries) || !Array.isArray(evaluation.projectSummaries)) { + return; + } + const englishProjects = evaluation.projectSummaries; + for (const translatedProject of translatedFields.projectSummaries) { + const projectName = typeof translatedProject.projectName === "string" ? translatedProject.projectName : null; + const englishProject = projectName ? englishProjects.find((project) => project.projectName === projectName) : void 0; + if (!englishProject || !Array.isArray(translatedProject.summaryLines)) { + continue; + } + englishProject.summaryLines = translatedProject.summaryLines; + } +} +function mergeWeeklyInsightTranslations(evaluation, translatedFields) { + if (!isRecord(translatedFields.weeklyInsights) || !isRecord(evaluation.weeklyInsights)) { + return; + } + const translated = translatedFields.weeklyInsights; + const english = evaluation.weeklyInsights; + if (typeof translated.narrative === "string") { + english.narrative = translated.narrative; + } + if (Array.isArray(translated.highlights)) { + english.highlights = translated.highlights; + } + if (!Array.isArray(translated.topSessionSummaries) || !Array.isArray(english.topProjectSessions)) { + return; + } + const englishTopSessions = english.topProjectSessions; + const sessionCount = Math.min(translated.topSessionSummaries.length, englishTopSessions.length); + for (let i = 0; i < sessionCount; i += 1) { + if (typeof translated.topSessionSummaries[i] === "string") { + englishTopSessions[i].summary = translated.topSessionSummaries[i]; + } + } +} +function mergeTranslatedAgentInsights(evaluation, translatedFields) { + if (!isRecord(translatedFields.translatedAgentInsights)) { + return; + } + evaluation.translatedAgentInsights = translatedFields.translatedAgentInsights; +} +function mergeTranslatedEvaluationFields(evaluation, translatedFields, targetLanguage) { + const cjkLanguages = /* @__PURE__ */ new Set(["ko", "ja", "zh"]); + const minLengthRatio = targetLanguage && cjkLanguages.has(targetLanguage) ? 0.45 : 0.65; + if (typeof translatedFields.personalitySummary === "string") { + const englishSummary = typeof evaluation.personalitySummary === "string" ? evaluation.personalitySummary : ""; + const translatedSummary = translatedFields.personalitySummary; + const ratio = englishSummary.length > 0 ? translatedSummary.length / englishSummary.length : 1; + if (englishSummary.length === 0 || ratio >= minLengthRatio) { + evaluation.personalitySummary = translatedSummary; + } + } + mergeTranslatedAgentInsights(evaluation, translatedFields); + mergeProjectSummaryTranslations(evaluation, translatedFields); + mergeWeeklyInsightTranslations(evaluation, translatedFields); + mergePromptPatternTranslations(evaluation, translatedFields); + mergeTopFocusAreaTranslations(evaluation, translatedFields); +} +function mergeTranslation(evaluation, translator) { + if (!translator?.translatedFields || typeof translator.translatedFields !== "object") { + return; + } + mergeTranslatedEvaluationFields(evaluation, translator.translatedFields, translator.targetLanguage); +} +function buildCanonicalEvaluation(args) { + const { analyzedAt, phase1Output, activitySessions, deterministicScores, typeResult, domainResults, stageOutputs } = args; + const filteredDomainResults = applyEvidenceVerification(domainResults, stageOutputs.evidenceVerification); + const confidenceScores = filteredDomainResults.map((result) => result.confidenceScore).filter((score) => typeof score === "number"); + const overallConfidence = confidenceScores.length > 0 ? Math.round(confidenceScores.reduce((sum, score) => sum + score, 0) / confidenceScores.length * 100) / 100 : 0; + const filteredEvidenceCount = stageOutputs.evidenceVerification?.domainStats?.reduce((sum, stat2) => sum + stat2.filteredCount, 0) ?? 0; + const dataQuality = phase1Output.sessionMetrics.totalSessions >= 10 ? "high" : phase1Output.sessionMetrics.totalSessions >= 5 ? "medium" : "low"; + const agentOutputs = buildAgentOutputs(phase1Output, filteredDomainResults); + const antiPatterns = buildAntiPatternsAnalysis(filteredDomainResults); + const criticalThinking = buildCriticalThinkingAnalysis(filteredDomainResults); + const planning = buildPlanningAnalysis(filteredDomainResults); + const evaluation = assembleFinalEvaluationEnvelope({ + sessionId: activitySessions[0]?.sessionId ?? phase1Output.activitySessions?.[0]?.sessionId ?? "plugin-local-analysis", + analyzedAt, + sessionsAnalyzed: phase1Output.sessionMetrics.totalSessions, + avgPromptLength: Math.round(phase1Output.sessionMetrics.avgDeveloperMessageLength), + avgTurnsPerSession: Math.round(phase1Output.sessionMetrics.avgMessagesPerSession * 10) / 10, + activitySessions, + sessionSummaries: stageOutputs.sessionSummaries?.summaries, + projectSummaries: stageOutputs.projectSummaries?.projects, + weeklyInsights: buildWeeklyInsights(stageOutputs.weeklyInsights, activitySessions, analyzedAt), + assembledSections: { + primaryType: typeResult?.primaryType ?? "analyst", + controlLevel: typeResult?.controlLevel ?? "navigator", + ...typeof typeResult?.controlScore === "number" ? { controlScore: typeResult.controlScore } : {}, + distribution: typeResult?.distribution ?? { + architect: 20, + analyst: 20, + conductor: 20, + speedrunner: 20, + trendsetter: 20 + }, + personalitySummary: stageOutputs.typeClassification?.personalityNarrative?.join("\n\n") ?? stageOutputs.typeClassification?.reasoning?.join("\n\n") ?? "", + promptPatterns: buildPromptPatterns(filteredDomainResults), + topFocusAreas: buildTopFocusAreas(stageOutputs.contentWriter), + workerInsights: buildWorkerInsights(filteredDomainResults), + // Structured sub-analyses from thinkingQuality domain data (Fix 4) + ...antiPatterns ? { antiPatternsAnalysis: antiPatterns } : {}, + ...criticalThinking ? { criticalThinkingAnalysis: criticalThinking } : {}, + ...planning ? { planningAnalysis: planning } : {} + }, + agentOutputs, + pipelineTokenUsage: { + stages: [], + totals: { promptTokens: 0, completionTokens: 0, totalTokens: 0 }, + cost: { inputCost: 0, outputCost: 0, totalCost: 0 }, + model: "plugin-local", + modelName: "plugin-local" + }, + analysisMetadata: { + overallConfidence, + totalMessagesAnalyzed: phase1Output.sessionMetrics.totalMessages, + dataQuality, + analysisDateRange: phase1Output.sessionMetrics.dateRange, + confidenceThreshold: stageOutputs.evidenceVerification ? 0.5 : void 0, + insightsFiltered: filteredEvidenceCount, + deterministicScores, + evidenceVerification: stageOutputs.evidenceVerification ? { + threshold: stageOutputs.evidenceVerification.threshold, + domainStats: stageOutputs.evidenceVerification.domainStats + } : void 0 + } + }); + mergeTranslation(evaluation, stageOutputs.translator); + return evaluation; +} +function assembleCanonicalAnalysisRun(args) { + const activitySessions = buildReportActivitySessions(args.phase1Output, args.stageOutputs.sessionSummaries); + const evaluation = buildCanonicalEvaluation({ + analyzedAt: args.analyzedAt, + phase1Output: args.phase1Output, + activitySessions, + deterministicScores: args.deterministicScores, + typeResult: args.typeResult, + domainResults: args.domainResults, + stageOutputs: args.stageOutputs + }); + return { + runId: args.runId, + analyzedAt: args.analyzedAt, + phase1Output: args.phase1Output, + activitySessions, + deterministicScores: args.deterministicScores, + typeResult: args.typeResult, + domainResults: applyEvidenceVerification(args.domainResults, args.stageOutputs.evidenceVerification), + stageOutputs: args.stageOutputs, + evaluation, + ...args.stageOutputs.translator ? { translation: args.stageOutputs.translator } : {} + }; +} + +// ../shared/dist/scoring/deterministic-scorer.js +function clampScore(value, min = 0, max = 100) { + return Math.round(Math.max(min, Math.min(max, value))); +} +function invertedScale(value) { + return 100 - Math.max(0, Math.min(100, value)); +} +function bellCurveScore(value, optimalLow, optimalHigh, falloffRate = 0.01) { + if (value >= optimalLow && value <= optimalHigh) + return 100; + const distance = value < optimalLow ? optimalLow - value : value - optimalHigh; + return 100 * Math.exp(-falloffRate * distance * distance); +} +function coefficientOfVariation(values) { + if (values.length === 0) + return 0; + const mean = values.reduce((sum, v) => sum + v, 0) / values.length; + if (mean === 0) + return 0; + const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length; + return Math.sqrt(variance) / mean; +} +function scoreContextEfficiency(metrics) { + const avgFill = metrics.avgContextFillPercent ?? 50; + const totalSessions = Math.max(metrics.totalSessions, 1); + const baseScore = invertedScale(avgFill); + const overflowCount = metrics.contextFillExceeded90Count ?? 0; + const overflowRatio = overflowCount / totalSessions; + const overflowPenalty = overflowRatio * 30; + const slashCmds = metrics.slashCommandCounts ?? {}; + const compactCount = (slashCmds["compact"] ?? 0) + (slashCmds["clear"] ?? 0); + const compactionBonus = compactCount > 0 ? Math.min(compactCount * 3, 15) : 0; + const longSessionRatio = (metrics.sessionHints?.longSessions ?? 0) / totalSessions; + const longSessionPenalty = longSessionRatio * 10; + return clampScore(baseScore - overflowPenalty + compactionBonus - longSessionPenalty); +} +function scoreSessionOutcome(metrics) { + const totalSessions = Math.max(metrics.totalSessions, 1); + const friction = metrics.frictionSignals; + const toolFailures = friction?.toolFailureCount ?? 0; + const rejections = friction?.userRejectionSignals ?? 0; + const excessiveIterations = friction?.excessiveIterationSessions ?? 0; + const contextOverflows = friction?.contextOverflowSessions ?? 0; + const frustrationExpressions = friction?.frustrationExpressionCount ?? 0; + const totalFriction = toolFailures + rejections + excessiveIterations + contextOverflows + frustrationExpressions; + const frictionDensity = totalFriction / totalSessions; + const baseScore = 85 * Math.exp(-0.3 * frictionDensity); + const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0; + const mediumRatio = mediumSessions / totalSessions; + const balanceBonus = mediumRatio * 15; + const excessiveRatio = excessiveIterations / totalSessions; + const excessivePenalty = excessiveRatio * 10; + return clampScore(baseScore + balanceBonus - excessivePenalty); +} +function scoreThinkingQuality(metrics) { + const slashCmds = metrics.slashCommandCounts ?? {}; + const planCount = slashCmds["plan"] ?? 0; + const reviewCount = slashCmds["review"] ?? 0; + const planningActivityCount = planCount + reviewCount; + const planningScore = planningActivityCount > 0 ? 30 + 55 * (1 - Math.exp(-0.4 * planningActivityCount)) : 30; + const questionRatio = metrics.questionRatio; + const criticalThinkingFromQuestions = bellCurveScore(questionRatio * 100, 15, 40, 3e-3); + const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / Math.max(metrics.totalDeveloperUtterances, 1); + const criticalThinkingFromRejections = bellCurveScore(rejectionRate * 100, 2, 10, 5e-3); + const criticalThinkingScore = criticalThinkingFromQuestions * 0.6 + criticalThinkingFromRejections * 0.4; + const toolFailureRate = (metrics.frictionSignals?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1); + let errorRecoveryScore = 80 * Math.exp(-8 * toolFailureRate) + 20; + const errorChainMax = metrics.frictionSignals?.errorChainMaxLength ?? 0; + if (errorChainMax >= 3) { + const chainPenalty = Math.min((errorChainMax - 2) * 5, 30); + errorRecoveryScore = Math.max(0, errorRecoveryScore - chainPenalty); + } + return clampScore(planningScore * 0.4 + criticalThinkingScore * 0.3 + errorRecoveryScore * 0.3); +} +function scoreLearningBehavior(metrics) { + const totalSessions = Math.max(metrics.totalSessions, 1); + const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); + const questionScore = Math.min(metrics.questionRatio * 200, 100); + const insightCount = metrics.aiInsightBlockCount ?? 0; + const insightEngagement = insightCount > 0 ? 40 + 50 * (1 - Math.exp(-0.1 * insightCount)) : 40; + const learningIntentScore = questionScore * 0.6 + insightEngagement * 0.4; + const excessiveIterationRate = (metrics.frictionSignals?.excessiveIterationSessions ?? 0) / totalSessions; + const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances; + const combinedMistakeRate = excessiveIterationRate + bareRetryRate; + const mistakeScore = invertedScale(combinedMistakeRate * 100) * 0.8 + 20; + const codeExperimentation = Math.min(metrics.codeBlockRatio * 150, 100); + const slashCmds = metrics.slashCommandCounts ?? {}; + const uniqueCommands = Object.keys(slashCmds).length; + const diversityBonus = Math.min(uniqueCommands * 8, 40); + const experimentationScore = codeExperimentation * 0.6 + diversityBonus * 0.4 + 20; + return clampScore(learningIntentScore * 0.5 + mistakeScore * 0.3 + experimentationScore * 0.2); +} +function scoreCommunicationPatterns(metrics, phase1Output) { + const avgLen = metrics.avgDeveloperMessageLength; + const promptQualityScore = bellCurveScore(avgLen, 200, 500, 3e-5); + const codeStructure = Math.min(metrics.codeBlockRatio * 200, 100); + const questionStructure = Math.min(metrics.questionRatio * 250, 100); + const structureScore = codeStructure * 0.5 + questionStructure * 0.5; + const wordCounts = phase1Output.developerUtterances.map((u) => u.wordCount); + const cv = coefficientOfVariation(wordCounts); + const consistencyScore = 100 * Math.exp(-0.3 * cv); + return clampScore(promptQualityScore * 0.4 + structureScore * 0.3 + consistencyScore * 0.3); +} +function scoreControl(metrics) { + const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); + const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / totalUtterances; + const rejectionSignal = Math.min(rejectionRate * 500, 100); + const questionSignal = Math.min(metrics.questionRatio * 200, 100); + const avgLen = metrics.avgDeveloperMessageLength; + const lengthSignal = Math.min(avgLen / 5, 100); + const slashCmds = metrics.slashCommandCounts ?? {}; + const uniqueCommands = Object.keys(slashCmds).length; + const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0); + const commandSignal = Math.min(uniqueCommands * 10 + totalCommands * 2, 100); + return clampScore(rejectionSignal * 0.25 + questionSignal * 0.25 + lengthSignal * 0.25 + commandSignal * 0.25); +} +function scoreAiPartnership(metrics) { + const thinking = scoreThinkingQuality(metrics); + const outcome = scoreSessionOutcome(metrics); + const control = scoreControl(metrics); + return clampScore(thinking * 0.4 + outcome * 0.35 + control * 0.25); +} +function scoreSessionCraft(metrics) { + const efficiency = scoreContextEfficiency(metrics); + const learning = scoreLearningBehavior(metrics); + return clampScore(efficiency * 0.55 + learning * 0.45); +} +function scoreSkillResilience(metrics) { + const totalSessions = Math.max(metrics.totalSessions, 1); + const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); + const shortSessions = metrics.sessionHints?.shortSessions ?? 0; + const shortRatio = shortSessions / totalSessions; + const coldStartScore = bellCurveScore(shortRatio * 100, 20, 50, 3e-3); + const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances; + const recoveryScore = invertedScale(bareRetryRate * 200); + const slashCmds = metrics.slashCommandCounts ?? {}; + const uniqueCommands = Object.keys(slashCmds).length; + const diversityScore = Math.min(uniqueCommands * 12 + 20, 100); + return clampScore(coldStartScore * 0.3 + recoveryScore * 0.4 + diversityScore * 0.3); +} +function scoreSessionMastery(metrics) { + const totalSessions = Math.max(metrics.totalSessions, 1); + const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1); + const friction = metrics.frictionSignals; + const excessiveIterationRate = (friction?.excessiveIterationSessions ?? 0) / totalSessions; + const noExcessiveScore = invertedScale(excessiveIterationRate * 150); + const overflowRate = (metrics.contextFillExceeded90Count ?? 0) / totalSessions; + const noOverflowScore = invertedScale(overflowRate * 120); + const bareRetryRate = (friction?.bareRetryAfterErrorCount ?? 0) / totalUtterances; + const noRetryScore = invertedScale(bareRetryRate * 300); + const frustrationRate = (friction?.frustrationExpressionCount ?? 0) / totalUtterances; + const noFrustrationScore = invertedScale(frustrationRate * 400); + const toolFailureRate = (friction?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1); + const noToolFailureScore = invertedScale(toolFailureRate * 200); + const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0; + const focusBonus = mediumSessions / totalSessions * 15; + return clampScore(noExcessiveScore * 0.25 + noOverflowScore * 0.2 + noRetryScore * 0.2 + noFrustrationScore * 0.15 + noToolFailureScore * 0.1 + focusBonus + 10); +} +function computeDeterministicScores(phase1Output) { + const metrics = phase1Output.sessionMetrics; + return { + aiPartnership: scoreAiPartnership(metrics), + sessionCraft: scoreSessionCraft(metrics), + toolMastery: scoreCommunicationPatterns(metrics, phase1Output), + skillResilience: scoreSkillResilience(metrics), + sessionMastery: scoreSessionMastery(metrics), + controlScore: scoreControl(metrics) + }; +} + +// ../shared/dist/constants.js +var CONTEXT_WINDOW_SIZE = 2e5; +var MATRIX_NAMES = { + architect: { + explorer: "Visionary", + navigator: "Strategist", + cartographer: "Systems Architect" + }, + analyst: { + explorer: "Questioner", + navigator: "Research Lead", + cartographer: "Quality Sentinel" + }, + conductor: { + explorer: "Improviser", + navigator: "Arranger", + cartographer: "Maestro" + }, + speedrunner: { + explorer: "Experimenter", + navigator: "Rapid Prototyper", + cartographer: "Velocity Expert" + }, + trendsetter: { + explorer: "Early Adopter", + navigator: "Tech Radar", + cartographer: "Innovation Lead" + } +}; +var MATRIX_METADATA = { + architect: { + explorer: { emoji: "\u{1F4AD}" }, + navigator: { emoji: "\u{1F4D0}" }, + cartographer: { emoji: "\u{1F3DB}\uFE0F" } + }, + analyst: { + explorer: { emoji: "\u{1F50E}" }, + navigator: { emoji: "\u{1F9EA}" }, + cartographer: { emoji: "\u{1F52C}" } + }, + conductor: { + explorer: { emoji: "\u{1F3B5}" }, + navigator: { emoji: "\u{1F3BC}" }, + cartographer: { emoji: "\u{1F3B9}" } + }, + speedrunner: { + explorer: { emoji: "\u{1F3B2}" }, + navigator: { emoji: "\u{1F3C3}" }, + cartographer: { emoji: "\u26A1" } + }, + trendsetter: { + explorer: { emoji: "\u{1F331}" }, + navigator: { emoji: "\u{1F4E1}" }, + cartographer: { emoji: "\u{1F680}" } + } +}; + +// ../shared/dist/scoring/deterministic-type-mapper.js +var TREND_KEYWORDS_KO = ["\uCD5C\uC2E0", "\uD2B8\uB80C\uB4DC", "\uC720\uD589", "\uC0C8\uB85C\uC6B4", "\uC5C5\uB370\uC774\uD2B8\uB41C", "\uC694\uC998"]; +var TREND_KEYWORDS_EN = ["latest", "newest", "trending", "modern", "up-to-date", "best practice", "current version", "recently released"]; +var ALL_TREND_KEYWORDS = [...TREND_KEYWORDS_KO, ...TREND_KEYWORDS_EN]; +function computeTrendDensity(phase1Output) { + const utterances = phase1Output.developerUtterances; + if (utterances.length === 0) + return 0; + let totalMatches = 0; + for (const utterance of utterances) { + const text = (utterance.displayText || utterance.text).toLowerCase(); + for (const keyword of ALL_TREND_KEYWORDS) { + const regex = new RegExp(keyword.toLowerCase(), "g"); + const matches = text.match(regex); + if (matches) + totalMatches += matches.length; + } + } + return totalMatches / utterances.length * 100; +} +var STYLE_TYPES = ["architect", "analyst", "conductor", "speedrunner", "trendsetter"]; +function computeAffinities(scores, metrics, trendDensity) { + const slashCmds = metrics.slashCommandCounts ?? {}; + const planCount = (slashCmds["plan"] ?? 0) + (slashCmds["review"] ?? 0); + const planBonus = planCount > 0 ? Math.min(planCount * 8, 30) : 0; + const architectAffinity = scores.aiPartnership * 0.5 + scores.controlScore * 0.3 + planBonus; + const analystAffinity = scores.aiPartnership * 0.3 + scores.sessionCraft * 0.4 + scores.sessionMastery * 0.2 + (metrics.questionRatio > 0.2 ? 10 : 0); + const uniqueCommands = Object.keys(slashCmds).length; + const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0); + const orchestrationCmds = (slashCmds["sisyphus"] ?? 0) + (slashCmds["orchestrator"] ?? 0) + (slashCmds["ultrawork"] ?? 0) + (slashCmds["ralph-loop"] ?? 0); + const commandDiversityScore = Math.min(uniqueCommands * 12, 60); + const commandVolumeScore = Math.min(totalCommands * 2, 30); + const orchestrationBonus = orchestrationCmds > 0 ? Math.min(orchestrationCmds * 10, 30) : 0; + const conductorAffinity = commandDiversityScore + commandVolumeScore + orchestrationBonus; + const avgLen = metrics.avgDeveloperMessageLength; + const concisenessScore = avgLen < 200 ? 40 : avgLen < 400 ? 25 : 10; + const speedrunnerAffinity = scores.sessionCraft * 0.5 + concisenessScore + (scores.sessionMastery > 70 ? 15 : 0); + const trendKeywordScore = trendDensity > 3 ? Math.min(trendDensity * 15, 60) : trendDensity * 5; + const learningCuriosityBonus = scores.sessionCraft > 70 ? 15 : 0; + const trendsetterAffinity = trendKeywordScore + learningCuriosityBonus; + return { + architect: architectAffinity, + analyst: analystAffinity, + conductor: conductorAffinity, + speedrunner: speedrunnerAffinity, + trendsetter: trendsetterAffinity + }; +} +function normalizeToDistribution(affinities) { + const MIN_PERCENT = 5; + const totalAffinity = STYLE_TYPES.reduce((sum2, t) => sum2 + Math.max(affinities[t], 0), 0); + if (totalAffinity === 0) { + return { architect: 20, analyst: 20, conductor: 20, speedrunner: 20, trendsetter: 20 }; + } + const raw = {}; + for (const type of STYLE_TYPES) { + raw[type] = Math.max(affinities[type] / totalAffinity * 100, 0); + } + let totalBelow = 0; + let totalAbove = 0; + const aboveTypes = []; + for (const type of STYLE_TYPES) { + if (raw[type] < MIN_PERCENT) { + totalBelow += MIN_PERCENT - raw[type]; + raw[type] = MIN_PERCENT; + } else { + totalAbove += raw[type]; + aboveTypes.push(type); + } + } + if (totalBelow > 0 && totalAbove > 0) { + for (const type of aboveTypes) { + raw[type] -= totalBelow * (raw[type] / totalAbove); + } + } + const result = {}; + let sum = 0; + for (const type of STYLE_TYPES) { + result[type] = Math.round(raw[type]); + sum += result[type]; + } + if (sum !== 100) { + const maxType = STYLE_TYPES.reduce((a, b) => result[a] >= result[b] ? a : b); + result[maxType] += 100 - sum; + } + return result; +} +function controlLevelFromScore(score) { + if (score <= 34) + return "explorer"; + if (score <= 64) + return "navigator"; + return "cartographer"; +} +function computeDeterministicType(scores, phase1Output) { + const metrics = phase1Output.sessionMetrics; + const trendDensity = computeTrendDensity(phase1Output); + const affinities = computeAffinities(scores, metrics, trendDensity); + const distribution = normalizeToDistribution(affinities); + const primaryType = STYLE_TYPES.reduce((a, b) => affinities[a] >= affinities[b] ? a : b); + const controlLevel = controlLevelFromScore(scores.controlScore); + const matrixName = MATRIX_NAMES[primaryType][controlLevel]; + const matrixEmoji = MATRIX_METADATA[primaryType][controlLevel].emoji; + return { + primaryType, + distribution, + controlLevel, + controlScore: scores.controlScore, + matrixName, + matrixEmoji + }; +} + +// lib/core/session-scanner.ts +import { readFile, readdir, stat, mkdir, writeFile } from "fs/promises"; +import { join, basename } from "path"; +import { homedir } from "os"; + +// lib/core/types.ts +var TextBlockSchema = external_exports.object({ + type: external_exports.literal("text"), + text: external_exports.string() +}); +var ToolUseBlockSchema = external_exports.object({ + type: external_exports.literal("tool_use"), + id: external_exports.string(), + name: external_exports.string(), + input: external_exports.record(external_exports.string(), external_exports.unknown()) +}); +var ToolResultBlockSchema = external_exports.object({ + type: external_exports.literal("tool_result"), + tool_use_id: external_exports.string(), + content: external_exports.union([external_exports.string(), external_exports.array(external_exports.unknown())]), + is_error: external_exports.boolean().optional() +}); +var ContentBlockSchema = external_exports.union([ + TextBlockSchema, + ToolUseBlockSchema, + ToolResultBlockSchema +]); +var TokenUsageSchema = external_exports.object({ + input_tokens: external_exports.number(), + output_tokens: external_exports.number(), + cache_creation_input_tokens: external_exports.number().optional(), + cache_read_input_tokens: external_exports.number().optional(), + cache_creation: external_exports.object({ + ephemeral_5m_input_tokens: external_exports.number(), + ephemeral_1h_input_tokens: external_exports.number() + }).optional(), + service_tier: external_exports.string().optional() +}); +var UserMessageSchema = external_exports.object({ + type: external_exports.literal("user"), + sessionId: external_exports.string(), + timestamp: external_exports.string(), + uuid: external_exports.string(), + parentUuid: external_exports.string().nullable(), + cwd: external_exports.string().optional(), + version: external_exports.string().optional(), + gitBranch: external_exports.string().optional(), + userType: external_exports.string().optional(), + isSidechain: external_exports.boolean().optional(), + message: external_exports.object({ + role: external_exports.literal("user"), + content: external_exports.union([external_exports.string(), external_exports.array(ContentBlockSchema)]) + }) +}); +var AssistantMessageSchema = external_exports.object({ + type: external_exports.literal("assistant"), + sessionId: external_exports.string(), + timestamp: external_exports.string(), + uuid: external_exports.string(), + parentUuid: external_exports.string().nullable(), + isSidechain: external_exports.boolean().optional(), + message: external_exports.object({ + id: external_exports.string().optional(), + role: external_exports.literal("assistant"), + content: external_exports.array(ContentBlockSchema), + model: external_exports.string().optional(), + stop_reason: external_exports.string().optional(), + usage: TokenUsageSchema.optional() + }) +}); +var JSONLLineSchema = external_exports.discriminatedUnion("type", [ + UserMessageSchema, + AssistantMessageSchema, + // Queue operations and file history are parsed but not analyzed + external_exports.object({ type: external_exports.literal("queue-operation"), timestamp: external_exports.string() }).passthrough(), + external_exports.object({ type: external_exports.literal("file-history-snapshot"), timestamp: external_exports.string() }).passthrough() +]); + +// lib/core/session-scanner.ts +function getPluginDataDir() { + return join(homedir(), ".betterprompt"); +} +function getScanCacheDir() { + return join(getPluginDataDir(), "scan-cache"); +} + +export { + external_exports, + DomainStrengthSchema, + DomainGrowthAreaSchema, + STAGE_NAMES, + STAGE_SCHEMAS, + MultitaskingPatternSchema, + buildReportActivitySessions, + assembleCanonicalAnalysisRun, + computeDeterministicScores, + CONTEXT_WINDOW_SIZE, + computeDeterministicType, + getPluginDataDir, + getScanCacheDir +}; +//# sourceMappingURL=chunk-UORQZYNI.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-UORQZYNI.js.map b/packages/plugin/dist/chunk-UORQZYNI.js.map new file mode 100644 index 00000000..e60101ed --- /dev/null +++ b/packages/plugin/dist/chunk-UORQZYNI.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/zod/v4/classic/external.js","../../../node_modules/zod/v4/core/index.js","../../../node_modules/zod/v4/core/core.js","../../../node_modules/zod/v4/core/util.js","../../../node_modules/zod/v4/core/errors.js","../../../node_modules/zod/v4/core/parse.js","../../../node_modules/zod/v4/core/regexes.js","../../../node_modules/zod/v4/core/checks.js","../../../node_modules/zod/v4/core/doc.js","../../../node_modules/zod/v4/core/versions.js","../../../node_modules/zod/v4/core/schemas.js","../../../node_modules/zod/v4/locales/index.js","../../../node_modules/zod/v4/locales/ar.js","../../../node_modules/zod/v4/locales/az.js","../../../node_modules/zod/v4/locales/be.js","../../../node_modules/zod/v4/locales/bg.js","../../../node_modules/zod/v4/locales/ca.js","../../../node_modules/zod/v4/locales/cs.js","../../../node_modules/zod/v4/locales/da.js","../../../node_modules/zod/v4/locales/de.js","../../../node_modules/zod/v4/locales/en.js","../../../node_modules/zod/v4/locales/eo.js","../../../node_modules/zod/v4/locales/es.js","../../../node_modules/zod/v4/locales/fa.js","../../../node_modules/zod/v4/locales/fi.js","../../../node_modules/zod/v4/locales/fr.js","../../../node_modules/zod/v4/locales/fr-CA.js","../../../node_modules/zod/v4/locales/he.js","../../../node_modules/zod/v4/locales/hu.js","../../../node_modules/zod/v4/locales/hy.js","../../../node_modules/zod/v4/locales/id.js","../../../node_modules/zod/v4/locales/is.js","../../../node_modules/zod/v4/locales/it.js","../../../node_modules/zod/v4/locales/ja.js","../../../node_modules/zod/v4/locales/ka.js","../../../node_modules/zod/v4/locales/km.js","../../../node_modules/zod/v4/locales/kh.js","../../../node_modules/zod/v4/locales/ko.js","../../../node_modules/zod/v4/locales/lt.js","../../../node_modules/zod/v4/locales/mk.js","../../../node_modules/zod/v4/locales/ms.js","../../../node_modules/zod/v4/locales/nl.js","../../../node_modules/zod/v4/locales/no.js","../../../node_modules/zod/v4/locales/ota.js","../../../node_modules/zod/v4/locales/ps.js","../../../node_modules/zod/v4/locales/pl.js","../../../node_modules/zod/v4/locales/pt.js","../../../node_modules/zod/v4/locales/ru.js","../../../node_modules/zod/v4/locales/sl.js","../../../node_modules/zod/v4/locales/sv.js","../../../node_modules/zod/v4/locales/ta.js","../../../node_modules/zod/v4/locales/th.js","../../../node_modules/zod/v4/locales/tr.js","../../../node_modules/zod/v4/locales/uk.js","../../../node_modules/zod/v4/locales/ua.js","../../../node_modules/zod/v4/locales/ur.js","../../../node_modules/zod/v4/locales/uz.js","../../../node_modules/zod/v4/locales/vi.js","../../../node_modules/zod/v4/locales/zh-CN.js","../../../node_modules/zod/v4/locales/zh-TW.js","../../../node_modules/zod/v4/locales/yo.js","../../../node_modules/zod/v4/core/registries.js","../../../node_modules/zod/v4/core/api.js","../../../node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/zod/v4/core/json-schema-generator.js","../../../node_modules/zod/v4/core/json-schema.js","../../../node_modules/zod/v4/classic/schemas.js","../../../node_modules/zod/v4/classic/checks.js","../../../node_modules/zod/v4/classic/iso.js","../../../node_modules/zod/v4/classic/errors.js","../../../node_modules/zod/v4/classic/parse.js","../../../node_modules/zod/v4/classic/compat.js","../../../node_modules/zod/v4/classic/from-json-schema.js","../../../node_modules/zod/v4/classic/coerce.js","../../shared/src/schemas/session.ts","../../shared/src/schemas/phase1-output.ts","../../shared/src/schemas/deterministic-scores.ts","../../shared/src/schemas/domain-result.ts","../../shared/src/schemas/stage-outputs.ts","../../shared/src/schemas/worker-outputs.ts","../../shared/src/schemas/analysis-run.ts","../../shared/src/evaluation/canonical-analysis.ts","../../shared/src/scoring/deterministic-scorer.ts","../../shared/src/constants.ts","../../shared/src/scoring/deterministic-type-mapper.ts","../lib/core/session-scanner.ts","../lib/core/types.ts"],"sourcesContent":["export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext(inputs: JSONSchemaGeneratorParams): ToJSONSchemaContext {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n","export {};\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","/**\n * Parsed Session Schemas\n *\n * Canonical schemas for fully parsed session transcripts used by the plugin's\n * Phase 1 artifact. These preserve the full transcript surface needed for\n * evidence lookup, activity rendering, and multi-source parity.\n *\n * @module @betterprompt/shared/schemas/session\n */\n\nimport { z } from 'zod';\n\nexport const ToolCallSchema = z.object({\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()),\n result: z.string().optional(),\n isError: z.boolean().optional(),\n});\nexport type ToolCall = z.infer;\n\nexport const ParsedMessageSchema = z.object({\n uuid: z.string(),\n role: z.enum(['user', 'assistant']),\n timestamp: z.string(),\n content: z.string(),\n isMeta: z.boolean().optional(),\n sourceToolUseID: z.string().optional(),\n toolUseResult: z.unknown().optional(),\n toolCalls: z.array(ToolCallSchema).optional(),\n tokenUsage: z.object({\n input: z.number().int().min(0),\n output: z.number().int().min(0),\n }).optional(),\n});\nexport type ParsedMessage = z.infer;\n\nexport const SessionStatsSchema = z.object({\n userMessageCount: z.number().int().min(0),\n assistantMessageCount: z.number().int().min(0),\n toolCallCount: z.number().int().min(0),\n uniqueToolsUsed: z.array(z.string()),\n totalInputTokens: z.number().int().min(0),\n totalOutputTokens: z.number().int().min(0),\n});\nexport type SessionStats = z.infer;\n\nexport const SessionSourceTypeSchema = z.enum([\n 'claude-code',\n 'cursor',\n 'cursor-composer',\n]);\nexport type SessionSourceType = z.infer;\n\nexport const ParsedSessionSchema = z.object({\n sessionId: z.string(),\n projectPath: z.string(),\n projectName: z.string().optional(),\n startTime: z.string(),\n endTime: z.string(),\n durationSeconds: z.number().min(0),\n claudeCodeVersion: z.string(),\n messages: z.array(ParsedMessageSchema),\n stats: SessionStatsSchema,\n source: SessionSourceTypeSchema.optional(),\n});\nexport type ParsedSession = z.infer;\n","/**\n * Phase 1 Output Schemas - Pure Extraction Types\n *\n * Canonical Zod schemas for Phase 1 deterministic extraction output.\n * Used by both the plugin (MCP tools) and server (analysis pipeline).\n *\n * Phase 1 extracts raw text and structural metadata from sessions.\n * It does NOT perform any semantic analysis (that's Phase 2).\n *\n * @module @betterprompt/shared/schemas/phase1-output\n */\n\nimport { z } from 'zod';\nimport { ParsedSessionSchema } from './session.js';\n\n// ============================================================================\n// AI Insight Block Schema\n// ============================================================================\n\nexport const AIInsightBlockSchema = z.object({\n sessionId: z.string(),\n turnIndex: z.number().int().min(0),\n content: z.string(),\n triggeringUtteranceId: z.string().optional(),\n});\nexport type AIInsightBlock = z.infer;\n\n// ============================================================================\n// Natural Language Segment Schema\n// ============================================================================\n\nexport const NaturalLanguageSegmentSchema = z.object({\n start: z.number().int().min(0),\n end: z.number().int().min(0),\n text: z.string(),\n});\nexport type NaturalLanguageSegment = z.infer;\n\n// ============================================================================\n// User Utterance Schema\n// ============================================================================\n\nexport const UserUtteranceSchema = z.object({\n id: z.string(),\n text: z.string(),\n displayText: z.string().optional(),\n naturalLanguageSegments: z.array(NaturalLanguageSegmentSchema).optional(),\n timestamp: z.string(),\n sessionId: z.string(),\n turnIndex: z.number().int().min(0),\n characterCount: z.number().int().min(0),\n wordCount: z.number().int().min(0),\n hasCodeBlock: z.boolean(),\n hasQuestion: z.boolean(),\n isSessionStart: z.boolean().optional(),\n isContinuation: z.boolean().optional(),\n machineContentRatio: z.number().min(0).max(1).optional(),\n precedingAIToolCalls: z.array(z.string()).optional(),\n precedingAIHadError: z.boolean().optional(),\n});\nexport type UserUtterance = z.infer;\n\n// ============================================================================\n// Friction Signals Schema\n// ============================================================================\n\nexport const FrictionSignalsSchema = z.object({\n toolFailureCount: z.number().int().min(0),\n userRejectionSignals: z.number().int().min(0),\n excessiveIterationSessions: z.number().int().min(0),\n contextOverflowSessions: z.number().int().min(0),\n frustrationExpressionCount: z.number().int().min(0),\n repeatedToolErrorPatterns: z.number().int().min(0),\n bareRetryAfterErrorCount: z.number().int().min(0),\n errorChainMaxLength: z.number().int().min(0),\n});\nexport type FrictionSignals = z.infer;\n\n// ============================================================================\n// Session Hints Schema\n// ============================================================================\n\nexport const SessionHintsSchema = z.object({\n avgTurnsPerSession: z.number().min(0),\n shortSessions: z.number().int().min(0),\n mediumSessions: z.number().int().min(0),\n longSessions: z.number().int().min(0),\n});\nexport type SessionHints = z.infer;\n\n// ============================================================================\n// Phase 1 Session Metrics Schema\n// ============================================================================\n\nexport const Phase1SessionMetricsSchema = z.object({\n totalSessions: z.number().int().min(0),\n totalMessages: z.number().int().min(0),\n totalDeveloperUtterances: z.number().int().min(0),\n totalAIResponses: z.number().int().min(0),\n avgMessagesPerSession: z.number(),\n avgDeveloperMessageLength: z.number(),\n questionRatio: z.number().min(0).max(1),\n codeBlockRatio: z.number().min(0).max(1),\n dateRange: z.object({\n earliest: z.string(),\n latest: z.string(),\n }),\n slashCommandCounts: z.record(z.string(), z.number()).optional(),\n avgContextFillPercent: z.number().min(0).max(100).optional(),\n maxContextFillPercent: z.number().min(0).max(100).optional(),\n contextFillExceeded90Count: z.number().int().min(0).optional(),\n frictionSignals: FrictionSignalsSchema.optional(),\n sessionHints: SessionHintsSchema.optional(),\n aiInsightBlockCount: z.number().int().min(0).optional(),\n});\nexport type Phase1SessionMetrics = z.infer;\n\n// ============================================================================\n// Activity Session Schema (per-session metadata for Phase 1.5/2 stages)\n// ============================================================================\n\n/**\n * Per-session metadata emitted alongside aggregate metrics.\n * Required by downstream stages:\n * - SessionSummarizer (Phase 1.5): needs sessionId, projectName, messageCount\n * - ProjectSummarizer (Phase 2): groups by projectName\n * - WeeklyInsightGenerator (Phase 2): needs timestamps, durations, token totals\n */\nexport const ActivitySessionSchema = z.object({\n sessionId: z.string(),\n projectName: z.string(),\n projectPath: z.string().optional(),\n startTime: z.string(),\n durationSeconds: z.number().min(0),\n messageCount: z.number().int().min(0),\n userMessageCount: z.number().int().min(0),\n assistantMessageCount: z.number().int().min(0),\n totalInputTokens: z.number().int().min(0),\n totalOutputTokens: z.number().int().min(0),\n /** First user message text (truncated to 200 chars) for summary context */\n firstUserMessage: z.string().optional(),\n});\nexport type ActivitySession = z.infer;\n\n// ============================================================================\n// Complete Phase 1 Output Schema\n// ============================================================================\n\nexport const Phase1OutputSchema = z.object({\n developerUtterances: z.array(UserUtteranceSchema),\n sessionMetrics: Phase1SessionMetricsSchema,\n aiInsightBlocks: z.array(AIInsightBlockSchema).optional(),\n /** Per-session metadata for Phase 1.5/2 stages */\n activitySessions: z.array(ActivitySessionSchema).optional(),\n /** Full parsed sessions preserved for downstream evidence and parity needs */\n sessions: z.array(ParsedSessionSchema).optional(),\n skippedFiles: z.number().optional(),\n});\nexport type Phase1Output = z.infer;\n","/**\n * Deterministic Scoring Schemas\n *\n * Canonical types for rubric-based scoring and developer type classification.\n * These are deterministic (same input = same output, no LLM involved).\n *\n * @module @betterprompt/shared/schemas/deterministic-scores\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Deterministic Scores\n// ============================================================================\n\n/**\n * 5-dimension deterministic scores (v2).\n * - aiPartnership: merged thinkingQuality + controlScore\n * - sessionCraft: merged contextEfficiency + learningBehavior (burnout)\n * - toolMastery: communication/tool patterns\n * - skillResilience: cold-start, hallucination detection, VCP\n * - sessionMastery: absence-of-anti-pattern scoring\n * - controlScore: retained for type classification\n */\nexport const DeterministicScoresSchema = z.object({\n aiPartnership: z.number().min(0).max(100),\n sessionCraft: z.number().min(0).max(100),\n toolMastery: z.number().min(0).max(100),\n skillResilience: z.number().min(0).max(100),\n sessionMastery: z.number().min(0).max(100),\n controlScore: z.number().min(0).max(100),\n // Legacy fields — present on old runs, not computed for new\n contextEfficiency: z.number().min(0).max(100).optional(),\n sessionOutcome: z.number().min(0).max(100).optional(),\n thinkingQuality: z.number().min(0).max(100).optional(),\n learningBehavior: z.number().min(0).max(100).optional(),\n communicationPatterns: z.number().min(0).max(100).optional(),\n});\nexport type DeterministicScores = z.infer;\n\n// ============================================================================\n// Coding Style Type System\n// ============================================================================\n\nexport const CodingStyleTypeSchema = z.enum([\n 'architect',\n 'analyst',\n 'conductor',\n 'speedrunner',\n 'trendsetter',\n]);\nexport type CodingStyleType = z.infer;\n\nexport const AIControlLevelSchema = z.enum([\n 'explorer',\n 'navigator',\n 'cartographer',\n]);\nexport type AIControlLevel = z.infer;\n\n// ============================================================================\n// Deterministic Type Result\n// ============================================================================\n\nexport const DeterministicTypeResultSchema = z.object({\n primaryType: CodingStyleTypeSchema,\n distribution: z.object({\n architect: z.number(),\n analyst: z.number(),\n conductor: z.number(),\n speedrunner: z.number(),\n trendsetter: z.number(),\n }),\n controlLevel: AIControlLevelSchema,\n controlScore: z.number().min(0).max(100),\n matrixName: z.string(),\n matrixEmoji: z.string(),\n});\nexport type DeterministicTypeResult = z.infer;\n","/**\n * Domain Result Schema\n *\n * Expanded DomainResult with typed domain-specific data,\n * replacing the previous Record catch-all.\n *\n * @module @betterprompt/shared/schemas/domain-result\n */\n\nimport { z } from 'zod';\nimport { Phase1SessionMetricsSchema } from './phase1-output.js';\nimport { DeterministicScoresSchema, DeterministicTypeResultSchema } from './deterministic-scores.js';\n\n// ============================================================================\n// Evidence Schema (shared across all domains)\n// ============================================================================\n\nexport const EvidenceSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n context: z.string().optional(),\n});\nexport type Evidence = z.infer;\n\n// ============================================================================\n// Strength / Growth Area Schemas\n// ============================================================================\n\nexport const DomainStrengthSchema = z.object({\n title: z.string(),\n description: z.string().min(100),\n evidence: z.array(EvidenceSchema).min(1),\n});\nexport type DomainStrength = z.infer;\n\nexport const DomainGrowthAreaSchema = z.object({\n title: z.string(),\n description: z.string().min(100),\n severity: z.enum(['critical', 'high', 'medium', 'low']),\n recommendation: z.string().min(50),\n evidence: z.array(EvidenceSchema).min(1),\n});\nexport type DomainGrowthArea = z.infer;\n\n// ============================================================================\n// Domain Names\n// ============================================================================\n\n/**\n * Legacy 6-domain names — kept for backward compatibility with old runs.\n * New analyses use DOMAIN_NAMES (5-dimension framework).\n */\nexport const LEGACY_DOMAIN_NAMES = [\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n] as const;\n\nexport type LegacyDomainName = typeof LEGACY_DOMAIN_NAMES[number];\n\n/**\n * 5-dimension framework (v2):\n * - aiPartnership: merged AI Collaboration + AI Control\n * - sessionCraft: merged Context Engineering + Burnout Risk\n * - toolMastery: unchanged Tool Mastery\n * - skillResilience: unchanged Skill Resilience\n * - sessionMastery: NEW absence-of-anti-pattern scoring\n */\nexport const DOMAIN_NAMES = [\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n] as const;\n\nexport type DomainName = typeof DOMAIN_NAMES[number];\n\n// ============================================================================\n// Complete Domain Result Schema\n// ============================================================================\n\nexport const DomainResultSchema = z.object({\n domain: z.enum([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Legacy domains accepted for backward compat with old runs\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n ]),\n overallScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n strengths: z.array(DomainStrengthSchema),\n growthAreas: z.array(DomainGrowthAreaSchema),\n /** Domain-specific typed data. Validated per domain when available. */\n data: z.record(z.string(), z.unknown()).optional(),\n analyzedAt: z.string(),\n});\nexport type DomainResult = z.infer;\n\n// ============================================================================\n// Analysis Report (local plugin assembly)\n// ============================================================================\n\nexport const AnalysisReportSchema = z.object({\n userId: z.string(),\n analyzedAt: z.string(),\n phase1Metrics: Phase1SessionMetricsSchema,\n deterministicScores: DeterministicScoresSchema,\n typeResult: DeterministicTypeResultSchema.nullable(),\n domainResults: z.array(DomainResultSchema),\n content: z.object({\n topFocusAreas: z.array(z.object({\n title: z.string(),\n narrative: z.string().optional(),\n description: z.string().optional(),\n actions: z.object({\n start: z.string(),\n stop: z.string(),\n continue: z.string(),\n }).optional(),\n })).optional(),\n personalitySummary: z.array(z.string()).optional(),\n }).optional(),\n});\nexport type AnalysisReport = z.infer;\n","/**\n * Stage Output Schemas\n *\n * Validation schemas for pipeline stage outputs saved via save_stage_output:\n * - Session Summarizer (Phase 1.5)\n * - Dimension Extractors (Phase 2, Stage 1) — 6 extract-* skills\n * - Project Summarizer (Phase 2, parallel)\n * - Weekly Insight Generator (Phase 2, parallel)\n * - Evidence Verifier (Phase 2.8)\n * - Content Writer (Phase 3)\n * - Translator (Phase 4)\n *\n * @module @betterprompt/shared/schemas/stage-outputs\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Session Summarizer (Phase 1.5)\n// ============================================================================\n\nexport const SessionSummarySchema = z.object({\n sessionId: z.string(),\n summary: z.string(),\n});\nexport type SessionSummary = z.infer;\n\nexport const SessionSummaryBatchSchema = z.object({\n summaries: z.array(SessionSummarySchema),\n});\nexport type SessionSummaryBatch = z.infer;\n\n// ============================================================================\n// Project Summarizer (Phase 2)\n// ============================================================================\n\nexport const ProjectSummarySchema = z.object({\n projectName: z.string(),\n summaryLines: z.array(z.string()),\n sessionCount: z.number().int().min(0),\n});\nexport type ProjectSummary = z.infer;\n\nexport const ProjectSummaryBatchSchema = z.object({\n projects: z.array(ProjectSummarySchema),\n});\nexport type ProjectSummaryBatch = z.infer;\n\n// ============================================================================\n// Weekly Insight Generator (Phase 2)\n// ============================================================================\n\nexport const WeeklyProjectBreakdownSchema = z.object({\n projectName: z.string(),\n sessionCount: z.number().int().min(0),\n percentage: z.number().min(0).max(100),\n});\nexport type WeeklyProjectBreakdown = z.infer;\n\nexport const WeeklyTopSessionSchema = z.object({\n sessionId: z.string(),\n summary: z.string(),\n});\nexport type WeeklyTopSession = z.infer;\n\nexport const WeeklyInsightsSchema = z.object({\n stats: z.object({\n sessionCount: z.number().int().min(0),\n totalMinutes: z.number().min(0),\n totalTokens: z.number().int().min(0),\n activeDays: z.number().int().min(0).max(7),\n deltaSessionCount: z.number().optional(),\n deltaMinutes: z.number().optional(),\n deltaTokens: z.number().optional(),\n }),\n projects: z.array(WeeklyProjectBreakdownSchema),\n topSessions: z.array(WeeklyTopSessionSchema),\n narrative: z.string(),\n highlights: z.array(z.string()),\n});\nexport type WeeklyInsights = z.infer;\n\n// ============================================================================\n// Evidence Verifier (Phase 2.8)\n// ============================================================================\n\nexport const EvidenceVerificationResultSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n relevanceScore: z.number().min(0).max(100),\n verified: z.boolean(),\n});\nexport type EvidenceVerificationResult = z.infer;\n\nexport const DomainVerificationStatsSchema = z.object({\n domain: z.string(),\n totalEvidence: z.number().int().min(0),\n keptCount: z.number().int().min(0),\n filteredCount: z.number().int().min(0),\n});\nexport type DomainVerificationStats = z.infer;\n\nexport const EvidenceVerificationOutputSchema = z.object({\n verifiedResults: z.array(EvidenceVerificationResultSchema),\n domainStats: z.array(DomainVerificationStatsSchema),\n threshold: z.number().min(0).max(100),\n});\nexport type EvidenceVerificationOutput = z.infer;\n\n// ============================================================================\n// Content Writer (Phase 3)\n// ============================================================================\n\nexport const TopFocusAreaSchema = z.object({\n title: z.string(),\n description: z.string(),\n relatedQualities: z.array(z.string()),\n actions: z.object({\n start: z.string(),\n stop: z.string(),\n continue: z.string(),\n }),\n});\nexport type TopFocusArea = z.infer;\n\nexport const ContentWriterOutputSchema = z.object({\n topFocusAreas: z.array(TopFocusAreaSchema),\n personalitySummary: z.array(z.string()).optional(),\n});\nexport type ContentWriterOutput = z.infer;\n\nexport const TypeClassificationStageOutputSchema = z.object({\n reasoning: z.array(z.string()),\n personalityNarrative: z.array(z.string()),\n collaborationMaturity: z.string().optional(),\n});\nexport type TypeClassificationStageOutput = z.infer;\n\n// ============================================================================\n// Translator (Phase 4)\n// ============================================================================\n\nexport const TranslatorOutputSchema = z.object({\n targetLanguage: z.string(),\n translatedFields: z.record(z.string(), z.unknown()),\n});\nexport type TranslatorOutput = z.infer;\n\n// ============================================================================\n// Dimension Extraction (Phase 2 Data Analyst stage)\n// ============================================================================\n\n/** Permissive schema for dimension extraction stage outputs (data-analyst workers) */\nexport const DimensionExtractionSchema = z.object({\n dimension: z.string(),\n quotes: z.array(z.object({\n text: z.string(),\n utteranceId: z.string().optional(),\n sessionId: z.string().optional(),\n behavioralMarker: z.string().optional(),\n signalType: z.enum(['strength', 'growth']).optional(),\n confidence: z.number().min(0).max(1).optional(),\n }).passthrough()),\n patterns: z.array(z.object({\n name: z.string(),\n category: z.string().optional(),\n examples: z.array(z.string()).optional(),\n frequency: z.string().optional(),\n }).passthrough()).optional(),\n signals: z.record(z.string(), z.unknown()).optional(),\n score: z.number().min(0).max(100).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}).passthrough();\nexport type DimensionExtraction = z.infer;\n\n// ============================================================================\n// Stage Output Union (for save_stage_output tool validation)\n// ============================================================================\n\n/**\n * Legacy 6-extractor stage names — kept for backward compatibility with old runs.\n */\nexport const LEGACY_EXTRACTOR_STAGE_NAMES = [\n 'extractAiCollaboration',\n 'extractContextEngineering',\n 'extractBurnoutRisk',\n 'extractAiControl',\n] as const;\n\nexport const STAGE_NAMES = [\n 'sessionSummaries',\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n 'translator',\n // 5-dimension extractors (v2)\n 'extractAiPartnership',\n 'extractSessionCraft',\n 'extractToolMastery',\n 'extractSkillResilience',\n 'extractSessionMastery',\n // Legacy extractors (old runs only)\n 'extractAiCollaboration',\n 'extractContextEngineering',\n 'extractBurnoutRisk',\n 'extractAiControl',\n] as const;\n\nexport type StageName = typeof STAGE_NAMES[number];\n\n/** Map of stage name to its validation schema */\nexport const STAGE_SCHEMAS: Record = {\n sessionSummaries: SessionSummaryBatchSchema,\n projectSummaries: ProjectSummaryBatchSchema,\n weeklyInsights: WeeklyInsightsSchema,\n typeClassification: TypeClassificationStageOutputSchema,\n evidenceVerification: EvidenceVerificationOutputSchema,\n contentWriter: ContentWriterOutputSchema,\n translator: TranslatorOutputSchema,\n // 5-dimension extractors (v2)\n extractAiPartnership: DimensionExtractionSchema,\n extractSessionCraft: DimensionExtractionSchema,\n extractToolMastery: DimensionExtractionSchema,\n extractSkillResilience: DimensionExtractionSchema,\n extractSessionMastery: DimensionExtractionSchema,\n // Legacy extractors (old runs)\n extractAiCollaboration: DimensionExtractionSchema,\n extractContextEngineering: DimensionExtractionSchema,\n extractBurnoutRisk: DimensionExtractionSchema,\n extractAiControl: DimensionExtractionSchema,\n};\n","/**\n * Worker Output Schemas - Consolidated Phase 2 Worker Output Types\n *\n * Canonical Zod schemas for all Phase 2 worker outputs, shared between\n * server (analysis pipeline) and client (report rendering).\n *\n * Workers:\n * - ThinkingQuality: Planning + Critical Thinking\n * - CommunicationPatterns: Communication patterns + Signature quotes\n * - LearningBehavior: Knowledge gaps + Repeated mistakes\n * - ContextEfficiency: Token efficiency patterns + Productivity\n * - SessionOutcome: Goals, friction, success rates\n *\n * Respects Gemini's 4-level nesting limit (arrays don't count).\n *\n * @module @betterprompt/shared/schemas/worker-outputs\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Evidence Schemas\n// ============================================================================\n\n/**\n * Structured evidence with utterance ID linking.\n * Enables linking evidence quotes back to original developer utterances.\n */\nexport const InsightEvidenceSchema = z.object({\n /** Utterance ID from Phase 1 (format: {sessionId}_{turnIndex}) */\n utteranceId: z.string(),\n /** Direct quote or paraphrase from the developer's message */\n quote: z.string(),\n /** Brief context description */\n context: z.string().optional(),\n});\nexport type InsightEvidence = z.infer;\n\n/**\n * Evidence can be either a simple string (legacy) or structured with utterance linking.\n * Union type enables backward compatibility with existing data.\n */\nexport const EvidenceItemSchema = z.union([\n z.string(),\n InsightEvidenceSchema,\n]);\nexport type EvidenceItem = z.infer;\n\n// Alias for external consumers expecting \"EvidenceSchema\"\nexport const EvidenceSchema = EvidenceItemSchema;\nexport type Evidence = EvidenceItem;\n\n// ============================================================================\n// Worker Strength Schema\n// ============================================================================\n\n/**\n * A strength identified by a Phase 2 Worker in its domain.\n * Each worker identifies 1-6 strengths with supporting evidence.\n */\nexport const WorkerStrengthSchema = z.object({\n /** Clear, specific title (e.g., \"Systematic Output Verification\") */\n title: z.string(),\n /** 6-10 sentences providing comprehensive analysis */\n description: z.string(),\n /**\n * Direct quotes from developer messages demonstrating this (1-8 items).\n * Can be simple strings (legacy) or structured with utterance linking.\n */\n evidence: z.array(EvidenceItemSchema).min(1).max(8),\n /** Truncated description preview for free tier blur teaser (set by ContentGateway) */\n descriptionPreview: z.string().optional(),\n});\nexport type WorkerStrength = z.infer;\n\n// ============================================================================\n// Worker Growth Schema\n// ============================================================================\n\n/**\n * Severity level for growth areas.\n *\n * - critical: 70%+ occurrence or fundamental skill gap\n * - high: 40-70% occurrence or significant impact\n * - medium: 20-40% occurrence or moderate impact\n * - low: <20% occurrence or minor impact\n */\nexport const WorkerGrowthSeveritySchema = z.enum(['critical', 'high', 'medium', 'low']);\nexport type WorkerGrowthSeverity = z.infer;\n\n/**\n * A growth area identified by a Phase 2 Worker in its domain.\n * Each worker identifies 1-6 growth areas with supporting evidence\n * and actionable recommendations.\n */\nexport const WorkerGrowthSchema = z.object({\n /** Clear, specific title (e.g., \"Error Loop Pattern\") */\n title: z.string(),\n /** 6-10 sentences providing comprehensive analysis */\n description: z.string(),\n /**\n * Direct quotes from developer messages showing this pattern (1-8 items).\n * Can be simple strings (legacy) or structured with utterance linking.\n */\n evidence: z.array(EvidenceItemSchema).min(1).max(8),\n /** 4-6 sentences with step-by-step actionable advice */\n recommendation: z.string(),\n /** How critical this growth area is to address */\n severity: WorkerGrowthSeveritySchema.optional(),\n /** Truncated description preview for free tier blur teaser (set by ContentGateway) */\n descriptionPreview: z.string().optional(),\n /** Truncated recommendation preview for free tier blur teaser (set by ContentGateway) */\n recommendationPreview: z.string().optional(),\n});\nexport type WorkerGrowth = z.infer;\n\n// ============================================================================\n// Referenced Insight Schema\n// ============================================================================\n\n/**\n * Referenced insight from Knowledge Base.\n * Post-processed from [pi-XXX] references in worker output text.\n */\nexport const ReferencedInsightSchema = z.object({\n /** Insight ID (e.g., \"pi-001\") */\n id: z.string(),\n /** Human-readable title */\n title: z.string(),\n /** Source URL for the insight */\n url: z.string(),\n /** Main insight text */\n keyTakeaway: z.string(),\n /** Actionable tips array */\n actionableAdvice: z.array(z.string()),\n /** Insight category: diagnosis | trend | tool | type-specific */\n category: z.string(),\n /** Author name from source */\n sourceAuthor: z.string(),\n});\nexport type ReferencedInsight = z.infer;\n\n// ============================================================================\n// ThinkingQuality Domain Schemas\n// ============================================================================\n\nexport const PlanningHabitTypeSchema = z.enum([\n 'uses_plan_command',\n 'plan_mode_usage',\n 'task_decomposition',\n 'structure_first',\n 'todowrite_usage',\n 'no_planning',\n]);\nexport type PlanningHabitType = z.infer;\n\nexport const HabitFrequencySchema = z.enum(['always', 'often', 'sometimes', 'rarely', 'never']);\nexport type HabitFrequency = z.infer;\n\nexport const PlanningHabitSchema = z.object({\n type: PlanningHabitTypeSchema,\n frequency: HabitFrequencySchema,\n examples: z.array(z.string()),\n effectiveness: z.enum(['high', 'medium', 'low']).optional(),\n});\nexport type PlanningHabit = z.infer;\n\nexport const CriticalThinkingTypeSchema = z.enum([\n 'verification_request',\n 'output_validation',\n 'assumption_questioning',\n 'alternative_exploration',\n 'edge_case_consideration',\n 'security_check',\n 'ai_output_correction',\n]);\nexport type CriticalThinkingType = z.infer;\n\nexport const CriticalThinkingMomentSchema = z.object({\n type: CriticalThinkingTypeSchema,\n quote: z.string(),\n result: z.string(),\n utteranceId: z.string().optional(),\n});\nexport type CriticalThinkingMoment = z.infer;\n\nexport const VerificationLevelSchema = z.enum([\n 'blind_trust',\n 'occasional_review',\n 'systematic_verification',\n 'skeptical',\n]);\nexport type VerificationLevel = z.infer;\n\nexport const VerificationBehaviorSchema = z.object({\n level: VerificationLevelSchema,\n examples: z.array(z.string()),\n recommendation: z.string(),\n confidence: z.number().min(0).max(1).optional(),\n});\nexport type VerificationBehavior = z.infer;\n\nexport const PatternSeveritySchema = z.enum(['critical', 'significant', 'moderate', 'mild']);\nexport type PatternSeverity = z.infer;\n\nexport const AntiPatternExampleSchema = z.object({\n utteranceId: z.string(),\n quote: z.string(),\n context: z.string().optional(),\n});\nexport type AntiPatternExample = z.infer;\n\nexport const DetectedAntiPatternSchema = z.object({\n type: z.string(),\n frequency: z.number().int().min(1),\n examples: z.array(AntiPatternExampleSchema),\n severity: PatternSeveritySchema,\n improvement: z.string().optional(),\n sessionPercentage: z.number().min(0).max(100).optional(),\n});\nexport type DetectedAntiPattern = z.infer;\n\nexport const ContextPollutionSchema = z.object({\n description: z.string(),\n impact: z.enum(['high', 'medium', 'low']),\n});\nexport type ContextPollution = z.infer;\n\nexport const MultitaskingPatternSchema = z.object({\n mixesTopicsInSessions: z.boolean(),\n contextPollutionInstances: z.array(ContextPollutionSchema),\n focusScore: z.number().min(0).max(100).optional(),\n recommendation: z.string().optional(),\n});\nexport type MultitaskingPattern = z.infer;\n\n/**\n * Complete output from ThinkingQualityAnalyzer.\n * Combines Planning Quality + Critical Thinking dimensions.\n */\nexport const ThinkingQualityOutputSchema = z.object({\n // Planning Dimension\n planningHabits: z.array(PlanningHabitSchema),\n planQualityScore: z.number().min(0).max(100),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n\n // Critical Thinking Dimension\n verificationBehavior: VerificationBehaviorSchema,\n criticalThinkingMoments: z.array(CriticalThinkingMomentSchema),\n verificationAntiPatterns: z.array(DetectedAntiPatternSchema),\n\n // Overall Scores\n overallThinkingQualityScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type ThinkingQualityOutput = z.infer;\n\n// ============================================================================\n// CommunicationPatterns Domain Schemas\n// ============================================================================\n\nexport const PatternFrequencySchema = z.enum(['frequent', 'occasional', 'rare']);\nexport type PatternFrequency = z.infer;\n\nexport const PatternEffectivenessSchema = z.enum(['highly_effective', 'effective', 'could_improve']);\nexport type PatternEffectiveness = z.infer;\n\nexport const PatternExampleSchema = z.object({\n utteranceId: z.string(),\n analysis: z.string(),\n});\nexport type PatternExample = z.infer;\n\nexport const CommunicationPatternSchema = z.object({\n patternName: z.string(),\n description: z.string(),\n frequency: PatternFrequencySchema,\n examples: z.array(PatternExampleSchema).min(1).max(5),\n effectiveness: PatternEffectivenessSchema,\n tip: z.string().optional(),\n});\nexport type CommunicationPattern = z.infer;\n\nexport const SignatureQuoteSchema = z.object({\n utteranceId: z.string(),\n significance: z.string(),\n representedStrength: z.string(),\n});\nexport type SignatureQuote = z.infer;\n\n/**\n * Complete output from CommunicationPatternsWorker.\n * Analyzes communication clarity: patterns + signature quotes.\n */\nexport const CommunicationPatternsOutputSchema = z.object({\n // Communication Patterns\n communicationPatterns: z.array(CommunicationPatternSchema),\n signatureQuotes: z.array(SignatureQuoteSchema).optional(),\n\n // Overall Scores\n overallCommunicationScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type CommunicationPatternsOutput = z.infer;\n\n// ============================================================================\n// LearningBehavior Domain Schemas\n// ============================================================================\n\nexport const KnowledgeGapItemSchema = z.object({\n topic: z.string(),\n description: z.string(),\n questionCount: z.number().int().min(1),\n depth: z.enum(['shallow', 'moderate', 'deep']),\n example: z.string(),\n});\nexport type KnowledgeGapItem = z.infer;\n\nexport const LearningProgressSchema = z.object({\n topic: z.string(),\n description: z.string(),\n startLevel: z.enum(['novice', 'shallow', 'moderate', 'deep', 'expert']),\n currentLevel: z.enum(['novice', 'shallow', 'moderate', 'deep', 'expert']),\n evidence: z.string(),\n});\nexport type LearningProgress = z.infer;\n\nexport const ResourceSchema = z.object({\n topic: z.string(),\n resourceType: z.enum(['docs', 'tutorial', 'course', 'article', 'video']),\n url: z.string(),\n});\nexport type Resource = z.infer;\n\nexport const RepeatedMistakePatternSchema = z.object({\n category: z.string(),\n mistakeType: z.string(),\n description: z.string(),\n occurrenceCount: z.number().int().min(2),\n sessionPercentage: z.number().min(0).max(100).optional(),\n exampleUtteranceIds: z.array(z.string()).max(5),\n recommendation: z.string(),\n});\nexport type RepeatedMistakePattern = z.infer;\n\n/**\n * Complete output from LearningBehaviorAnalyzer.\n * Combines Knowledge Gaps + Learning Progress + Repeated Mistakes.\n */\nexport const LearningBehaviorOutputSchema = z.object({\n // Knowledge Gap Dimension\n knowledgeGaps: z.array(KnowledgeGapItemSchema),\n learningProgress: z.array(LearningProgressSchema),\n recommendedResources: z.array(ResourceSchema),\n\n // Repeated Mistakes Dimension\n repeatedMistakePatterns: z.array(RepeatedMistakePatternSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n kptKeep: z.array(z.string()).max(2).optional(),\n kptProblem: z.array(z.string()).max(2).optional(),\n kptTry: z.array(z.string()).max(2).optional(),\n\n // Overall Scores\n overallLearningScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type LearningBehaviorOutput = z.infer;\n\n// ============================================================================\n// ContextEfficiency Domain Schemas\n// ============================================================================\n\nexport const ContextUsagePatternSchema = z.object({\n sessionId: z.string(),\n avgFillPercent: z.number().min(0).max(100),\n compactTriggerPercent: z.number().min(0).max(100).optional(),\n});\nexport type ContextUsagePattern = z.infer;\n\nexport const InefficiencyPatternEnum = z.enum([\n 'late_compact',\n 'context_bloat',\n 'redundant_info',\n 'prompt_length_inflation',\n 'no_session_separation',\n 'verbose_error_pasting',\n 'no_knowledge_persistence',\n]);\nexport type InefficiencyPattern = z.infer;\n\nexport const InefficiencySchema = z.object({\n pattern: InefficiencyPatternEnum,\n frequency: z.number().int().min(1),\n impact: z.enum(['high', 'medium', 'low']),\n description: z.string(),\n});\nexport type Inefficiency = z.infer;\n\nexport const PromptLengthTrendSchema = z.object({\n phase: z.enum(['early', 'mid', 'late']),\n avgLength: z.number().int().min(0),\n});\nexport type PromptLengthTrend = z.infer;\n\nexport const RedundantInfoSchema = z.object({\n infoType: z.string(),\n repeatCount: z.number().int().min(1),\n});\nexport type RedundantInfo = z.infer;\n\nexport const IterationSummarySchema = z.object({\n sessionId: z.string(),\n iterationCount: z.number().int().min(0),\n avgTurnsPerIteration: z.number().min(0),\n});\nexport type IterationSummary = z.infer;\n\n/**\n * Complete output from ContextEfficiencyWorker.\n * Analyzes token efficiency patterns + productivity metrics.\n */\nexport const ContextEfficiencyOutputSchema = z.object({\n // Context usage patterns\n contextUsagePatterns: z.array(ContextUsagePatternSchema),\n inefficiencyPatterns: z.array(InefficiencySchema),\n promptLengthTrends: z.array(PromptLengthTrendSchema),\n redundantInfo: z.array(RedundantInfoSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n kptKeep: z.array(z.string()).max(2).optional(),\n kptProblem: z.array(z.string()).max(2).optional(),\n kptTry: z.array(z.string()).max(2).optional(),\n\n // Overall Scores\n overallEfficiencyScore: z.number().min(0).max(100),\n avgContextFillPercent: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n\n // Productivity metrics (consolidated from ProductivityAnalyst)\n iterationSummaries: z.array(IterationSummarySchema).optional(),\n collaborationEfficiencyScore: z.number().min(0).max(100).optional(),\n overallProductivityScore: z.number().min(0).max(100).optional(),\n productivitySummary: z.string().optional(),\n});\nexport type ContextEfficiencyOutput = z.infer;\n\n// ============================================================================\n// SessionOutcome Domain Schemas\n// ============================================================================\n\nexport const GoalCategoryEnum = z.enum([\n 'debug_investigate',\n 'implement_feature',\n 'fix_bug',\n 'refactor',\n 'write_tests',\n 'setup_config',\n 'documentation',\n 'review_feedback',\n 'exploration',\n 'quick_question',\n 'deploy_infra',\n 'dependency_management',\n 'performance_optimization',\n 'security_audit',\n]);\nexport type GoalCategory = z.infer;\n\nexport const SessionTypeEnum = z.enum([\n 'single_task',\n 'multi_task',\n 'iterative_refinement',\n 'exploration',\n 'quick_question',\n]);\nexport type SessionType = z.infer;\n\nexport const FrictionTypeEnum = z.enum([\n 'misunderstood_request',\n 'wrong_approach',\n 'buggy_code_generated',\n 'user_rejection',\n 'blocked_state',\n 'tool_failure',\n 'context_overflow',\n 'hallucination',\n 'incomplete_solution',\n 'excessive_iterations',\n 'permission_error',\n 'environment_mismatch',\n]);\nexport type FrictionType = z.infer;\n\nexport const OutcomeEnum = z.enum([\n 'fully_achieved',\n 'mostly_achieved',\n 'partially_achieved',\n 'not_achieved',\n 'unclear',\n]);\nexport type Outcome = z.infer;\n\nexport const SatisfactionEnum = z.enum([\n 'frustrated',\n 'dissatisfied',\n 'neutral',\n 'satisfied',\n 'happy',\n]);\nexport type Satisfaction = z.infer;\n\nexport const SessionAnalysisSchema = z.object({\n sessionId: z.string(),\n primaryGoal: GoalCategoryEnum,\n secondaryGoals: z.array(GoalCategoryEnum).max(2).optional(),\n sessionType: SessionTypeEnum,\n outcome: OutcomeEnum,\n satisfaction: SatisfactionEnum,\n frictionTypes: z.array(FrictionTypeEnum).max(3),\n keyMoment: z.string().optional(),\n});\nexport type SessionAnalysis = z.infer;\n\nexport const GoalDistributionItemSchema = z.object({\n goal: GoalCategoryEnum,\n count: z.number().int().min(1),\n successRate: z.number().min(0).max(100),\n});\nexport type GoalDistributionItem = z.infer;\n\nexport const SessionTypeDistributionItemSchema = z.object({\n type: SessionTypeEnum,\n count: z.number().int().min(1),\n avgOutcomeScore: z.number().min(0).max(100),\n});\nexport type SessionTypeDistributionItem = z.infer;\n\nexport const FrictionSummaryItemSchema = z.object({\n type: FrictionTypeEnum,\n count: z.number().int().min(1),\n impactLevel: z.enum(['high', 'medium', 'low']),\n commonCause: z.string(),\n recommendation: z.string(),\n});\nexport type FrictionSummaryItem = z.infer;\n\nexport const SuccessPatternSchema = z.object({\n pattern: z.string(),\n associatedGoals: z.array(GoalCategoryEnum),\n frequency: z.number().min(0).max(100),\n});\nexport type SuccessPattern = z.infer;\n\nexport const FailurePatternSchema = z.object({\n pattern: z.string(),\n associatedFrictions: z.array(FrictionTypeEnum),\n frequency: z.number().min(0).max(100),\n});\nexport type FailurePattern = z.infer;\n\n/**\n * Complete output from SessionOutcomeWorker.\n * Analyzes session success patterns, goal achievement, and friction points.\n */\nexport const SessionOutcomeOutputSchema = z.object({\n // Per-Session Analysis\n sessionAnalyses: z.array(SessionAnalysisSchema),\n\n // Aggregated Statistics\n overallSuccessRate: z.number().min(0).max(100),\n goalDistribution: z.array(GoalDistributionItemSchema),\n sessionTypeDistribution: z.array(SessionTypeDistributionItemSchema),\n frictionSummary: z.array(FrictionSummaryItemSchema),\n\n // Pattern Analysis\n successPatterns: z.array(SuccessPatternSchema),\n failurePatterns: z.array(FailurePatternSchema),\n\n // Overall Scores\n overallOutcomeScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionOutcomeOutput = z.infer;\n\n// ============================================================================\n// AI Partnership Domain Schemas (v2 — merged Collaboration + Control)\n// ============================================================================\n\n/**\n * Complete output from AiPartnershipWorker.\n * Merges ThinkingQuality (planning, verification, critical thinking) with\n * SessionOutcome (goal achievement, friction, AI control patterns) into a\n * unified AI Partnership dimension.\n */\nexport const AiPartnershipOutputSchema = z.object({\n // Planning Dimension (from ThinkingQuality)\n planningHabits: z.array(PlanningHabitSchema),\n planQualityScore: z.number().min(0).max(100),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n\n // Critical Thinking Dimension (from ThinkingQuality)\n verificationBehavior: VerificationBehaviorSchema,\n criticalThinkingMoments: z.array(CriticalThinkingMomentSchema),\n verificationAntiPatterns: z.array(DetectedAntiPatternSchema),\n\n // AI Control Dimension (from SessionOutcome)\n sessionAnalyses: z.array(SessionAnalysisSchema),\n overallSuccessRate: z.number().min(0).max(100),\n goalDistribution: z.array(GoalDistributionItemSchema),\n frictionSummary: z.array(FrictionSummaryItemSchema),\n\n // Overall Scores\n overallAiPartnershipScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type AiPartnershipOutput = z.infer;\n\n// ============================================================================\n// Session Craft Domain Schemas (v2 — merged Context Engineering + Burnout Risk)\n// ============================================================================\n\n/**\n * Complete output from SessionCraftWorker.\n * Merges ContextEfficiency (token usage, prompt patterns) with\n * LearningBehavior (burnout risk, repeated mistakes) into a unified\n * Session Craft dimension.\n */\nexport const SessionCraftOutputSchema = z.object({\n // Context Efficiency Dimension\n contextUsagePatterns: z.array(ContextUsagePatternSchema),\n inefficiencyPatterns: z.array(InefficiencySchema),\n promptLengthTrends: z.array(PromptLengthTrendSchema),\n avgContextFillPercent: z.number().min(0).max(100),\n\n // Burnout / Learning Dimension\n repeatedMistakePatterns: z.array(RepeatedMistakePatternSchema),\n knowledgeGaps: z.array(KnowledgeGapItemSchema),\n\n // Insights\n topInsights: z.array(z.string()).max(3),\n\n // Overall Scores\n overallSessionCraftScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionCraftOutput = z.infer;\n\n// ============================================================================\n// Session Mastery Domain Schemas (v2 — absence-of-anti-pattern scoring)\n// ============================================================================\n\n/**\n * Anti-pattern absence indicator.\n * Tracks whether a negative pattern is present or absent.\n * Absence of the pattern when skill is internalized scores positive.\n */\nexport const AbsenceIndicatorSchema = z.object({\n /** Name of the anti-pattern being checked */\n pattern: z.string(),\n /** Whether the anti-pattern was observed */\n present: z.boolean(),\n /** Number of occurrences (0 = absent) */\n occurrenceCount: z.number().int().min(0),\n /** Total sessions checked */\n sessionsChecked: z.number().int().min(1),\n /** Score contribution: 0 (always present) to 100 (always absent) */\n absenceScore: z.number().min(0).max(100),\n /** Evidence of presence (empty if absent — which is good) */\n evidence: z.array(EvidenceItemSchema),\n /**\n * Expert interpretation:\n * - 'internalized': absence indicates mastery (skill no longer needs scaffolding)\n * - 'not_applicable': pattern not relevant for this developer's workflow\n * - 'concerning': absence may indicate gap (e.g., never verifies output)\n */\n interpretation: z.enum(['internalized', 'not_applicable', 'concerning']),\n});\nexport type AbsenceIndicator = z.infer;\n\n/**\n * Session cleanliness score for individual sessions.\n * Experts produce \"clean\" sessions: low friction, no retries, focused work.\n */\nexport const SessionCleanlinessSchema = z.object({\n sessionId: z.string(),\n cleanlinessScore: z.number().min(0).max(100),\n antiPatternCount: z.number().int().min(0),\n /** Indicates expert-level session control */\n isCleanSession: z.boolean(),\n});\nexport type SessionCleanliness = z.infer;\n\n/**\n * Complete output from SessionMasteryWorker (v2 — absence scoring).\n * Distinguishes intermediate (uses scaffolding tools) from expert\n * (internalized skills, clean sessions) by scoring the ABSENCE of\n * anti-patterns rather than the presence of positive signals.\n *\n * Key rubric principle: absence of tool usage when skill is internalized\n * scores neutral or positive, never negative.\n */\nexport const SessionMasteryOutputSchema = z.object({\n // Absence Indicators\n absenceIndicators: z.array(AbsenceIndicatorSchema),\n\n // Session Cleanliness\n sessionCleanliness: z.array(SessionCleanlinessSchema),\n cleanSessionPercentage: z.number().min(0).max(100),\n\n // Expert Differentiation\n scaffoldingDependencyScore: z.number().min(0).max(100),\n internalizedSkillSignals: z.array(z.string()),\n expertBehaviorIndicators: z.array(z.string()),\n\n // Overall Scores\n overallSessionMasteryScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1),\n summary: z.string().optional(),\n\n // Domain-specific Strengths & Growth Areas\n strengths: z.array(WorkerStrengthSchema).optional(),\n growthAreas: z.array(WorkerGrowthSchema).optional(),\n referencedInsights: z.array(ReferencedInsightSchema).optional(),\n});\nexport type SessionMasteryOutput = z.infer;\n","/**\n * Canonical Analysis Run Envelope\n *\n * Shared run-scoped contract for plugin-produced analyses.\n * This keeps the full deterministic + staged pipeline output together so\n * local reports and server sync can consume the same artifact without\n * fabricating or dropping fields.\n *\n * @module @betterprompt/shared/schemas/analysis-run\n */\n\nimport { z } from 'zod';\nimport {\n Phase1OutputSchema,\n type Phase1Output,\n} from './phase1-output.js';\nimport {\n DeterministicScoresSchema,\n type DeterministicScores,\n DeterministicTypeResultSchema,\n type DeterministicTypeResult,\n} from './deterministic-scores.js';\nimport {\n DomainResultSchema,\n type DomainResult,\n} from './domain-result.js';\nimport {\n SessionSummaryBatchSchema,\n ProjectSummaryBatchSchema,\n WeeklyInsightsSchema,\n TypeClassificationStageOutputSchema,\n EvidenceVerificationOutputSchema,\n ContentWriterOutputSchema,\n TranslatorOutputSchema,\n} from './stage-outputs.js';\n\n/**\n * Report-facing activity session shape.\n * Normalized to minutes because this is what the dashboard and local report use.\n */\nexport const ReportActivitySessionSchema = z.object({\n sessionId: z.string(),\n projectName: z.string(),\n startTime: z.string(),\n durationMinutes: z.number().min(0),\n messageCount: z.number().int().min(0),\n summary: z.string(),\n totalInputTokens: z.number().int().min(0).optional(),\n totalOutputTokens: z.number().int().min(0).optional(),\n});\nexport type ReportActivitySession = z.infer;\n\nexport const CanonicalStageOutputsSchema = z.object({\n sessionSummaries: SessionSummaryBatchSchema.optional(),\n projectSummaries: ProjectSummaryBatchSchema.optional(),\n weeklyInsights: WeeklyInsightsSchema.optional(),\n typeClassification: TypeClassificationStageOutputSchema.optional(),\n evidenceVerification: EvidenceVerificationOutputSchema.optional(),\n contentWriter: ContentWriterOutputSchema.optional(),\n translator: TranslatorOutputSchema.optional(),\n});\nexport type CanonicalStageOutputs = z.infer;\n\n/**\n * Final evaluation is produced by the server-side schema today, but the plugin\n * package cannot depend on that app-local module. Keep the envelope strict about\n * run-scoped artifacts while allowing the evaluation payload to remain an\n * opaque structured object across package boundaries.\n */\nexport const CanonicalEvaluationPayloadSchema = z.record(z.string(), z.unknown());\nexport type CanonicalEvaluationPayload = z.infer;\n\nexport const CanonicalAnalysisRunSchema = z.object({\n runId: z.number().int().min(1),\n analyzedAt: z.string(),\n phase1Output: Phase1OutputSchema,\n activitySessions: z.array(ReportActivitySessionSchema),\n deterministicScores: DeterministicScoresSchema,\n typeResult: DeterministicTypeResultSchema.nullable(),\n domainResults: z.array(DomainResultSchema),\n stageOutputs: CanonicalStageOutputsSchema,\n evaluation: CanonicalEvaluationPayloadSchema,\n translation: TranslatorOutputSchema.optional(),\n debug: z.record(z.string(), z.unknown()).optional(),\n});\nexport type CanonicalAnalysisRun = z.infer;\n\nexport interface CanonicalAnalysisRunParts {\n runId: number;\n analyzedAt: string;\n phase1Output: Phase1Output;\n activitySessions: ReportActivitySession[];\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n}\n","/**\n * Canonical Analysis Evaluation Assembly\n *\n * Shared plugin/server logic for canonical run assembly and translated\n * report-field overlays. The plugin uses the full canonical builder and\n * the server reuses the translation merge helpers for final evaluation\n * convergence.\n *\n * @module @betterprompt/shared/evaluation/canonical-analysis\n */\n\nimport type {\n CanonicalAnalysisRun,\n CanonicalStageOutputs,\n ContentWriterOutput,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n Evidence,\n EvidenceVerificationOutput,\n Phase1Output,\n ProjectSummary,\n ReportActivitySession,\n SessionSummary,\n TranslatorOutput,\n WeeklyInsights,\n} from '../schemas/index.js';\n\ntype EvaluationPayload = CanonicalAnalysisRun['evaluation'];\ntype TranslationFields = Record;\n\ninterface FinalEvaluationEnvelopeArgs {\n sessionId: string;\n analyzedAt: string;\n sessionsAnalyzed: number;\n avgPromptLength: number;\n avgTurnsPerSession: number;\n assembledSections?: Record;\n sessionSummaries?: unknown;\n activitySessions?: unknown;\n projectSummaries?: unknown;\n weeklyInsights?: unknown;\n agentOutputs?: unknown;\n translatedAgentInsights?: unknown;\n knowledgeResources?: unknown;\n pipelineTokenUsage?: unknown;\n analysisMetadata?: unknown;\n}\n\n/** Maps worker domain → evaluation dimension (used by topFocusAreas for report display). */\nconst DOMAIN_TO_EVALUATION_DIMENSION: Record = {\n thinkingQuality: 'aiControl',\n communicationPatterns: 'aiCollaboration',\n learningBehavior: 'skillResilience',\n contextEfficiency: 'contextEngineering',\n sessionOutcome: 'burnoutRisk',\n};\n\nfunction normalizeQuote(text: string): string {\n return text.replace(/\\s+/g, ' ').trim();\n}\n\nfunction buildVerificationKey(utteranceId: string, quote: string): string {\n return `${utteranceId}::${normalizeQuote(quote)}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction filterEvidence(\n evidence: Evidence[],\n verification?: EvidenceVerificationOutput,\n): Evidence[] {\n if (!verification?.verifiedResults?.length) {\n return evidence;\n }\n\n const verifiedKeys = new Set(\n verification.verifiedResults\n .filter(item => item.verified)\n .map(item => buildVerificationKey(item.utteranceId, item.quote)),\n );\n\n return evidence.filter(item => {\n if (!item || typeof item === 'string') {\n return false;\n }\n return verifiedKeys.has(buildVerificationKey(item.utteranceId, item.quote));\n });\n}\n\nexport function applyEvidenceVerification(\n domainResults: DomainResult[],\n verification?: EvidenceVerificationOutput,\n): DomainResult[] {\n if (!verification?.verifiedResults?.length) {\n return domainResults;\n }\n\n return domainResults.map(result => ({\n ...result,\n strengths: result.strengths\n .map(strength => ({\n ...strength,\n evidence: filterEvidence(strength.evidence, verification),\n }))\n .filter(strength => strength.evidence.length > 0),\n growthAreas: result.growthAreas\n .map(area => ({\n ...area,\n evidence: filterEvidence(area.evidence, verification),\n }))\n .filter(area => area.evidence.length > 0),\n }));\n}\n\nfunction buildSessionSummaryLookup(\n sessionSummaries?: { summaries?: SessionSummary[] },\n): Map {\n const lookup = new Map();\n for (const item of sessionSummaries?.summaries ?? []) {\n lookup.set(item.sessionId, item.summary);\n }\n return lookup;\n}\n\nexport function buildReportActivitySessions(\n phase1Output: Phase1Output,\n sessionSummaries?: { summaries?: SessionSummary[] },\n): ReportActivitySession[] {\n const summaryLookup = buildSessionSummaryLookup(sessionSummaries);\n\n return (phase1Output.activitySessions ?? []).map(session => ({\n sessionId: session.sessionId,\n projectName: session.projectName,\n startTime: session.startTime,\n durationMinutes: Math.round(((session.durationSeconds ?? 0) / 60) * 10) / 10,\n messageCount: session.messageCount,\n summary: summaryLookup.get(session.sessionId)\n ?? session.firstUserMessage\n ?? 'Session activity',\n ...(typeof session.totalInputTokens === 'number'\n ? { totalInputTokens: session.totalInputTokens }\n : {}),\n ...(typeof session.totalOutputTokens === 'number'\n ? { totalOutputTokens: session.totalOutputTokens }\n : {}),\n }));\n}\n\nexport function assembleFinalEvaluationEnvelope(\n args: FinalEvaluationEnvelopeArgs,\n): Record {\n const evaluation: Record = {\n sessionId: args.sessionId,\n analyzedAt: args.analyzedAt,\n sessionsAnalyzed: args.sessionsAnalyzed,\n avgPromptLength: args.avgPromptLength,\n avgTurnsPerSession: args.avgTurnsPerSession,\n ...(args.activitySessions !== undefined ? { activitySessions: args.activitySessions } : {}),\n ...(args.sessionSummaries !== undefined ? { sessionSummaries: args.sessionSummaries } : {}),\n ...(args.projectSummaries !== undefined ? { projectSummaries: args.projectSummaries } : {}),\n ...(args.weeklyInsights !== undefined ? { weeklyInsights: args.weeklyInsights } : {}),\n ...(args.assembledSections ?? {}),\n ...(args.agentOutputs !== undefined ? { agentOutputs: args.agentOutputs } : {}),\n ...(args.translatedAgentInsights !== undefined\n ? { translatedAgentInsights: args.translatedAgentInsights }\n : {}),\n ...(args.knowledgeResources !== undefined ? { knowledgeResources: args.knowledgeResources } : {}),\n ...(args.pipelineTokenUsage !== undefined ? { pipelineTokenUsage: args.pipelineTokenUsage } : {}),\n ...(args.analysisMetadata !== undefined ? { analysisMetadata: args.analysisMetadata } : {}),\n };\n\n return evaluation;\n}\n\nfunction toPromptPatternFrequency(value: unknown): 'frequent' | 'occasional' | 'rare' {\n if (typeof value === 'number') {\n if (value >= 0.34) return 'frequent';\n if (value >= 0.12) return 'occasional';\n return 'rare';\n }\n\n if (typeof value === 'string') {\n if (value === 'frequent' || value === 'occasional' || value === 'rare') {\n return value;\n }\n if (value === 'often' || value === 'high') return 'frequent';\n if (value === 'sometimes' || value === 'medium') return 'occasional';\n }\n\n return 'occasional';\n}\n\nfunction toPromptPatternEffectiveness(value: unknown): 'highly_effective' | 'effective' | 'could_improve' {\n if (typeof value === 'string') {\n if (value === 'highly_effective' || value === 'effective' || value === 'could_improve') {\n return value;\n }\n if (value === 'very_effective' || value === 'high') return 'highly_effective';\n if (value === 'medium' || value === 'moderate') return 'effective';\n }\n return 'effective';\n}\n\nfunction buildPromptPatterns(domainResults: DomainResult[]): Array> {\n const communication = domainResults.find(result => result.domain === 'communicationPatterns');\n const rawPatterns = communication?.data && typeof communication.data === 'object'\n ? (communication.data as Record).communicationPatterns\n : undefined;\n\n if (!Array.isArray(rawPatterns)) {\n return [];\n }\n\n return rawPatterns\n .filter((pattern): pattern is Record => !!pattern && typeof pattern === 'object')\n .map((pattern, index) => {\n const evidence = Array.isArray(pattern.evidence) ? pattern.evidence : [];\n return {\n patternName: typeof pattern.title === 'string'\n ? pattern.title\n : typeof pattern.patternId === 'string'\n ? pattern.patternId\n : `Pattern ${index + 1}`,\n description: typeof pattern.description === 'string' ? pattern.description : '',\n frequency: toPromptPatternFrequency(pattern.frequency),\n examples: evidence\n .filter((item): item is { quote?: unknown; context?: unknown } => !!item && typeof item === 'object')\n .map(item => ({\n quote: typeof item.quote === 'string' ? item.quote : '',\n analysis: typeof item.context === 'string' ? item.context : 'Observed in communication behavior',\n }))\n .filter(item => item.quote)\n .slice(0, 3),\n effectiveness: toPromptPatternEffectiveness(pattern.effectiveness),\n };\n })\n .filter(pattern => typeof pattern.description === 'string' && pattern.description.length > 0);\n}\n\nfunction buildTopFocusAreas(contentWriter?: ContentWriterOutput): EvaluationPayload['topFocusAreas'] {\n if (!contentWriter?.topFocusAreas?.length) {\n return undefined;\n }\n\n return {\n summary: 'Highest-leverage collaboration habits surfaced in this analysis.',\n areas: contentWriter.topFocusAreas.slice(0, 3).map((area, index) => ({\n rank: index + 1,\n dimension: DOMAIN_TO_EVALUATION_DIMENSION[area.relatedQualities[0] ?? ''] ?? 'aiCollaboration',\n title: area.title,\n narrative: area.description,\n expectedImpact: `Improves ${area.relatedQualities.join(', ') || 'overall collaboration quality'}.`,\n priorityScore: Math.max(100 - index * 10, 70),\n ...(area.actions ? { actions: area.actions } : {}),\n })),\n };\n}\n\nfunction inferWeekRange(activitySessions: ReportActivitySession[], analyzedAt: string): { start: string; end: string } {\n const end = activitySessions[0]?.startTime ?? analyzedAt;\n const startDate = new Date(end);\n startDate.setDate(startDate.getDate() - 6);\n return {\n start: startDate.toISOString(),\n end,\n };\n}\n\nfunction buildWeeklyInsights(\n weeklyInsights: WeeklyInsights | undefined,\n activitySessions: ReportActivitySession[],\n analyzedAt: string,\n): EvaluationPayload['weeklyInsights'] {\n if (!weeklyInsights) {\n return undefined;\n }\n\n const totalMinutes = weeklyInsights.stats.totalMinutes;\n\n return {\n weekRange: inferWeekRange(activitySessions, analyzedAt),\n stats: {\n totalSessions: weeklyInsights.stats.sessionCount,\n totalMinutes,\n totalTokens: weeklyInsights.stats.totalTokens,\n activeDays: weeklyInsights.stats.activeDays,\n avgSessionMinutes: weeklyInsights.stats.sessionCount > 0\n ? Math.round((totalMinutes / weeklyInsights.stats.sessionCount) * 10) / 10\n : 0,\n },\n ...(typeof weeklyInsights.stats.deltaSessionCount === 'number'\n || typeof weeklyInsights.stats.deltaMinutes === 'number'\n || typeof weeklyInsights.stats.deltaTokens === 'number'\n ? {\n comparison: {\n sessionsDelta: weeklyInsights.stats.deltaSessionCount ?? 0,\n minutesDelta: weeklyInsights.stats.deltaMinutes ?? 0,\n tokensDelta: weeklyInsights.stats.deltaTokens ?? 0,\n activeDaysDelta: 0,\n },\n }\n : {}),\n projects: weeklyInsights.projects.map(project => ({\n projectName: project.projectName,\n sessionCount: project.sessionCount,\n totalMinutes: Math.round((totalMinutes * project.percentage) / 100),\n percentage: project.percentage,\n })),\n topProjectSessions: weeklyInsights.topSessions.map(session => {\n const activity = activitySessions.find(item => item.sessionId === session.sessionId);\n return {\n summary: session.summary,\n durationMinutes: activity?.durationMinutes ?? 0,\n date: activity?.startTime\n ? new Date(activity.startTime).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n : '',\n };\n }),\n narrative: weeklyInsights.narrative,\n highlights: weeklyInsights.highlights,\n };\n}\n\nfunction buildWorkerInsights(domainResults: DomainResult[]): Record {\n const workerInsights: Record = {};\n\n for (const result of domainResults) {\n if (result.domain === 'content') continue;\n\n workerInsights[result.domain] = {\n strengths: result.strengths,\n growthAreas: result.growthAreas,\n domainScore: result.overallScore,\n };\n }\n\n return workerInsights;\n}\n\n// ============================================================================\n// Structured Sub-Analysis Assembly (Fix 4)\n//\n// These functions extract secondary structures from the thinkingQuality\n// domain's `data` field and surface them as top-level evaluation fields.\n// The server's evaluation-assembler produces these; without them, the\n// report's detail panels appear empty.\n// ============================================================================\n\nfunction formatDisplayName(type: string): string {\n return type\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction mapAntiPatternSeverity(severity: unknown): 'mild' | 'moderate' | 'significant' {\n if (severity === 'critical' || severity === 'significant') return 'significant';\n if (severity === 'mild') return 'mild';\n return 'moderate';\n}\n\nfunction buildAntiPatternsAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const antiPatterns = data?.verificationAntiPatterns;\n\n if (!Array.isArray(antiPatterns) || antiPatterns.length === 0) {\n return undefined;\n }\n\n const detected = antiPatterns\n .filter((ap): ap is Record => isRecord(ap))\n .map(ap => {\n const type = String(ap.type ?? 'unknown');\n return {\n antiPatternType: type,\n displayName: formatDisplayName(type),\n description: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Detected ${type.replace(/_/g, ' ')} pattern`,\n occurrences: typeof ap.frequency === 'number' ? ap.frequency : 1,\n severity: mapAntiPatternSeverity(ap.severity),\n evidence: Array.isArray(ap.examples)\n ? ap.examples\n .filter((e): e is Record => isRecord(e))\n .map(e => typeof e.quote === 'string' ? e.quote : '')\n .filter(Boolean)\n : [],\n growthOpportunity: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Consider addressing the ${type.replace(/_/g, ' ')} pattern`,\n actionableTip: typeof ap.improvement === 'string'\n ? ap.improvement\n : `Try to be more mindful of ${type.replace(/_/g, ' ')} patterns`,\n };\n });\n\n return {\n detected,\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Some growth opportunities were identified. These are common learning patterns that every developer experiences.',\n overallHealthScore: tq?.overallScore ?? 80,\n };\n}\n\nfunction buildCriticalThinkingAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const moments = data?.criticalThinkingMoments;\n\n if (!Array.isArray(moments) || moments.length === 0) {\n return undefined;\n }\n\n const strengths = moments\n .filter((ct): ct is Record => isRecord(ct))\n .map(ct => ({\n indicatorType: typeof ct.type === 'string' ? ct.type : 'unknown',\n displayName: formatDisplayName(typeof ct.type === 'string' ? ct.type : 'unknown'),\n description: typeof ct.result === 'string'\n ? ct.result\n : `Demonstrated ${String(ct.type ?? 'critical thinking').replace(/_/g, ' ')}`,\n frequency: 1,\n quality: 'intermediate' as const,\n evidence: typeof ct.quote === 'string' ? [ct.quote] : [],\n }));\n\n const uniqueTypes = new Set(moments\n .filter((ct): ct is Record => isRecord(ct))\n .map(ct => ct.type));\n const overallScore = Math.min(100, 40 + uniqueTypes.size * 10 + moments.length * 5);\n\n return {\n strengths,\n opportunities: [],\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Shows signs of critical evaluation when working with AI-generated content.',\n overallScore,\n };\n}\n\nfunction buildPlanningAnalysis(domainResults: DomainResult[]): Record | undefined {\n const tq = domainResults.find(r => r.domain === 'thinkingQuality');\n const data = tq?.data as Record | undefined;\n const habits = data?.planningHabits;\n\n if (!Array.isArray(habits) || habits.length === 0) {\n return undefined;\n }\n\n const hasSlashPlan = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'uses_plan_command');\n const hasTodoWrite = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'todowrite_usage');\n const hasTaskDecomp = habits.some((h): h is Record =>\n isRecord(h) && h.type === 'task_decomposition');\n\n const maturityLevel = hasSlashPlan && hasTaskDecomp ? 'expert'\n : hasSlashPlan ? 'structured'\n : (hasTodoWrite || hasTaskDecomp) ? 'emerging'\n : 'reactive';\n\n const strengths: Array> = [];\n const opportunities: Array> = [];\n\n for (const habit of habits) {\n if (!isRecord(habit)) continue;\n\n const type = typeof habit.type === 'string' ? habit.type : 'unknown';\n const frequency = typeof habit.frequency === 'string' ? habit.frequency : 'sometimes';\n const effectiveness = typeof habit.effectiveness === 'string' ? habit.effectiveness : 'medium';\n\n const insight = {\n behaviorType: type,\n displayName: formatDisplayName(type),\n description: `Planning habit \"${type.replace(/_/g, ' ')}\" observed with ${frequency} frequency`,\n frequency: frequency === 'always' || frequency === 'often' ? 3 : frequency === 'sometimes' ? 2 : 1,\n sophistication: effectiveness === 'high' ? 'advanced' : effectiveness === 'medium' ? 'intermediate' : 'basic',\n evidence: Array.isArray(habit.examples) ? habit.examples : [],\n };\n\n const isStrength = effectiveness === 'high' || frequency === 'always' || frequency === 'often';\n if (isStrength) {\n strengths.push(insight);\n } else {\n opportunities.push(insight);\n }\n }\n\n return {\n strengths,\n opportunities,\n summary: typeof data?.summary === 'string'\n ? data.summary\n : 'Shows planning awareness in development workflow.',\n planningMaturityLevel: maturityLevel,\n };\n}\n\nfunction normalizeInefficiencyPattern(value: unknown): string {\n if (value === 'late_compact'\n || value === 'context_bloat'\n || value === 'redundant_info'\n || value === 'prompt_length_inflation'\n || value === 'no_session_separation'\n || value === 'verbose_error_pasting'\n || value === 'no_knowledge_persistence') {\n return value;\n }\n\n if (value === 'stale_context' || value === 'context_spillover') {\n return 'context_bloat';\n }\n\n return 'context_bloat';\n}\n\nfunction buildAgentOutputs(\n phase1Output: Phase1Output,\n domainResults: DomainResult[],\n): Record | undefined {\n const contextEfficiency = domainResults.find(result => result.domain === 'contextEfficiency');\n const patterns = contextEfficiency?.data && typeof contextEfficiency.data === 'object'\n ? (contextEfficiency.data as Record).inefficiencyPatterns\n : undefined;\n\n if (!contextEfficiency) {\n return undefined;\n }\n\n const mappedPatterns = Array.isArray(patterns)\n ? patterns\n .filter((pattern): pattern is Record => isRecord(pattern))\n .map(pattern => ({\n pattern: normalizeInefficiencyPattern(pattern.type ?? pattern.pattern),\n frequency: typeof pattern.frequency === 'number'\n ? Math.max(1, Math.round(pattern.frequency))\n : 1,\n impact: pattern.impact === 'high' || pattern.impact === 'low' ? pattern.impact : 'medium',\n description: typeof pattern.description === 'string'\n ? pattern.description\n : `Observed ${String(pattern.type ?? pattern.pattern ?? 'context issue')} behavior with ${String(pattern.impact ?? 'medium')} impact.`,\n }))\n : [];\n\n return {\n efficiency: {\n contextUsagePatterns: [],\n inefficiencyPatterns: mappedPatterns,\n promptLengthTrends: [],\n redundantInfo: [],\n topInsights: [],\n overallEfficiencyScore: contextEfficiency.overallScore,\n avgContextFillPercent: phase1Output.sessionMetrics.avgContextFillPercent ?? 0,\n confidenceScore: contextEfficiency.confidenceScore,\n strengths: contextEfficiency.strengths,\n growthAreas: contextEfficiency.growthAreas,\n },\n };\n}\n\nfunction mergePromptPatternTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!Array.isArray(translatedFields.promptPatterns) || !Array.isArray(evaluation.promptPatterns)) {\n return;\n }\n\n const translatedPatterns = translatedFields.promptPatterns as Array>;\n const englishPatterns = evaluation.promptPatterns as Array>;\n const minLength = Math.min(translatedPatterns.length, englishPatterns.length);\n\n for (let i = 0; i < minLength; i += 1) {\n const translated = translatedPatterns[i];\n const english = englishPatterns[i];\n\n if (typeof translated.patternName === 'string') english.patternName = translated.patternName;\n if (typeof translated.description === 'string') english.description = translated.description;\n if (typeof translated.tip === 'string') english.tip = translated.tip;\n\n if (!Array.isArray(translated.examples) || !Array.isArray(english.examples)) {\n continue;\n }\n\n const translatedExamples = translated.examples as Array>;\n const englishExamples = english.examples as Array>;\n const exampleCount = Math.min(translatedExamples.length, englishExamples.length);\n\n for (let j = 0; j < exampleCount; j += 1) {\n if (typeof translatedExamples[j]?.analysis === 'string') {\n englishExamples[j].analysis = translatedExamples[j].analysis;\n }\n }\n }\n}\n\nfunction mergeTopFocusAreaTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.topFocusAreas) || !isRecord(evaluation.topFocusAreas)) {\n return;\n }\n\n const translated = translatedFields.topFocusAreas;\n const english = evaluation.topFocusAreas;\n\n if (typeof translated.summary === 'string') {\n english.summary = translated.summary;\n }\n\n if (!Array.isArray(translated.areas) || !Array.isArray(english.areas)) {\n return;\n }\n\n const englishAreas = english.areas as Array>;\n\n for (const translatedArea of translated.areas as Array>) {\n const rank = typeof translatedArea.rank === 'number' ? translatedArea.rank : null;\n const englishArea = rank === null\n ? undefined\n : englishAreas.find(area => area.rank === rank);\n\n if (!englishArea) continue;\n\n if (typeof translatedArea.title === 'string') englishArea.title = translatedArea.title;\n if (typeof translatedArea.narrative === 'string') englishArea.narrative = translatedArea.narrative;\n if (typeof translatedArea.expectedImpact === 'string') {\n englishArea.expectedImpact = translatedArea.expectedImpact;\n }\n\n if (!isRecord(translatedArea.actions) || !isRecord(englishArea.actions)) {\n continue;\n }\n\n englishArea.actions = {\n start: typeof translatedArea.actions.start === 'string' ? translatedArea.actions.start : '',\n stop: typeof translatedArea.actions.stop === 'string' ? translatedArea.actions.stop : '',\n continue: typeof translatedArea.actions.continue === 'string' ? translatedArea.actions.continue : '',\n };\n }\n}\n\nfunction mergeProjectSummaryTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!Array.isArray(translatedFields.projectSummaries) || !Array.isArray(evaluation.projectSummaries)) {\n return;\n }\n\n const englishProjects = evaluation.projectSummaries as Array>;\n\n for (const translatedProject of translatedFields.projectSummaries as Array>) {\n const projectName = typeof translatedProject.projectName === 'string'\n ? translatedProject.projectName\n : null;\n const englishProject = projectName\n ? englishProjects.find(project => project.projectName === projectName)\n : undefined;\n\n if (!englishProject || !Array.isArray(translatedProject.summaryLines)) {\n continue;\n }\n\n englishProject.summaryLines = translatedProject.summaryLines;\n }\n}\n\nfunction mergeWeeklyInsightTranslations(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.weeklyInsights) || !isRecord(evaluation.weeklyInsights)) {\n return;\n }\n\n const translated = translatedFields.weeklyInsights;\n const english = evaluation.weeklyInsights;\n\n if (typeof translated.narrative === 'string') {\n english.narrative = translated.narrative;\n }\n\n if (Array.isArray(translated.highlights)) {\n english.highlights = translated.highlights;\n }\n\n if (!Array.isArray(translated.topSessionSummaries) || !Array.isArray(english.topProjectSessions)) {\n return;\n }\n\n const englishTopSessions = english.topProjectSessions as Array>;\n const sessionCount = Math.min(translated.topSessionSummaries.length, englishTopSessions.length);\n\n for (let i = 0; i < sessionCount; i += 1) {\n if (typeof translated.topSessionSummaries[i] === 'string') {\n englishTopSessions[i].summary = translated.topSessionSummaries[i];\n }\n }\n}\n\nfunction mergeTranslatedAgentInsights(\n evaluation: Record,\n translatedFields: TranslationFields,\n): void {\n if (!isRecord(translatedFields.translatedAgentInsights)) {\n return;\n }\n\n evaluation.translatedAgentInsights = translatedFields.translatedAgentInsights;\n}\n\nexport function mergeTranslatedEvaluationFields(\n evaluation: Record,\n translatedFields: TranslationFields,\n targetLanguage?: string,\n): void {\n const cjkLanguages = new Set(['ko', 'ja', 'zh']);\n const minLengthRatio = targetLanguage && cjkLanguages.has(targetLanguage) ? 0.45 : 0.65;\n\n if (typeof translatedFields.personalitySummary === 'string') {\n const englishSummary = typeof evaluation.personalitySummary === 'string'\n ? evaluation.personalitySummary\n : '';\n const translatedSummary = translatedFields.personalitySummary;\n const ratio = englishSummary.length > 0 ? translatedSummary.length / englishSummary.length : 1;\n\n if (englishSummary.length === 0 || ratio >= minLengthRatio) {\n evaluation.personalitySummary = translatedSummary;\n }\n }\n\n mergeTranslatedAgentInsights(evaluation, translatedFields);\n mergeProjectSummaryTranslations(evaluation, translatedFields);\n mergeWeeklyInsightTranslations(evaluation, translatedFields);\n mergePromptPatternTranslations(evaluation, translatedFields);\n mergeTopFocusAreaTranslations(evaluation, translatedFields);\n}\n\nfunction mergeTranslation(\n evaluation: EvaluationPayload,\n translator?: TranslatorOutput,\n): void {\n if (!translator?.translatedFields || typeof translator.translatedFields !== 'object') {\n return;\n }\n\n mergeTranslatedEvaluationFields(\n evaluation as Record,\n translator.translatedFields as TranslationFields,\n translator.targetLanguage,\n );\n}\n\nexport function buildCanonicalEvaluation(args: {\n analyzedAt: string;\n phase1Output: Phase1Output;\n activitySessions: ReportActivitySession[];\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n}): EvaluationPayload {\n const {\n analyzedAt,\n phase1Output,\n activitySessions,\n deterministicScores,\n typeResult,\n domainResults,\n stageOutputs,\n } = args;\n\n const filteredDomainResults = applyEvidenceVerification(\n domainResults,\n stageOutputs.evidenceVerification,\n );\n\n const confidenceScores = filteredDomainResults\n .map(result => result.confidenceScore)\n .filter((score): score is number => typeof score === 'number');\n const overallConfidence = confidenceScores.length > 0\n ? Math.round((confidenceScores.reduce((sum, score) => sum + score, 0) / confidenceScores.length) * 100) / 100\n : 0;\n const filteredEvidenceCount = stageOutputs.evidenceVerification?.domainStats\n ?.reduce((sum, stat) => sum + stat.filteredCount, 0) ?? 0;\n const dataQuality = phase1Output.sessionMetrics.totalSessions >= 10\n ? 'high'\n : phase1Output.sessionMetrics.totalSessions >= 5\n ? 'medium'\n : 'low';\n\n const agentOutputs = buildAgentOutputs(phase1Output, filteredDomainResults);\n\n // Build sub-analyses once (avoid double-calling non-trivial functions)\n const antiPatterns = buildAntiPatternsAnalysis(filteredDomainResults);\n const criticalThinking = buildCriticalThinkingAnalysis(filteredDomainResults);\n const planning = buildPlanningAnalysis(filteredDomainResults);\n\n const evaluation = assembleFinalEvaluationEnvelope({\n sessionId: activitySessions[0]?.sessionId\n ?? phase1Output.activitySessions?.[0]?.sessionId\n ?? 'plugin-local-analysis',\n analyzedAt,\n sessionsAnalyzed: phase1Output.sessionMetrics.totalSessions,\n avgPromptLength: Math.round(phase1Output.sessionMetrics.avgDeveloperMessageLength),\n avgTurnsPerSession: Math.round(phase1Output.sessionMetrics.avgMessagesPerSession * 10) / 10,\n activitySessions,\n sessionSummaries: stageOutputs.sessionSummaries?.summaries,\n projectSummaries: stageOutputs.projectSummaries?.projects as ProjectSummary[] | undefined,\n weeklyInsights: buildWeeklyInsights(stageOutputs.weeklyInsights, activitySessions, analyzedAt),\n assembledSections: {\n primaryType: typeResult?.primaryType ?? 'analyst',\n controlLevel: typeResult?.controlLevel ?? 'navigator',\n ...(typeof typeResult?.controlScore === 'number' ? { controlScore: typeResult.controlScore } : {}),\n distribution: typeResult?.distribution ?? {\n architect: 20,\n analyst: 20,\n conductor: 20,\n speedrunner: 20,\n trendsetter: 20,\n },\n personalitySummary: stageOutputs.typeClassification?.personalityNarrative?.join('\\n\\n')\n ?? stageOutputs.typeClassification?.reasoning?.join('\\n\\n')\n ?? '',\n promptPatterns: buildPromptPatterns(filteredDomainResults),\n topFocusAreas: buildTopFocusAreas(stageOutputs.contentWriter),\n workerInsights: buildWorkerInsights(filteredDomainResults),\n // Structured sub-analyses from thinkingQuality domain data (Fix 4)\n ...(antiPatterns ? { antiPatternsAnalysis: antiPatterns } : {}),\n ...(criticalThinking ? { criticalThinkingAnalysis: criticalThinking } : {}),\n ...(planning ? { planningAnalysis: planning } : {}),\n },\n agentOutputs,\n pipelineTokenUsage: {\n stages: [],\n totals: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },\n cost: { inputCost: 0, outputCost: 0, totalCost: 0 },\n model: 'plugin-local',\n modelName: 'plugin-local',\n },\n analysisMetadata: {\n overallConfidence,\n totalMessagesAnalyzed: phase1Output.sessionMetrics.totalMessages,\n dataQuality,\n analysisDateRange: phase1Output.sessionMetrics.dateRange,\n confidenceThreshold: stageOutputs.evidenceVerification ? 0.5 : undefined,\n insightsFiltered: filteredEvidenceCount,\n deterministicScores,\n evidenceVerification: stageOutputs.evidenceVerification\n ? {\n threshold: stageOutputs.evidenceVerification.threshold,\n domainStats: stageOutputs.evidenceVerification.domainStats,\n }\n : undefined,\n },\n }) as EvaluationPayload;\n\n mergeTranslation(evaluation, stageOutputs.translator);\n\n return evaluation;\n}\n\nexport function assembleCanonicalAnalysisRun(args: {\n runId: number;\n analyzedAt: string;\n phase1Output: Phase1Output;\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n}): CanonicalAnalysisRun {\n const activitySessions = buildReportActivitySessions(\n args.phase1Output,\n args.stageOutputs.sessionSummaries,\n );\n\n const evaluation = buildCanonicalEvaluation({\n analyzedAt: args.analyzedAt,\n phase1Output: args.phase1Output,\n activitySessions,\n deterministicScores: args.deterministicScores,\n typeResult: args.typeResult,\n domainResults: args.domainResults,\n stageOutputs: args.stageOutputs,\n });\n\n return {\n runId: args.runId,\n analyzedAt: args.analyzedAt,\n phase1Output: args.phase1Output,\n activitySessions,\n deterministicScores: args.deterministicScores,\n typeResult: args.typeResult,\n domainResults: applyEvidenceVerification(\n args.domainResults,\n args.stageOutputs.evidenceVerification,\n ),\n stageOutputs: args.stageOutputs,\n evaluation,\n ...(args.stageOutputs.translator ? { translation: args.stageOutputs.translator } : {}),\n };\n}\n","/**\n * Deterministic Scorer - Rubric-based scoring from Phase 1 metrics\n *\n * Pure function: Phase1Output -> DeterministicScores\n * Same input always produces same output. No LLM calls, no external state.\n *\n * @module @betterprompt/shared/scoring/deterministic-scorer\n */\n\nimport type { Phase1Output, Phase1SessionMetrics } from '../schemas/phase1-output.js';\nimport type { DeterministicScores } from '../schemas/deterministic-scores.js';\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nfunction clampScore(value: number, min = 0, max = 100): number {\n return Math.round(Math.max(min, Math.min(max, value)));\n}\n\nfunction invertedScale(value: number): number {\n return 100 - Math.max(0, Math.min(100, value));\n}\n\nfunction bellCurveScore(\n value: number,\n optimalLow: number,\n optimalHigh: number,\n falloffRate = 0.01,\n): number {\n if (value >= optimalLow && value <= optimalHigh) return 100;\n const distance = value < optimalLow ? optimalLow - value : value - optimalHigh;\n return 100 * Math.exp(-falloffRate * distance * distance);\n}\n\nfunction coefficientOfVariation(values: number[]): number {\n if (values.length === 0) return 0;\n const mean = values.reduce((sum, v) => sum + v, 0) / values.length;\n if (mean === 0) return 0;\n const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;\n return Math.sqrt(variance) / mean;\n}\n\n// ============================================================================\n// Domain Rubrics\n// ============================================================================\n\nfunction scoreContextEfficiency(metrics: Phase1SessionMetrics): number {\n const avgFill = metrics.avgContextFillPercent ?? 50;\n const totalSessions = Math.max(metrics.totalSessions, 1);\n\n const baseScore = invertedScale(avgFill);\n\n const overflowCount = metrics.contextFillExceeded90Count ?? 0;\n const overflowRatio = overflowCount / totalSessions;\n const overflowPenalty = overflowRatio * 30;\n\n const slashCmds = metrics.slashCommandCounts ?? {};\n const compactCount = (slashCmds['compact'] ?? 0) + (slashCmds['clear'] ?? 0);\n const compactionBonus = compactCount > 0 ? Math.min(compactCount * 3, 15) : 0;\n\n const longSessionRatio = (metrics.sessionHints?.longSessions ?? 0) / totalSessions;\n const longSessionPenalty = longSessionRatio * 10;\n\n return clampScore(baseScore - overflowPenalty + compactionBonus - longSessionPenalty);\n}\n\nfunction scoreSessionOutcome(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const friction = metrics.frictionSignals;\n\n const toolFailures = friction?.toolFailureCount ?? 0;\n const rejections = friction?.userRejectionSignals ?? 0;\n const excessiveIterations = friction?.excessiveIterationSessions ?? 0;\n const contextOverflows = friction?.contextOverflowSessions ?? 0;\n const frustrationExpressions = friction?.frustrationExpressionCount ?? 0;\n\n const totalFriction = toolFailures + rejections + excessiveIterations + contextOverflows + frustrationExpressions;\n const frictionDensity = totalFriction / totalSessions;\n\n const baseScore = 85 * Math.exp(-0.3 * frictionDensity);\n\n const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0;\n const mediumRatio = mediumSessions / totalSessions;\n const balanceBonus = mediumRatio * 15;\n\n const excessiveRatio = excessiveIterations / totalSessions;\n const excessivePenalty = excessiveRatio * 10;\n\n return clampScore(baseScore + balanceBonus - excessivePenalty);\n}\n\nfunction scoreThinkingQuality(metrics: Phase1SessionMetrics): number {\n const slashCmds = metrics.slashCommandCounts ?? {};\n\n // Planning (40% weight)\n const planCount = slashCmds['plan'] ?? 0;\n const reviewCount = slashCmds['review'] ?? 0;\n const planningActivityCount = planCount + reviewCount;\n const planningScore = planningActivityCount > 0\n ? 30 + 55 * (1 - Math.exp(-0.4 * planningActivityCount))\n : 30;\n\n // Critical thinking (30% weight)\n const questionRatio = metrics.questionRatio;\n const criticalThinkingFromQuestions = bellCurveScore(questionRatio * 100, 15, 40, 0.003);\n const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / Math.max(metrics.totalDeveloperUtterances, 1);\n const criticalThinkingFromRejections = bellCurveScore(rejectionRate * 100, 2, 10, 0.005);\n const criticalThinkingScore = criticalThinkingFromQuestions * 0.6 + criticalThinkingFromRejections * 0.4;\n\n // Error recovery (30% weight)\n const toolFailureRate = (metrics.frictionSignals?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1);\n let errorRecoveryScore = 80 * Math.exp(-8 * toolFailureRate) + 20;\n const errorChainMax = metrics.frictionSignals?.errorChainMaxLength ?? 0;\n if (errorChainMax >= 3) {\n const chainPenalty = Math.min((errorChainMax - 2) * 5, 30);\n errorRecoveryScore = Math.max(0, errorRecoveryScore - chainPenalty);\n }\n\n return clampScore(\n planningScore * 0.4 +\n criticalThinkingScore * 0.3 +\n errorRecoveryScore * 0.3,\n );\n}\n\nfunction scoreLearningBehavior(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n // Learning intent (50% weight)\n const questionScore = Math.min(metrics.questionRatio * 200, 100);\n const insightCount = metrics.aiInsightBlockCount ?? 0;\n const insightEngagement = insightCount > 0\n ? 40 + 50 * (1 - Math.exp(-0.1 * insightCount))\n : 40;\n const learningIntentScore = questionScore * 0.6 + insightEngagement * 0.4;\n\n // Mistake repetition (30% weight)\n const excessiveIterationRate = (metrics.frictionSignals?.excessiveIterationSessions ?? 0) / totalSessions;\n const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const combinedMistakeRate = excessiveIterationRate + bareRetryRate;\n const mistakeScore = invertedScale(combinedMistakeRate * 100) * 0.8 + 20;\n\n // Experimentation (20% weight)\n const codeExperimentation = Math.min(metrics.codeBlockRatio * 150, 100);\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const diversityBonus = Math.min(uniqueCommands * 8, 40);\n const experimentationScore = codeExperimentation * 0.6 + diversityBonus * 0.4 + 20;\n\n return clampScore(\n learningIntentScore * 0.5 +\n mistakeScore * 0.3 +\n experimentationScore * 0.2,\n );\n}\n\nfunction scoreCommunicationPatterns(\n metrics: Phase1SessionMetrics,\n phase1Output: Phase1Output,\n): number {\n // Prompt quality (40% weight)\n const avgLen = metrics.avgDeveloperMessageLength;\n const promptQualityScore = bellCurveScore(avgLen, 200, 500, 0.00003);\n\n // Structure (30% weight)\n const codeStructure = Math.min(metrics.codeBlockRatio * 200, 100);\n const questionStructure = Math.min(metrics.questionRatio * 250, 100);\n const structureScore = codeStructure * 0.5 + questionStructure * 0.5;\n\n // Consistency (30% weight)\n const wordCounts = phase1Output.developerUtterances.map(u => u.wordCount);\n const cv = coefficientOfVariation(wordCounts);\n const consistencyScore = 100 * Math.exp(-0.3 * cv);\n\n return clampScore(\n promptQualityScore * 0.4 +\n structureScore * 0.3 +\n consistencyScore * 0.3,\n );\n}\n\nfunction scoreControl(metrics: Phase1SessionMetrics): number {\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n const rejectionRate = (metrics.frictionSignals?.userRejectionSignals ?? 0) / totalUtterances;\n const rejectionSignal = Math.min(rejectionRate * 500, 100);\n\n const questionSignal = Math.min(metrics.questionRatio * 200, 100);\n\n const avgLen = metrics.avgDeveloperMessageLength;\n const lengthSignal = Math.min(avgLen / 5, 100);\n\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0);\n const commandSignal = Math.min((uniqueCommands * 10 + totalCommands * 2), 100);\n\n return clampScore(\n rejectionSignal * 0.25 +\n questionSignal * 0.25 +\n lengthSignal * 0.25 +\n commandSignal * 0.25,\n );\n}\n\n// ============================================================================\n// v2 Merged Domain Rubrics\n// ============================================================================\n\n/**\n * AI Partnership score: merges thinkingQuality + sessionOutcome + control signals.\n * Measures how effectively the developer partners with AI: planning, verification,\n * goal achievement, and appropriate control.\n */\nfunction scoreAiPartnership(metrics: Phase1SessionMetrics): number {\n const thinking = scoreThinkingQuality(metrics);\n const outcome = scoreSessionOutcome(metrics);\n const control = scoreControl(metrics);\n // Weighted: planning/thinking 40%, outcomes 35%, control 25%\n return clampScore(thinking * 0.4 + outcome * 0.35 + control * 0.25);\n}\n\n/**\n * Session Craft score: merges contextEfficiency + learningBehavior (burnout).\n * Measures session sustainability: efficient context usage, avoiding burnout\n * patterns, and learning from mistakes.\n */\nfunction scoreSessionCraft(metrics: Phase1SessionMetrics): number {\n const efficiency = scoreContextEfficiency(metrics);\n const learning = scoreLearningBehavior(metrics);\n // Weighted: context efficiency 55%, burnout/learning 45%\n return clampScore(efficiency * 0.55 + learning * 0.45);\n}\n\n/**\n * Skill Resilience score: based on cold-start capability, error recovery,\n * and maintaining quality across varied task types.\n */\nfunction scoreSkillResilience(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n\n // Cold start capability: short sessions with quick resolution\n const shortSessions = metrics.sessionHints?.shortSessions ?? 0;\n const shortRatio = shortSessions / totalSessions;\n const coldStartScore = bellCurveScore(shortRatio * 100, 20, 50, 0.003);\n\n // Error recovery: low bare-retry rate indicates resilient problem solving\n const bareRetryRate = (metrics.frictionSignals?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const recoveryScore = invertedScale(bareRetryRate * 200);\n\n // Task diversity: handling different types of work\n const slashCmds = metrics.slashCommandCounts ?? {};\n const uniqueCommands = Object.keys(slashCmds).length;\n const diversityScore = Math.min(uniqueCommands * 12 + 20, 100);\n\n return clampScore(\n coldStartScore * 0.3 +\n recoveryScore * 0.4 +\n diversityScore * 0.3,\n );\n}\n\n/**\n * Session Mastery score: absence-of-anti-pattern scoring.\n * Higher scores indicate clean sessions free of common pitfalls.\n * Expert developers produce clean sessions with no retries, no context\n * overflows, and focused single-topic work.\n *\n * Key principle: absence of scaffolding tool usage when skill is internalized\n * scores neutral or positive, never negative.\n */\nfunction scoreSessionMastery(metrics: Phase1SessionMetrics): number {\n const totalSessions = Math.max(metrics.totalSessions, 1);\n const totalUtterances = Math.max(metrics.totalDeveloperUtterances, 1);\n const friction = metrics.frictionSignals;\n\n // Anti-pattern: excessive iterations (sessions that spin without resolution)\n const excessiveIterationRate = (friction?.excessiveIterationSessions ?? 0) / totalSessions;\n const noExcessiveScore = invertedScale(excessiveIterationRate * 150);\n\n // Anti-pattern: context overflow (sessions that fill the context window)\n const overflowRate = (metrics.contextFillExceeded90Count ?? 0) / totalSessions;\n const noOverflowScore = invertedScale(overflowRate * 120);\n\n // Anti-pattern: bare retries after errors (copy-paste retry without thought)\n const bareRetryRate = (friction?.bareRetryAfterErrorCount ?? 0) / totalUtterances;\n const noRetryScore = invertedScale(bareRetryRate * 300);\n\n // Anti-pattern: frustration expressions\n const frustrationRate = (friction?.frustrationExpressionCount ?? 0) / totalUtterances;\n const noFrustrationScore = invertedScale(frustrationRate * 400);\n\n // Anti-pattern: tool failures (indicates poor tool command construction)\n const toolFailureRate = (friction?.toolFailureCount ?? 0) / Math.max(metrics.totalMessages, 1);\n const noToolFailureScore = invertedScale(toolFailureRate * 200);\n\n // Session focus: medium-length sessions indicate controlled, focused work\n const mediumSessions = metrics.sessionHints?.mediumSessions ?? 0;\n const focusBonus = (mediumSessions / totalSessions) * 15;\n\n return clampScore(\n noExcessiveScore * 0.25 +\n noOverflowScore * 0.2 +\n noRetryScore * 0.2 +\n noFrustrationScore * 0.15 +\n noToolFailureScore * 0.1 +\n focusBonus +\n 10, // baseline: everyone starts at 10\n );\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Compute deterministic scores from Phase 1 output.\n * Pure function: same Phase1Output always produces same DeterministicScores.\n *\n * v2: Returns 5-dimension scores + controlScore.\n */\nexport function computeDeterministicScores(phase1Output: Phase1Output): DeterministicScores {\n const metrics = phase1Output.sessionMetrics;\n\n return {\n aiPartnership: scoreAiPartnership(metrics),\n sessionCraft: scoreSessionCraft(metrics),\n toolMastery: scoreCommunicationPatterns(metrics, phase1Output),\n skillResilience: scoreSkillResilience(metrics),\n sessionMastery: scoreSessionMastery(metrics),\n controlScore: scoreControl(metrics),\n };\n}\n","/**\n * Shared Constants\n *\n * Matrix names, metadata, and other constants used across\n * the plugin and server.\n *\n * @module @betterprompt/shared/constants\n */\n\nimport type { CodingStyleType, AIControlLevel } from './schemas/deterministic-scores.js';\n\nexport const CONTEXT_WINDOW_SIZE = 200_000;\n\nexport const MATRIX_NAMES: Record> = {\n architect: {\n explorer: 'Visionary',\n navigator: 'Strategist',\n cartographer: 'Systems Architect',\n },\n analyst: {\n explorer: 'Questioner',\n navigator: 'Research Lead',\n cartographer: 'Quality Sentinel',\n },\n conductor: {\n explorer: 'Improviser',\n navigator: 'Arranger',\n cartographer: 'Maestro',\n },\n speedrunner: {\n explorer: 'Experimenter',\n navigator: 'Rapid Prototyper',\n cartographer: 'Velocity Expert',\n },\n trendsetter: {\n explorer: 'Early Adopter',\n navigator: 'Tech Radar',\n cartographer: 'Innovation Lead',\n },\n};\n\nexport const MATRIX_METADATA: Record<\n CodingStyleType,\n Record\n> = {\n architect: {\n explorer: { emoji: '💭' },\n navigator: { emoji: '📐' },\n cartographer: { emoji: '🏛️' },\n },\n analyst: {\n explorer: { emoji: '🔎' },\n navigator: { emoji: '🧪' },\n cartographer: { emoji: '🔬' },\n },\n conductor: {\n explorer: { emoji: '🎵' },\n navigator: { emoji: '🎼' },\n cartographer: { emoji: '🎹' },\n },\n speedrunner: {\n explorer: { emoji: '🎲' },\n navigator: { emoji: '🏃' },\n cartographer: { emoji: '⚡' },\n },\n trendsetter: {\n explorer: { emoji: '🌱' },\n navigator: { emoji: '📡' },\n cartographer: { emoji: '🚀' },\n },\n};\n","/**\n * Deterministic Type Mapper - Rule-based developer type classification\n *\n * Pure function: DeterministicScores + Phase1Output -> DeterministicTypeResult\n * Deterministic: same input always produces same classification.\n *\n * @module @betterprompt/shared/scoring/deterministic-type-mapper\n */\n\nimport type { Phase1Output, Phase1SessionMetrics } from '../schemas/phase1-output.js';\nimport type {\n DeterministicScores,\n DeterministicTypeResult,\n CodingStyleType,\n AIControlLevel,\n} from '../schemas/deterministic-scores.js';\nimport { MATRIX_NAMES, MATRIX_METADATA } from '../constants.js';\n\n// ============================================================================\n// Trend Keyword Detection\n// ============================================================================\n\nconst TREND_KEYWORDS_KO = ['최신', '트렌드', '유행', '새로운', '업데이트된', '요즘'];\nconst TREND_KEYWORDS_EN = ['latest', 'newest', 'trending', 'modern', 'up-to-date', 'best practice', 'current version', 'recently released'];\nconst ALL_TREND_KEYWORDS = [...TREND_KEYWORDS_KO, ...TREND_KEYWORDS_EN];\n\nfunction computeTrendDensity(phase1Output: Phase1Output): number {\n const utterances = phase1Output.developerUtterances;\n if (utterances.length === 0) return 0;\n\n let totalMatches = 0;\n for (const utterance of utterances) {\n const text = (utterance.displayText || utterance.text).toLowerCase();\n for (const keyword of ALL_TREND_KEYWORDS) {\n const regex = new RegExp(keyword.toLowerCase(), 'g');\n const matches = text.match(regex);\n if (matches) totalMatches += matches.length;\n }\n }\n\n return (totalMatches / utterances.length) * 100;\n}\n\n// ============================================================================\n// Type Affinity Calculation\n// ============================================================================\n\nconst STYLE_TYPES: CodingStyleType[] = ['architect', 'analyst', 'conductor', 'speedrunner', 'trendsetter'];\n\nfunction computeAffinities(\n scores: DeterministicScores,\n metrics: Phase1SessionMetrics,\n trendDensity: number,\n): Record {\n const slashCmds = metrics.slashCommandCounts ?? {};\n\n // Architect: planning-heavy + structured + controlling\n // Uses aiPartnership (merged thinking + control) as primary signal\n const planCount = (slashCmds['plan'] ?? 0) + (slashCmds['review'] ?? 0);\n const planBonus = planCount > 0 ? Math.min(planCount * 8, 30) : 0;\n const architectAffinity = scores.aiPartnership * 0.5 + scores.controlScore * 0.3 + planBonus;\n\n // Analyst: thorough investigation + learning + clean sessions\n // Uses aiPartnership + sessionCraft as signals\n const analystAffinity =\n scores.aiPartnership * 0.3 +\n scores.sessionCraft * 0.4 +\n scores.sessionMastery * 0.2 +\n (metrics.questionRatio > 0.2 ? 10 : 0);\n\n // Conductor: slash command mastery\n const uniqueCommands = Object.keys(slashCmds).length;\n const totalCommands = Object.values(slashCmds).reduce((sum, c) => sum + c, 0);\n const orchestrationCmds = (slashCmds['sisyphus'] ?? 0) + (slashCmds['orchestrator'] ?? 0) +\n (slashCmds['ultrawork'] ?? 0) + (slashCmds['ralph-loop'] ?? 0);\n const commandDiversityScore = Math.min(uniqueCommands * 12, 60);\n const commandVolumeScore = Math.min(totalCommands * 2, 30);\n const orchestrationBonus = orchestrationCmds > 0 ? Math.min(orchestrationCmds * 10, 30) : 0;\n const conductorAffinity = commandDiversityScore + commandVolumeScore + orchestrationBonus;\n\n // Speedrunner: efficiency + conciseness\n // Uses sessionCraft (context efficiency component) as primary signal\n const avgLen = metrics.avgDeveloperMessageLength;\n const concisenessScore = avgLen < 200 ? 40 : avgLen < 400 ? 25 : 10;\n const speedrunnerAffinity =\n scores.sessionCraft * 0.5 +\n concisenessScore +\n (scores.sessionMastery > 70 ? 15 : 0);\n\n // Trendsetter: trend keywords + learning curiosity\n const trendKeywordScore = trendDensity > 3 ? Math.min(trendDensity * 15, 60) : trendDensity * 5;\n const learningCuriosityBonus = scores.sessionCraft > 70 ? 15 : 0;\n const trendsetterAffinity = trendKeywordScore + learningCuriosityBonus;\n\n return {\n architect: architectAffinity,\n analyst: analystAffinity,\n conductor: conductorAffinity,\n speedrunner: speedrunnerAffinity,\n trendsetter: trendsetterAffinity,\n };\n}\n\nfunction normalizeToDistribution(affinities: Record): Record {\n const MIN_PERCENT = 5;\n const totalAffinity = STYLE_TYPES.reduce((sum, t) => sum + Math.max(affinities[t], 0), 0);\n\n if (totalAffinity === 0) {\n return { architect: 20, analyst: 20, conductor: 20, speedrunner: 20, trendsetter: 20 };\n }\n\n const raw: Record = {};\n for (const type of STYLE_TYPES) {\n raw[type] = Math.max((affinities[type] / totalAffinity) * 100, 0);\n }\n\n let totalBelow = 0;\n let totalAbove = 0;\n const aboveTypes: CodingStyleType[] = [];\n\n for (const type of STYLE_TYPES) {\n if (raw[type] < MIN_PERCENT) {\n totalBelow += MIN_PERCENT - raw[type];\n raw[type] = MIN_PERCENT;\n } else {\n totalAbove += raw[type];\n aboveTypes.push(type);\n }\n }\n\n if (totalBelow > 0 && totalAbove > 0) {\n for (const type of aboveTypes) {\n raw[type] -= totalBelow * (raw[type] / totalAbove);\n }\n }\n\n const result: Record = {};\n let sum = 0;\n for (const type of STYLE_TYPES) {\n result[type] = Math.round(raw[type]);\n sum += result[type];\n }\n\n if (sum !== 100) {\n const maxType = STYLE_TYPES.reduce((a, b) => result[a] >= result[b] ? a : b);\n result[maxType] += 100 - sum;\n }\n\n return result as Record;\n}\n\nfunction controlLevelFromScore(score: number): AIControlLevel {\n if (score <= 34) return 'explorer';\n if (score <= 64) return 'navigator';\n return 'cartographer';\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Compute deterministic type classification from scores and Phase 1 output.\n * Pure function: same inputs always produce same classification.\n */\nexport function computeDeterministicType(\n scores: DeterministicScores,\n phase1Output: Phase1Output,\n): DeterministicTypeResult {\n const metrics = phase1Output.sessionMetrics;\n const trendDensity = computeTrendDensity(phase1Output);\n\n const affinities = computeAffinities(scores, metrics, trendDensity);\n const distribution = normalizeToDistribution(affinities);\n\n const primaryType = STYLE_TYPES.reduce((a, b) =>\n affinities[a] >= affinities[b] ? a : b,\n );\n\n const controlLevel = controlLevelFromScore(scores.controlScore);\n const matrixName = MATRIX_NAMES[primaryType][controlLevel];\n const matrixEmoji = MATRIX_METADATA[primaryType][controlLevel].emoji;\n\n return {\n primaryType,\n distribution: distribution as DeterministicTypeResult['distribution'],\n controlLevel,\n controlScore: scores.controlScore,\n matrixName,\n matrixEmoji,\n };\n}\n","/**\n * Session Scanner - Scans Claude Code session logs\n *\n * Extracted from src/lib/parser/jsonl-reader.ts for plugin self-sufficiency.\n * Pure filesystem operations with Zod validation.\n *\n * @module plugin/lib/core/session-scanner\n */\n\nimport { readFile, readdir, stat, mkdir, writeFile } from 'node:fs/promises';\nimport { join, basename } from 'node:path';\nimport { homedir } from 'node:os';\nimport { JSONLLineSchema, CONTEXT_WINDOW_SIZE, type JSONLLine, type SessionMetadata } from './types.js';\n\n/** Claude Code session log directory */\nexport function getClaudeProjectsDir(): string {\n return join(homedir(), '.claude', 'projects');\n}\n\n/** Plugin data directory */\nexport function getPluginDataDir(): string {\n return join(homedir(), '.betterprompt');\n}\n\n/** Scan cache directory */\nexport function getScanCacheDir(): string {\n return join(getPluginDataDir(), 'scan-cache');\n}\n\n// ============================================================================\n// JSONL Parsing\n// ============================================================================\n\n/** Parse a single line of JSONL. Returns null for invalid/empty lines. */\nexport function parseJSONLLine(line: string): JSONLLine | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n\n try {\n const parsed = JSON.parse(trimmed);\n const result = JSONLLineSchema.safeParse(parsed);\n return result.success ? result.data : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Deduplicate assistant entries by message.id, keeping the LAST occurrence.\n * Claude Code writes multiple JSONL lines per assistant turn with progressively\n * more complete content.\n */\nfunction deduplicateAssistantEntries(entries: JSONLLine[]): JSONLLine[] {\n const lastSeenIndex = new Map();\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (entry.type === 'assistant') {\n const msgId = entry.message?.id;\n if (msgId && !lastSeenIndex.has(msgId)) {\n lastSeenIndex.set(msgId, i);\n }\n }\n }\n\n return entries.filter((entry, i) => {\n if (entry.type !== 'assistant') return true;\n const msgId = entry.message?.id;\n if (!msgId) return true;\n return lastSeenIndex.get(msgId) === i;\n });\n}\n\n/** Read and parse a JSONL file */\nexport async function readJSONLFile(filePath: string): Promise {\n const content = await readFile(filePath, 'utf-8');\n const lines = content.split('\\n');\n const parsed: JSONLLine[] = [];\n\n for (const line of lines) {\n const result = parseJSONLLine(line);\n if (result !== null) {\n parsed.push(result);\n }\n }\n\n return deduplicateAssistantEntries(parsed);\n}\n\n// ============================================================================\n// Path Encoding/Decoding\n// ============================================================================\n\n/**\n * Decode project path from Claude's encoding.\n * '-Users-dev-projects-myapp' -> '/Users/dev/projects/myapp'\n * 'C--alphacut' -> 'C:/alphacut'\n */\nexport function decodeProjectPath(encoded: string): string {\n if (/^[A-Za-z]--/.test(encoded)) {\n const driveLetter = encoded[0];\n const rest = encoded.slice(3);\n if (!rest) return `${driveLetter}:/`;\n return `${driveLetter}:/${rest.replace(/-/g, '/')}`;\n }\n\n if (encoded.startsWith('-')) {\n return encoded.replace(/-/g, '/');\n }\n\n return encoded;\n}\n\n/** Get project name from path */\nexport function getProjectName(projectPath: string): string {\n const parts = projectPath.trim().split(/[/\\\\]/).filter(Boolean);\n const filtered = parts.filter(p => !/^[A-Za-z]:$/.test(p));\n return filtered[filtered.length - 1] || 'unknown';\n}\n\n// ============================================================================\n// Directory Scanning\n// ============================================================================\n\n/** List all project directories in Claude's projects folder */\nexport async function listProjectDirs(): Promise {\n try {\n const projectsDir = getClaudeProjectsDir();\n const entries = await readdir(projectsDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(projectsDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n}\n\n/** List JSONL session files in a directory */\nexport async function listSessionFiles(projectDir: string): Promise {\n try {\n const files = await readdir(projectDir);\n return files\n .filter(f => f.endsWith('.jsonl'))\n .map(f => join(projectDir, f));\n } catch {\n return [];\n }\n}\n\n/** Get metadata for a session file */\nexport async function getSessionMetadata(filePath: string): Promise {\n try {\n const content = await readFile(filePath, 'utf-8');\n const lines = content.split('\\n').filter(l => l.trim());\n\n if (lines.length === 0) return null;\n\n const fileName = basename(filePath, '.jsonl');\n let messageCount = 0;\n let firstTimestamp: Date | null = null;\n let lastTimestamp: Date | null = null;\n const inputTokenCounts: number[] = [];\n const seenMessageIds = new Set();\n\n for (const line of lines) {\n const parsed = parseJSONLLine(line);\n if (parsed && (parsed.type === 'user' || parsed.type === 'assistant')) {\n if (parsed.type === 'assistant') {\n const msgId = parsed.message?.id;\n if (msgId) {\n if (seenMessageIds.has(msgId)) continue;\n seenMessageIds.add(msgId);\n }\n }\n\n messageCount++;\n const ts = new Date(parsed.timestamp);\n\n if (!firstTimestamp || ts < firstTimestamp) firstTimestamp = ts;\n if (!lastTimestamp || ts > lastTimestamp) lastTimestamp = ts;\n\n if (parsed.type === 'assistant' && parsed.message.usage?.input_tokens) {\n inputTokenCounts.push(parsed.message.usage.input_tokens);\n }\n }\n }\n\n if (!firstTimestamp || !lastTimestamp) return null;\n\n const projectDirName = basename(join(filePath, '..'));\n const projectPath = decodeProjectPath(projectDirName);\n const durationSeconds = Math.floor(\n (lastTimestamp.getTime() - firstTimestamp.getTime()) / 1000,\n );\n\n let avgContextUtilization: number | undefined;\n let maxContextUtilization: number | undefined;\n\n if (inputTokenCounts.length > 0) {\n const avgTokens = inputTokenCounts.reduce((sum, t) => sum + t, 0) / inputTokenCounts.length;\n const maxTokens = Math.max(...inputTokenCounts);\n avgContextUtilization = Math.round((avgTokens / CONTEXT_WINDOW_SIZE) * 100);\n maxContextUtilization = Math.round((maxTokens / CONTEXT_WINDOW_SIZE) * 100);\n }\n\n return {\n sessionId: fileName,\n projectPath,\n projectName: getProjectName(projectPath),\n timestamp: firstTimestamp,\n messageCount,\n durationSeconds,\n filePath,\n avgContextUtilization,\n maxContextUtilization,\n };\n } catch {\n return null;\n }\n}\n\n/** List all sessions across all projects, sorted by recency */\nexport async function listAllSessions(): Promise {\n const projectDirs = await listProjectDirs();\n const sessions: SessionMetadata[] = [];\n\n for (const dir of projectDirs) {\n const files = await listSessionFiles(dir);\n for (const file of files) {\n const metadata = await getSessionMetadata(file);\n if (metadata) {\n sessions.push(metadata);\n }\n }\n }\n\n sessions.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n return sessions;\n}\n\n// ============================================================================\n// Scan Cache\n// ============================================================================\n\n/** Store parsed sessions in scan cache for subsequent tools */\nexport async function cacheParsedSessions(\n sessions: SessionMetadata[],\n): Promise {\n const scanCacheDir = getScanCacheDir();\n await mkdir(scanCacheDir, { recursive: true });\n\n const cachePath = join(scanCacheDir, 'sessions.json');\n await writeFile(cachePath, JSON.stringify(sessions, null, 2), 'utf-8');\n return cachePath;\n}\n\n/** Read cached session metadata */\nexport async function readCachedSessions(): Promise {\n try {\n const cachePath = join(getScanCacheDir(), 'sessions.json');\n const content = await readFile(cachePath, 'utf-8');\n const raw = JSON.parse(content) as Array;\n return raw.map(s => ({ ...s, timestamp: new Date(s.timestamp) }));\n } catch {\n return [];\n }\n}\n","/**\n * Core Types for Plugin-First Architecture\n *\n * Re-exports canonical types from @betterprompt/shared for Phase 1,\n * deterministic scoring, domain results, and constants.\n *\n * Plugin-specific types (JSONL parsing, session metadata) remain here.\n *\n * @module plugin/lib/core/types\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Re-exports from @betterprompt/shared (canonical source of truth)\n// ============================================================================\n\nexport type {\n UserUtterance,\n AIInsightBlock,\n FrictionSignals,\n SessionHints,\n Phase1SessionMetrics,\n Phase1Output,\n ReportActivitySession,\n DeterministicScores,\n CodingStyleType,\n AIControlLevel,\n DeterministicTypeResult,\n DomainStrength,\n DomainGrowthArea,\n DomainResult,\n AnalysisReport,\n CanonicalStageOutputs,\n CanonicalEvaluationPayload,\n CanonicalAnalysisRun,\n CanonicalAnalysisRunParts,\n} from '@betterprompt/shared/schemas';\n\nexport {\n CONTEXT_WINDOW_SIZE,\n MATRIX_NAMES,\n MATRIX_METADATA,\n} from '@betterprompt/shared';\n\n// ============================================================================\n// Session Types (plugin-specific JSONL parsing)\n// ============================================================================\n\nexport const TextBlockSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n});\n\nexport const ToolUseBlockSchema = z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()),\n});\n\nexport const ToolResultBlockSchema = z.object({\n type: z.literal('tool_result'),\n tool_use_id: z.string(),\n content: z.union([z.string(), z.array(z.unknown())]),\n is_error: z.boolean().optional(),\n});\n\nexport const ContentBlockSchema = z.union([\n TextBlockSchema,\n ToolUseBlockSchema,\n ToolResultBlockSchema,\n]);\n\nexport const TokenUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().optional(),\n cache_read_input_tokens: z.number().optional(),\n cache_creation: z\n .object({\n ephemeral_5m_input_tokens: z.number(),\n ephemeral_1h_input_tokens: z.number(),\n })\n .optional(),\n service_tier: z.string().optional(),\n});\n\nexport type SessionSourceType = 'claude-code' | 'cursor' | 'cursor-composer';\n\nexport interface ToolCall {\n id: string;\n name: string;\n input: Record;\n result?: string;\n isError?: boolean;\n}\n\nexport interface ParsedMessage {\n uuid: string;\n role: 'user' | 'assistant';\n timestamp: string;\n content: string;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n toolCalls?: ToolCall[];\n tokenUsage?: {\n input: number;\n output: number;\n };\n}\n\nexport interface SessionStats {\n userMessageCount: number;\n assistantMessageCount: number;\n toolCallCount: number;\n uniqueToolsUsed: string[];\n totalInputTokens: number;\n totalOutputTokens: number;\n}\n\nexport interface ParsedSession {\n sessionId: string;\n projectPath: string;\n projectName?: string;\n startTime: string;\n endTime: string;\n durationSeconds: number;\n claudeCodeVersion: string;\n messages: ParsedMessage[];\n stats: SessionStats;\n source?: SessionSourceType;\n}\n\nexport const UserMessageSchema = z.object({\n type: z.literal('user'),\n sessionId: z.string(),\n timestamp: z.string(),\n uuid: z.string(),\n parentUuid: z.string().nullable(),\n cwd: z.string().optional(),\n version: z.string().optional(),\n gitBranch: z.string().optional(),\n userType: z.string().optional(),\n isSidechain: z.boolean().optional(),\n message: z.object({\n role: z.literal('user'),\n content: z.union([z.string(), z.array(ContentBlockSchema)]),\n }),\n});\n\nexport const AssistantMessageSchema = z.object({\n type: z.literal('assistant'),\n sessionId: z.string(),\n timestamp: z.string(),\n uuid: z.string(),\n parentUuid: z.string().nullable(),\n isSidechain: z.boolean().optional(),\n message: z.object({\n id: z.string().optional(),\n role: z.literal('assistant'),\n content: z.array(ContentBlockSchema),\n model: z.string().optional(),\n stop_reason: z.string().optional(),\n usage: TokenUsageSchema.optional(),\n }),\n});\n\n/** Supported JSONL line types */\nexport const JSONLLineSchema = z.discriminatedUnion('type', [\n UserMessageSchema,\n AssistantMessageSchema,\n // Queue operations and file history are parsed but not analyzed\n z.object({ type: z.literal('queue-operation'), timestamp: z.string() }).passthrough(),\n z.object({ type: z.literal('file-history-snapshot'), timestamp: z.string() }).passthrough(),\n]);\nexport type JSONLLine = z.infer;\n\n// ============================================================================\n// Session Metadata (plugin-specific)\n// ============================================================================\n\nexport interface SessionMetadata {\n sessionId: string;\n projectPath: string;\n projectName: string;\n timestamp: Date;\n messageCount: number;\n durationSeconds: number;\n filePath: string;\n avgContextUtilization?: number;\n maxContextUtilization?: number;\n}\n"],"mappings":"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","names":["_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","core_exports","cuid","cuid2","date","decode","decodeAsync","describe","e164","email","emoji","encode","encodeAsync","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","parse","parseAsync","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","string","ulid","_undefined","uuid","_void","xid","core_exports","_emoji","_null","_undefined","initializer","_a","array","set","object","Class","_a","config","base64","base64url","hex","error","issue","_a","version","time","_a","inst","result","_a","checks","checkResult","canary","result","_","url","base64","r","isObject","allowsEval","results","map","left","right","keyResult","valueResult","output","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","number","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","meta","Class","_emoji","_undefined","_null","Class","issue","codec","_a","meta","id","schema","json","file","registry","ctx","schemas_exports","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","cuid","cuid2","date","describe","e164","email","emoji","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","string","ulid","_undefined","uuid","_void","xid","checks_exports","date","datetime","duration","time","datetime","date","time","duration","initializer","issue","issues","parse","parseAsync","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","def","meta","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","check","_default","_catch","json","_emoji","datetime","date","time","duration","string","email","guid","uuid","emoji","nanoid","cuid","cuid2","ulid","xid","ksuid","ipv4","mac","ipv6","cidrv4","cidrv6","base64","base64url","e164","hostname","hex","number","boolean","bigint","_undefined","json","_null","json","_void","json","date","_enum","json","issue","output","nullish","_default","_catch","json","json","describe","meta","string","number","boolean","_null","map","ZodFirstPartyTypeKind","schemas_exports","checks_exports","zodSchema","objectSchema","version","bigint","boolean","date","number","string","string","number","boolean","bigint","date","stat","sum"]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-VXUKPHXP.js b/packages/plugin/dist/chunk-VXUKPHXP.js new file mode 100644 index 00000000..0e2f1820 --- /dev/null +++ b/packages/plugin/dist/chunk-VXUKPHXP.js @@ -0,0 +1,217 @@ +import { + getConfig, + getStateFilePath +} from "./chunk-FIGO7IPG.js"; +import { + debug +} from "./chunk-FW6ZW4J3.js"; + +// lib/debounce.ts +import { readFileSync, writeFileSync, mkdirSync, readdirSync } from "fs"; +import { join, dirname } from "path"; +import { homedir } from "os"; +var COOLDOWN_MS = 4 * 60 * 60 * 1e3; +var MIN_SESSION_DURATION_MS = 3 * 60 * 1e3; +var MAX_RUNNING_STATE_AGE_MS = 30 * 60 * 1e3; +var RUNNING_ANALYSIS_RESUME_GRACE_MS = 45 * 1e3; +var DEFAULT_STATE = { + lastAnalysisTimestamp: null, + lastAnalysisSessionCount: 0, + analysisState: "idle", + analysisInProgress: false, + analysisPending: false, + pendingSince: null, + lastError: null, + stateUpdatedAt: null +}; +function normalizeState(state) { + let analysisState = state.analysisState; + if (!analysisState) { + if (state.analysisInProgress) analysisState = "running"; + else if (state.analysisPending) analysisState = "pending"; + else analysisState = "idle"; + } + return { + ...state, + analysisState, + analysisInProgress: analysisState === "running", + analysisPending: analysisState === "pending" + }; +} +function readState() { + try { + const raw = readFileSync(getStateFilePath(), "utf-8"); + return normalizeState({ ...DEFAULT_STATE, ...JSON.parse(raw) }); + } catch { + return { ...DEFAULT_STATE }; + } +} +function writeState(state) { + const filePath = getStateFilePath(); + mkdirSync(dirname(filePath), { recursive: true }); + writeFileSync( + filePath, + JSON.stringify( + normalizeState({ + ...state, + stateUpdatedAt: (/* @__PURE__ */ new Date()).toISOString() + }), + null, + 2 + ) + ); +} +function getStateUpdatedAtMs(state) { + return state.stateUpdatedAt ? new Date(state.stateUpdatedAt).getTime() : Number.NaN; +} +function countClaudeSessions() { + const projectsDir = join(homedir(), ".claude", "projects"); + try { + const projects = readdirSync(projectsDir); + return projects.reduce((count, project) => { + try { + const files = readdirSync(join(projectsDir, project)); + return count + files.filter((f) => f.endsWith(".jsonl")).length; + } catch { + return count; + } + }, 0); + } catch { + return 0; + } +} +function getAnalysisLifecycleState() { + return readState().analysisState; +} +function recoverStaleAnalysisState(options) { + const state = readState(); + if (state.analysisState !== "running") { + return state; + } + const updatedAt = getStateUpdatedAtMs(state); + const isStale = options?.force || Number.isNaN(updatedAt) || Date.now() - updatedAt > MAX_RUNNING_STATE_AGE_MS; + if (!isStale) { + return state; + } + debug("debounce", "recovering stale running state", { reason: options?.reason ?? "stale" }); + const recoveredState = { + ...state, + analysisState: "failed", + pendingSince: null, + lastError: options?.reason ?? state.lastError ?? "Recovered stale running analysis state." + }; + writeState(recoveredState); + return normalizeState(recoveredState); +} +function shouldTriggerAnalysis(sessionDurationMs) { + const state = recoverStaleAnalysisState(); + const config = getConfig(); + if (state.analysisInProgress) { + debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason: "Analysis already in progress" }); + return { shouldAnalyze: false, reason: "Analysis already in progress" }; + } + if (sessionDurationMs > 0 && sessionDurationMs < MIN_SESSION_DURATION_MS) { + const reason = `Session too short (${Math.round(sessionDurationMs / 1e3)}s < 3min)`; + debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); + return { shouldAnalyze: false, reason }; + } + if (state.lastAnalysisTimestamp) { + const elapsed = Date.now() - new Date(state.lastAnalysisTimestamp).getTime(); + if (elapsed < COOLDOWN_MS) { + const remainingMin = Math.round((COOLDOWN_MS - elapsed) / 6e4); + const reason = `Cooldown active (${remainingMin}min remaining)`; + debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); + return { shouldAnalyze: false, reason }; + } + } + const currentCount = countClaudeSessions(); + const newSessions = currentCount - state.lastAnalysisSessionCount; + if (newSessions < config.analyzeThreshold) { + const reason = `Not enough new sessions (${newSessions}/${config.analyzeThreshold})`; + debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: false, reason }); + return { shouldAnalyze: false, reason }; + } + const result = { + shouldAnalyze: true, + reason: `${newSessions} new sessions, cooldown passed` + }; + debug("debounce", "shouldTriggerAnalysis", { shouldAnalyze: result.shouldAnalyze, reason: result.reason }); + return result; +} +function markAnalysisStarted() { + debug("debounce", "state transition: -> running"); + const state = readState(); + writeState({ + ...state, + analysisState: "running", + pendingSince: null, + lastError: null + }); +} +function markAnalysisComplete(sessionCount) { + debug("debounce", "state transition: -> complete"); + writeState({ + ...DEFAULT_STATE, + lastAnalysisTimestamp: (/* @__PURE__ */ new Date()).toISOString(), + lastAnalysisSessionCount: sessionCount ?? countClaudeSessions(), + analysisState: "complete" + }); +} +function markAnalysisFailed(error) { + const errorMsg = error instanceof Error ? error.message : error ? String(error) : null; + debug("debounce", "state transition: -> failed", { error: errorMsg ?? void 0 }); + const state = readState(); + writeState({ + ...state, + analysisState: "failed", + pendingSince: null, + lastError: errorMsg + }); +} +function markAnalysisPending() { + debug("debounce", "state transition: -> pending"); + const state = readState(); + writeState({ + ...state, + analysisState: "pending", + pendingSince: (/* @__PURE__ */ new Date()).toISOString(), + lastError: null + }); +} +function isAnalysisPending() { + const state = readState(); + return state.analysisState === "pending"; +} +function clearAnalysisPending() { + const state = readState(); + if (state.analysisState !== "pending") { + return; + } + writeState({ + ...state, + analysisState: "idle", + pendingSince: null + }); +} +function shouldResumeRunningAnalysis(now = Date.now()) { + const state = readState(); + if (state.analysisState !== "running") { + return false; + } + const updatedAt = getStateUpdatedAtMs(state); + return Number.isNaN(updatedAt) || now - updatedAt > RUNNING_ANALYSIS_RESUME_GRACE_MS; +} + +export { + getAnalysisLifecycleState, + recoverStaleAnalysisState, + shouldTriggerAnalysis, + markAnalysisStarted, + markAnalysisComplete, + markAnalysisFailed, + markAnalysisPending, + isAnalysisPending, + clearAnalysisPending, + shouldResumeRunningAnalysis +}; +//# sourceMappingURL=chunk-VXUKPHXP.js.map \ No newline at end of file diff --git a/packages/plugin/dist/chunk-VXUKPHXP.js.map b/packages/plugin/dist/chunk-VXUKPHXP.js.map new file mode 100644 index 00000000..9567414c --- /dev/null +++ b/packages/plugin/dist/chunk-VXUKPHXP.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../lib/debounce.ts"],"sourcesContent":["/**\n * Debounce Logic\n *\n * Determines whether an auto-analysis should be triggered based on:\n * 1. Cooldown: ≥4 hours since last analysis\n * 2. Threshold: ≥N new sessions since last analysis (configurable)\n * 3. Duration: Just-ended session was ≥3 minutes\n * 4. Guard: No analysis already in progress\n *\n * State tracked in ~/.betterprompt/plugin-state.json\n */\n\nimport { readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport { getConfig, getStateFilePath } from './config.js';\nimport { debug } from './logger.js';\n\nconst COOLDOWN_MS = 4 * 60 * 60 * 1000; // 4 hours\nconst MIN_SESSION_DURATION_MS = 3 * 60 * 1000; // 3 minutes\nconst MAX_RUNNING_STATE_AGE_MS = 30 * 60 * 1000; // 30 minutes\nconst RUNNING_ANALYSIS_RESUME_GRACE_MS = 45 * 1000; // 45 seconds\n\nexport type AnalysisLifecycleState =\n | 'idle'\n | 'pending'\n | 'running'\n | 'complete'\n | 'failed';\n\nexport interface PluginState {\n lastAnalysisTimestamp: string | null;\n lastAnalysisSessionCount: number;\n analysisState: AnalysisLifecycleState;\n analysisInProgress: boolean;\n /** Set by post-session hook; cleared when next Claude Code session runs analysis */\n analysisPending: boolean;\n /** ISO timestamp when analysis was queued */\n pendingSince: string | null;\n lastError: string | null;\n stateUpdatedAt: string | null;\n}\n\nconst DEFAULT_STATE: PluginState = {\n lastAnalysisTimestamp: null,\n lastAnalysisSessionCount: 0,\n analysisState: 'idle',\n analysisInProgress: false,\n analysisPending: false,\n pendingSince: null,\n lastError: null,\n stateUpdatedAt: null,\n};\n\nfunction normalizeState(state: PluginState): PluginState {\n let analysisState = state.analysisState;\n\n if (!analysisState) {\n if (state.analysisInProgress) analysisState = 'running';\n else if (state.analysisPending) analysisState = 'pending';\n else analysisState = 'idle';\n }\n\n return {\n ...state,\n analysisState,\n analysisInProgress: analysisState === 'running',\n analysisPending: analysisState === 'pending',\n };\n}\n\nexport function readState(): PluginState {\n try {\n const raw = readFileSync(getStateFilePath(), 'utf-8');\n return normalizeState({ ...DEFAULT_STATE, ...JSON.parse(raw) } as PluginState);\n } catch {\n return { ...DEFAULT_STATE };\n }\n}\n\nexport function writeState(state: PluginState): void {\n const filePath = getStateFilePath();\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(\n filePath,\n JSON.stringify(\n normalizeState({\n ...state,\n stateUpdatedAt: new Date().toISOString(),\n }),\n null,\n 2,\n ),\n );\n}\n\nfunction getStateUpdatedAtMs(state: PluginState): number {\n return state.stateUpdatedAt ? new Date(state.stateUpdatedAt).getTime() : Number.NaN;\n}\n\n/**\n * Count Claude Code session JSONL files across all projects.\n */\nfunction countClaudeSessions(): number {\n const projectsDir = join(homedir(), '.claude', 'projects');\n\n try {\n const projects = readdirSync(projectsDir);\n return projects.reduce((count, project) => {\n try {\n const files = readdirSync(join(projectsDir, project));\n return count + files.filter(f => f.endsWith('.jsonl')).length;\n } catch {\n return count;\n }\n }, 0);\n } catch {\n return 0;\n }\n}\n\nexport interface DebounceResult {\n shouldAnalyze: boolean;\n reason: string;\n}\n\nexport function getAnalysisLifecycleState(): AnalysisLifecycleState {\n return readState().analysisState;\n}\n\nexport function recoverStaleAnalysisState(options?: {\n force?: boolean;\n reason?: string;\n}): PluginState {\n const state = readState();\n\n if (state.analysisState !== 'running') {\n return state;\n }\n\n const updatedAt = getStateUpdatedAtMs(state);\n const isStale = options?.force\n || Number.isNaN(updatedAt)\n || (Date.now() - updatedAt) > MAX_RUNNING_STATE_AGE_MS;\n\n if (!isStale) {\n return state;\n }\n\n debug('debounce', 'recovering stale running state', { reason: options?.reason ?? 'stale' });\n const recoveredState: PluginState = {\n ...state,\n analysisState: 'failed',\n pendingSince: null,\n lastError: options?.reason ?? state.lastError ?? 'Recovered stale running analysis state.',\n };\n\n writeState(recoveredState);\n return normalizeState(recoveredState);\n}\n\n/**\n * Evaluate all debounce rules.\n *\n * @param sessionDurationMs - Duration of the just-ended session in milliseconds.\n * Pass 0 if unknown (e.g. manual trigger).\n */\nexport function shouldTriggerAnalysis(sessionDurationMs: number): DebounceResult {\n const state = recoverStaleAnalysisState();\n const config = getConfig();\n\n // Rule 4: Guard — no analysis already in progress\n if (state.analysisInProgress) {\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason: 'Analysis already in progress' });\n return { shouldAnalyze: false, reason: 'Analysis already in progress' };\n }\n\n // Rule 3: Duration — session must be ≥3 minutes\n if (sessionDurationMs > 0 && sessionDurationMs < MIN_SESSION_DURATION_MS) {\n const reason = `Session too short (${Math.round(sessionDurationMs / 1000)}s < 3min)`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n\n // Rule 1: Cooldown — ≥4 hours since last analysis\n if (state.lastAnalysisTimestamp) {\n const elapsed = Date.now() - new Date(state.lastAnalysisTimestamp).getTime();\n if (elapsed < COOLDOWN_MS) {\n const remainingMin = Math.round((COOLDOWN_MS - elapsed) / 60_000);\n const reason = `Cooldown active (${remainingMin}min remaining)`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n }\n\n // Rule 2: Threshold — ≥N new sessions since last analysis\n const currentCount = countClaudeSessions();\n const newSessions = currentCount - state.lastAnalysisSessionCount;\n if (newSessions < config.analyzeThreshold) {\n const reason = `Not enough new sessions (${newSessions}/${config.analyzeThreshold})`;\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: false, reason });\n return { shouldAnalyze: false, reason };\n }\n\n const result: DebounceResult = {\n shouldAnalyze: true,\n reason: `${newSessions} new sessions, cooldown passed`,\n };\n debug('debounce', 'shouldTriggerAnalysis', { shouldAnalyze: result.shouldAnalyze, reason: result.reason });\n return result;\n}\n\n/**\n * Mark analysis as in-progress. Called when the queued local analysis starts.\n */\nexport function markAnalysisStarted(): void {\n debug('debounce', 'state transition: -> running');\n const state = readState();\n writeState({\n ...state,\n analysisState: 'running',\n pendingSince: null,\n lastError: null,\n });\n}\n\n/**\n * Refresh the running-analysis heartbeat so startup recovery can distinguish\n * between a genuinely interrupted run and an in-flight tool/skill handoff.\n */\nexport function touchAnalysisHeartbeat(): void {\n const state = readState();\n if (state.analysisState !== 'running') {\n return;\n }\n\n writeState(state);\n}\n\n/**\n * Mark analysis as complete. Called after the local pipeline finishes successfully.\n */\nexport function markAnalysisComplete(sessionCount?: number): void {\n debug('debounce', 'state transition: -> complete');\n writeState({\n ...DEFAULT_STATE,\n lastAnalysisTimestamp: new Date().toISOString(),\n lastAnalysisSessionCount: sessionCount ?? countClaudeSessions(),\n analysisState: 'complete',\n });\n}\n\n/**\n * Clear the in-progress flag. Called on failure or crash recovery.\n */\nexport function markAnalysisFailed(error?: unknown): void {\n const errorMsg = error instanceof Error ? error.message : (error ? String(error) : null);\n debug('debounce', 'state transition: -> failed', { error: errorMsg ?? undefined });\n const state = readState();\n writeState({\n ...state,\n analysisState: 'failed',\n pendingSince: null,\n lastError: errorMsg,\n });\n}\n\n/**\n * Mark analysis as pending for next Claude Code session.\n * Called by the post-session hook instead of spawning a background process.\n */\nexport function markAnalysisPending(): void {\n debug('debounce', 'state transition: -> pending');\n const state = readState();\n writeState({\n ...state,\n analysisState: 'pending',\n pendingSince: new Date().toISOString(),\n lastError: null,\n });\n}\n\n/**\n * Check if there is a pending analysis queued by a previous session's hook.\n */\nexport function isAnalysisPending(): boolean {\n const state = readState();\n return state.analysisState === 'pending';\n}\n\n/**\n * Clear the pending flag. Called when the pending analysis starts or is dismissed.\n */\nexport function clearAnalysisPending(): void {\n const state = readState();\n if (state.analysisState !== 'pending') {\n return;\n }\n writeState({\n ...state,\n analysisState: 'idle',\n pendingSince: null,\n });\n}\n\nexport function shouldResumeRunningAnalysis(now: number = Date.now()): boolean {\n const state = readState();\n if (state.analysisState !== 'running') {\n return false;\n }\n\n const updatedAt = getStateUpdatedAtMs(state);\n return Number.isNaN(updatedAt) || (now - updatedAt) > RUNNING_ANALYSIS_RESUME_GRACE_MS;\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/chunk-ZSMKKVNT.js.map b/packages/plugin/dist/chunk-ZSMKKVNT.js.map deleted file mode 100644 index 1e578987..00000000 --- a/packages/plugin/dist/chunk-ZSMKKVNT.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../lib/native-deps.ts"],"sourcesContent":["/**\n * Shared native dependency installer.\n *\n * Ensures `better-sqlite3` is compiled and available so that Node's\n * standard module resolution finds it at runtime.\n *\n * Primary strategy: install into `pluginRoot/node_modules/` so that\n * `require('better-sqlite3')` from `dist/` resolves naturally via\n * directory walking. Fallback: `~/.betterprompt/node_modules/` for\n * callers that don't know the plugin root.\n *\n * Safe to call from multiple entry points (SessionStart hook, MCP\n * server startup) — a marker file prevents redundant installs.\n */\n\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { debug, info, error as logError } from './logger.js';\n\nexport function ensureNativeDeps(opts?: { pluginRoot?: string; fatal?: boolean }): void {\n const installDir = opts?.pluginRoot ?? join(homedir(), '.betterprompt');\n\n // Ensure the data directory exists before any install attempt\n const dataDir = join(homedir(), '.betterprompt');\n try {\n mkdirSync(dataDir, { recursive: true });\n } catch {\n // best-effort — directory may already exist\n }\n\n const marker = join(installDir, 'node_modules', 'better-sqlite3', 'build', 'Release', 'better_sqlite3.node');\n if (existsSync(marker)) {\n debug('native-deps', 'marker found, skipping install', { installDir });\n return;\n }\n\n info('native-deps', 'installing better-sqlite3', { installDir });\n try {\n // Capture output for diagnostics instead of silently ignoring\n const output = execFileSync('npm', ['install', '--prefix', installDir, 'better-sqlite3@12.8.0'], {\n timeout: 120_000,\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n if (output) {\n debug('native-deps', 'npm output', { output: output.slice(0, 500) });\n }\n info('native-deps', 'install succeeded');\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : String(err);\n const stderr = (err as { stderr?: string }).stderr ?? '';\n logError('native-deps', 'install failed', {\n error: errorMsg,\n ...(stderr ? { stderr: stderr.slice(0, 1000) } : {}),\n hint: 'Ensure Node.js >=18 and build tools are available (Xcode CLI on macOS, build-essential on Linux)',\n });\n if (opts?.fatal) {\n throw new Error(\n `[betterprompt] Failed to install better-sqlite3: ${errorMsg}\\n` +\n (stderr ? `npm stderr: ${stderr.slice(0, 500)}\\n` : '') +\n 'Hint: Ensure Node.js >=18 and build tools are installed (macOS: xcode-select --install)',\n );\n }\n }\n}\n"],"mappings":";;;;;;;AAeA,SAAS,YAAY,iBAAiB;AACtC,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,eAAe;AAGjB,SAAS,iBAAiB,MAAuD;AACtF,QAAM,aAAa,MAAM,cAAc,KAAK,QAAQ,GAAG,eAAe;AAGtE,QAAM,UAAU,KAAK,QAAQ,GAAG,eAAe;AAC/C,MAAI;AACF,cAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC,QAAQ;AAAA,EAER;AAEA,QAAM,SAAS,KAAK,YAAY,gBAAgB,kBAAkB,SAAS,WAAW,qBAAqB;AAC3G,MAAI,WAAW,MAAM,GAAG;AACtB,UAAM,eAAe,kCAAkC,EAAE,WAAW,CAAC;AACrE;AAAA,EACF;AAEA,OAAK,eAAe,6BAA6B,EAAE,WAAW,CAAC;AAC/D,MAAI;AAEF,UAAM,SAAS,aAAa,OAAO,CAAC,WAAW,YAAY,YAAY,uBAAuB,GAAG;AAAA,MAC/F,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IAClC,CAAC;AACD,QAAI,QAAQ;AACV,YAAM,eAAe,cAAc,EAAE,QAAQ,OAAO,MAAM,GAAG,GAAG,EAAE,CAAC;AAAA,IACrE;AACA,SAAK,eAAe,mBAAmB;AAAA,EACzC,SAAS,KAAK;AACZ,UAAM,WAAW,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAChE,UAAM,SAAU,IAA4B,UAAU;AACtD,UAAS,eAAe,kBAAkB;AAAA,MACxC,OAAO;AAAA,MACP,GAAI,SAAS,EAAE,QAAQ,OAAO,MAAM,GAAG,GAAI,EAAE,IAAI,CAAC;AAAA,MAClD,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAM,OAAO;AACf,YAAM,IAAI;AAAA,QACR,oDAAoD,QAAQ;AAAA,KAC3D,SAAS,eAAe,OAAO,MAAM,GAAG,GAAG,CAAC;AAAA,IAAO,MACpD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/classify-developer-type-XXBUUHDB.js b/packages/plugin/dist/classify-developer-type-XXBUUHDB.js new file mode 100644 index 00000000..325e8bd7 --- /dev/null +++ b/packages/plugin/dist/classify-developer-type-XXBUUHDB.js @@ -0,0 +1,55 @@ +import "./chunk-3Y74BQOH.js"; +import { + getAnalysisRun, + getCurrentRunId, + saveTypeResult +} from "./chunk-T2XRMW7B.js"; +import { + computeDeterministicScores, + computeDeterministicType, + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/classify-developer-type.ts +import { readFile } from "fs/promises"; +import { join } from "path"; +async function execute(_args) { + const runId = getCurrentRunId(); + let phase1Output; + const existingRun = runId ? getAnalysisRun(runId) : null; + if (existingRun?.phase1Output) { + phase1Output = existingRun.phase1Output; + } else { + try { + const phase1Path = join(getPluginDataDir(), "phase1-output.json"); + const content = await readFile(phase1Path, "utf-8"); + phase1Output = JSON.parse(content); + } catch { + return JSON.stringify({ + status: "error", + message: "No Phase 1 data found. Run extract-data first." + }); + } + } + const scores = existingRun?.phase1Output ? existingRun.scores : computeDeterministicScores(phase1Output); + const typeResult = computeDeterministicType(scores, phase1Output); + if (runId) { + saveTypeResult(runId, typeResult); + } + return JSON.stringify({ + status: "ok", + primaryType: typeResult.primaryType, + controlLevel: typeResult.controlLevel, + matrixName: typeResult.matrixName, + matrixEmoji: typeResult.matrixEmoji, + distribution: typeResult.distribution, + controlScore: typeResult.controlScore, + runId, + message: `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} (${typeResult.primaryType} / ${typeResult.controlLevel}).` + }); +} +export { + execute +}; +//# sourceMappingURL=classify-developer-type-XXBUUHDB.js.map \ No newline at end of file diff --git a/packages/plugin/dist/classify-developer-type-XXBUUHDB.js.map b/packages/plugin/dist/classify-developer-type-XXBUUHDB.js.map new file mode 100644 index 00000000..c6ff573c --- /dev/null +++ b/packages/plugin/dist/classify-developer-type-XXBUUHDB.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/classify-developer-type.ts"],"sourcesContent":["/**\n * classify-developer-type CLI command\n *\n * Runs deterministic type classification from domain scores.\n *\n * Usage: betterprompt-cli classify-developer-type\n */\n\nimport { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js';\nimport { computeDeterministicType } from '../../lib/core/deterministic-type-mapper.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport {\n getAnalysisRun,\n saveTypeResult,\n getCurrentRunId,\n} from '../../lib/results-db.js';\nimport type { Phase1Output } from '../../lib/core/types.js';\n\nexport async function execute(_args: Record): Promise {\n const runId = getCurrentRunId();\n\n let phase1Output: Phase1Output;\n const existingRun = runId ? getAnalysisRun(runId) : null;\n\n if (existingRun?.phase1Output) {\n phase1Output = existingRun.phase1Output;\n } else {\n try {\n const phase1Path = join(getPluginDataDir(), 'phase1-output.json');\n const content = await readFile(phase1Path, 'utf-8');\n phase1Output = JSON.parse(content);\n } catch {\n return JSON.stringify({\n status: 'error',\n message: 'No Phase 1 data found. Run extract-data first.',\n });\n }\n }\n\n const scores = existingRun?.phase1Output\n ? existingRun.scores\n : computeDeterministicScores(phase1Output);\n const typeResult = computeDeterministicType(scores, phase1Output);\n\n if (runId) {\n saveTypeResult(runId, typeResult);\n }\n\n return JSON.stringify({\n status: 'ok',\n primaryType: typeResult.primaryType,\n controlLevel: typeResult.controlLevel,\n matrixName: typeResult.matrixName,\n matrixEmoji: typeResult.matrixEmoji,\n distribution: typeResult.distribution,\n controlScore: typeResult.controlScore,\n runId,\n message:\n `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} ` +\n `(${typeResult.primaryType} / ${typeResult.controlLevel}).`,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AAQA,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAWrB,eAAsB,QAAQ,OAAiD;AAC7E,QAAM,QAAQ,gBAAgB;AAE9B,MAAI;AACJ,QAAM,cAAc,QAAQ,eAAe,KAAK,IAAI;AAEpD,MAAI,aAAa,cAAc;AAC7B,mBAAe,YAAY;AAAA,EAC7B,OAAO;AACL,QAAI;AACF,YAAM,aAAa,KAAK,iBAAiB,GAAG,oBAAoB;AAChE,YAAM,UAAU,MAAM,SAAS,YAAY,OAAO;AAClD,qBAAe,KAAK,MAAM,OAAO;AAAA,IACnC,QAAQ;AACN,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,eACxB,YAAY,SACZ,2BAA2B,YAAY;AAC3C,QAAM,aAAa,yBAAyB,QAAQ,YAAY;AAEhE,MAAI,OAAO;AACT,mBAAe,OAAO,UAAU;AAAA,EAClC;AAEA,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR,aAAa,WAAW;AAAA,IACxB,cAAc,WAAW;AAAA,IACzB,YAAY,WAAW;AAAA,IACvB,aAAa,WAAW;AAAA,IACxB,cAAc,WAAW;AAAA,IACzB,cAAc,WAAW;AAAA,IACzB;AAAA,IACA,SACE,mBAAmB,WAAW,WAAW,IAAI,WAAW,UAAU,KAC9D,WAAW,WAAW,MAAM,WAAW,YAAY;AAAA,EAC3D,CAAC;AACH;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/cli/index.js b/packages/plugin/dist/cli/index.js new file mode 100755 index 00000000..85cba206 --- /dev/null +++ b/packages/plugin/dist/cli/index.js @@ -0,0 +1,87 @@ +#!/usr/bin/env node +import { + ensureNativeDeps +} from "../chunk-A6TBYMRP.js"; +import "../chunk-FW6ZW4J3.js"; +import "../chunk-NSBPE2FW.js"; + +// cli/index.ts +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; +var pluginRoot = join(dirname(fileURLToPath(import.meta.url)), "..", ".."); +ensureNativeDeps({ pluginRoot, fatal: true }); +var COMMANDS = { + "scan-sessions": () => import("../scan-sessions-C7ZTXOWT.js"), + "extract-data": () => import("../extract-data-SA3L25BI.js"), + "get-prompt-context": () => import("../get-prompt-context-RPLLOGSK.js"), + "save-stage-output": () => import("../save-stage-output-D2ZQMBHP.js"), + "get-stage-output": () => import("../get-stage-output-RZT4A4FD.js"), + "save-domain-results": () => import("../save-domain-results-MGOM6TKS.js"), + "get-domain-results": () => import("../get-domain-results-AJSUPVA2.js"), + "get-run-progress": () => import("../get-run-progress-O6LL2U2R.js"), + "classify-developer-type": () => import("../classify-developer-type-XXBUUHDB.js"), + "verify-evidence": () => import("../verify-evidence-XTM6E7ST.js"), + "generate-report": () => import("../generate-report-LCHULA3Z.js"), + "sync-to-team": () => import("../sync-to-team-TJFZJDZM.js"), + "get-user-prefs": () => import("../get-user-prefs-Z4HGQUNP.js"), + "save-user-prefs": () => import("../save-user-prefs-TSPPMLMV.js") +}; +function toCamelCase(str) { + return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase()); +} +function parseArgs(argv) { + const [command, ...rest] = argv; + const args = {}; + for (let i = 0; i < rest.length; i++) { + const token = rest[i]; + if (token.startsWith("--")) { + const key = toCamelCase(token.slice(2)); + const next = rest[i + 1]; + if (next === void 0 || next.startsWith("--")) { + args[key] = true; + continue; + } + try { + args[key] = JSON.parse(next); + } catch { + args[key] = next; + } + i++; + } + } + return { command: command ?? "", args }; +} +async function main() { + const { command, args } = parseArgs(process.argv.slice(2)); + if (!command || command === "help") { + const commands = Object.keys(COMMANDS).sort().join("\n "); + console.log(`BetterPrompt CLI + +Usage: betterprompt-cli [--arg value ...] + +Commands: + ${commands}`); + process.exit(0); + } + const loader = COMMANDS[command]; + if (!loader) { + console.error(JSON.stringify({ + status: "error", + message: `Unknown command: ${command}. Run with "help" to see available commands.` + })); + process.exit(1); + } + try { + const mod = await loader(); + const result = await mod.execute(args); + console.log(result); + } catch (error) { + console.error(JSON.stringify({ + status: "error", + message: error instanceof Error ? error.message : "Unknown error" + })); + process.exit(1); + } +} +main(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/plugin/dist/cli/index.js.map b/packages/plugin/dist/cli/index.js.map new file mode 100644 index 00000000..a5712d0a --- /dev/null +++ b/packages/plugin/dist/cli/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * BetterPrompt CLI\n *\n * Lightweight CLI that replaces the MCP server. Each subcommand wraps\n * the same lib/ functions the MCP tools used, with identical validation\n * and persistence logic.\n *\n * Usage: node dist/cli/index.js [options]\n *\n * Output convention:\n * - Small results: JSON printed to stdout\n * - Large results: written to ~/.betterprompt/tmp/.json,\n * stdout contains { status: \"ok\", outputFile: \"\" }\n */\n\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { ensureNativeDeps } from '../lib/native-deps.js';\n\nconst pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');\nensureNativeDeps({ pluginRoot, fatal: true });\n\nconst COMMANDS: Record Promise<{ execute: (args: Record) => Promise }>> = {\n 'scan-sessions': () => import('./commands/scan-sessions.js'),\n 'extract-data': () => import('./commands/extract-data.js'),\n 'get-prompt-context': () => import('./commands/get-prompt-context.js'),\n 'save-stage-output': () => import('./commands/save-stage-output.js'),\n 'get-stage-output': () => import('./commands/get-stage-output.js'),\n 'save-domain-results': () => import('./commands/save-domain-results.js'),\n 'get-domain-results': () => import('./commands/get-domain-results.js'),\n 'get-run-progress': () => import('./commands/get-run-progress.js'),\n 'classify-developer-type': () => import('./commands/classify-developer-type.js'),\n 'verify-evidence': () => import('./commands/verify-evidence.js'),\n 'generate-report': () => import('./commands/generate-report.js'),\n 'sync-to-team': () => import('./commands/sync-to-team.js'),\n 'get-user-prefs': () => import('./commands/get-user-prefs.js'),\n 'save-user-prefs': () => import('./commands/save-user-prefs.js'),\n};\n\n/** Convert kebab-case to camelCase: \"include-projects\" → \"includeProjects\" */\nfunction toCamelCase(str: string): string {\n return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction parseArgs(argv: string[]): { command: string; args: Record } {\n const [command, ...rest] = argv;\n const args: Record = {};\n\n for (let i = 0; i < rest.length; i++) {\n const token = rest[i]!;\n if (token.startsWith('--')) {\n const key = toCamelCase(token.slice(2));\n const next = rest[i + 1];\n\n // Boolean flag (no value or next token is also a flag)\n if (next === undefined || next.startsWith('--')) {\n args[key] = true;\n continue;\n }\n\n // Try to parse as JSON (for objects/arrays/numbers/booleans)\n try {\n args[key] = JSON.parse(next);\n } catch {\n args[key] = next;\n }\n i++;\n }\n }\n\n return { command: command ?? '', args };\n}\n\nasync function main(): Promise {\n const { command, args } = parseArgs(process.argv.slice(2));\n\n if (!command || command === 'help') {\n const commands = Object.keys(COMMANDS).sort().join('\\n ');\n console.log(`BetterPrompt CLI\\n\\nUsage: betterprompt-cli [--arg value ...]\\n\\nCommands:\\n ${commands}`);\n process.exit(0);\n }\n\n const loader = COMMANDS[command];\n if (!loader) {\n console.error(JSON.stringify({\n status: 'error',\n message: `Unknown command: ${command}. Run with \"help\" to see available commands.`,\n }));\n process.exit(1);\n }\n\n try {\n const mod = await loader();\n const result = await mod.execute(args);\n console.log(result);\n } catch (error) {\n console.error(JSON.stringify({\n status: 'error',\n message: error instanceof Error ? error.message : 'Unknown error',\n }));\n process.exit(1);\n }\n}\n\nmain();\n"],"mappings":";;;;;;;;AAiBA,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAG9B,IAAM,aAAa,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,MAAM,IAAI;AAC3E,iBAAiB,EAAE,YAAY,OAAO,KAAK,CAAC;AAE5C,IAAM,WAA2G;AAAA,EAC/G,iBAA0B,MAAM,OAAO,8BAA6B;AAAA,EACpE,gBAA0B,MAAM,OAAO,6BAA4B;AAAA,EACnE,sBAA0B,MAAM,OAAO,mCAAkC;AAAA,EACzE,qBAA0B,MAAM,OAAO,kCAAiC;AAAA,EACxE,oBAA0B,MAAM,OAAO,iCAAgC;AAAA,EACvE,uBAA0B,MAAM,OAAO,oCAAmC;AAAA,EAC1E,sBAA0B,MAAM,OAAO,mCAAkC;AAAA,EACzE,oBAA0B,MAAM,OAAO,iCAAgC;AAAA,EACvE,2BAA2B,MAAM,OAAO,wCAAuC;AAAA,EAC/E,mBAA0B,MAAM,OAAO,gCAA+B;AAAA,EACtE,mBAA0B,MAAM,OAAO,gCAA+B;AAAA,EACtE,gBAA0B,MAAM,OAAO,6BAA4B;AAAA,EACnE,kBAA0B,MAAM,OAAO,+BAA8B;AAAA,EACrE,mBAA0B,MAAM,OAAO,gCAA+B;AACxE;AAGA,SAAS,YAAY,KAAqB;AACxC,SAAO,IAAI,QAAQ,aAAa,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC;AAC3D;AAEA,SAAS,UAAU,MAAoE;AACrF,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI;AAC3B,QAAM,OAAgC,CAAC;AAEvC,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,QAAQ,KAAK,CAAC;AACpB,QAAI,MAAM,WAAW,IAAI,GAAG;AAC1B,YAAM,MAAM,YAAY,MAAM,MAAM,CAAC,CAAC;AACtC,YAAM,OAAO,KAAK,IAAI,CAAC;AAGvB,UAAI,SAAS,UAAa,KAAK,WAAW,IAAI,GAAG;AAC/C,aAAK,GAAG,IAAI;AACZ;AAAA,MACF;AAGA,UAAI;AACF,aAAK,GAAG,IAAI,KAAK,MAAM,IAAI;AAAA,MAC7B,QAAQ;AACN,aAAK,GAAG,IAAI;AAAA,MACd;AACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,SAAS,WAAW,IAAI,KAAK;AACxC;AAEA,eAAe,OAAsB;AACnC,QAAM,EAAE,SAAS,KAAK,IAAI,UAAU,QAAQ,KAAK,MAAM,CAAC,CAAC;AAEzD,MAAI,CAAC,WAAW,YAAY,QAAQ;AAClC,UAAM,WAAW,OAAO,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,MAAM;AACzD,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,IAA2F,QAAQ,EAAE;AACjH,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,SAAS,OAAO;AAC/B,MAAI,CAAC,QAAQ;AACX,YAAQ,MAAM,KAAK,UAAU;AAAA,MAC3B,QAAQ;AAAA,MACR,SAAS,oBAAoB,OAAO;AAAA,IACtC,CAAC,CAAC;AACF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACF,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,SAAS,MAAM,IAAI,QAAQ,IAAI;AACrC,YAAQ,IAAI,MAAM;AAAA,EACpB,SAAS,OAAO;AACd,YAAQ,MAAM,KAAK,UAAU;AAAA,MAC3B,QAAQ;AAAA,MACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IACpD,CAAC,CAAC;AACF,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,KAAK;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/extract-data-SA3L25BI.js b/packages/plugin/dist/extract-data-SA3L25BI.js new file mode 100644 index 00000000..d7f3ccd4 --- /dev/null +++ b/packages/plugin/dist/extract-data-SA3L25BI.js @@ -0,0 +1,518 @@ +import "./chunk-3Y74BQOH.js"; +import { + normalizeProjectFilters, + normalizeProjectNameValue, + readCachedParsedSessions +} from "./chunk-UNYQVFLT.js"; +import { + clearAnalysisPending, + markAnalysisFailed, + markAnalysisStarted +} from "./chunk-VXUKPHXP.js"; +import "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import { + createAnalysisRun +} from "./chunk-T2XRMW7B.js"; +import { + CONTEXT_WINDOW_SIZE, + buildReportActivitySessions, + computeDeterministicScores, + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/extract-data.ts +import { writeFile, mkdir } from "fs/promises"; +import { join } from "path"; + +// lib/core/data-extractor.ts +var MAX_TEXT_LENGTH = 2e3; +var SKILL_INJECTION_PREFIX = "Base directory for this skill:"; +var KNOWN_SLASH_COMMANDS = /* @__PURE__ */ new Set([ + "plan", + "review", + "commit", + "compact", + "clear", + "help", + "init", + "sisyphus", + "orchestrator", + "ultrawork", + "ralph-loop", + "deepsearch", + "analyze", + "prometheus", + "cancel-ralph", + "update", + "bug", + "config", + "cost", + "doctor", + "login", + "logout", + "memory", + "model", + "permissions", + "project", + "status", + "terminal-setup", + "vim", + "fast" +]); +var CLEAR_COMMAND_PATTERNS = [ + /^\/clear\b/m, + /\/clear<\/command-name>/ +]; +var INSIGHT_BLOCK_PATTERN = /`★\s*Insight\s*─+`\n([\s\S]*?)\n`─+`/g; +function stripSystemTags(content) { + return content.replace(/[\s\S]*?<\/system-reminder>/g, "").replace(/([\s\S]*?)<\/command-name>/g, "$1").replace(/[\s\S]*?<\/EXTREMELY_IMPORTANT>/g, "").replace(/[\s\S]*?<\/tool_result>/g, "").replace(/\n{3,}/g, "\n\n").trim(); +} +function truncateText(text, maxLen) { + if (text.length <= maxLen) return text; + return text.slice(0, maxLen) + "... [truncated]"; +} +function countWords(text) { + const cleaned = text.replace(/```[\s\S]*?```/g, "").trim(); + if (!cleaned) return 0; + return cleaned.split(/\s+/).filter((w) => w.length > 0).length; +} +function hasCodeBlock(text) { + return /```/.test(text); +} +function hasQuestion(text) { + return /\?/.test(text); +} +function isContinuation(text) { + const lower = text.toLowerCase().trim(); + return /^(continue|go ahead|proceed|keep going|next|yes|ok|okay|sure|do it|let's go)/i.test(lower); +} +function isClearCommand(content) { + return CLEAR_COMMAND_PATTERNS.some((p) => p.test(content)); +} +function extractSlashCommands(rawContent) { + const commands = []; + const xmlPattern = /\/([\w-]+)<\/command-name>/g; + let match; + while ((match = xmlPattern.exec(rawContent)) !== null) { + commands.push(match[1]); + } + const plainPattern = /^\/(\w[\w-]*)/gm; + while ((match = plainPattern.exec(rawContent)) !== null) { + const cmd = match[1]; + if (KNOWN_SLASH_COMMANDS.has(cmd)) { + commands.push(cmd); + } + } + return commands; +} +function extractTextFromContent(content) { + if (typeof content === "string") return content; + return content.filter((block) => block.type === "text").map((block) => block.text).join("\n"); +} +function assistantHadError(assistantContent) { + return assistantContent.some((block) => block.type === "tool_result" && block.is_error); +} +function extractToolCallNames(assistantContent) { + return assistantContent.filter((block) => block.type === "tool_use").map((block) => block.name); +} +var REJECTION_PATTERNS = [ + /\bno\b/i, + /\bwrong\b/i, + /\bincorrect\b/i, + /\btry again\b/i, + /\bthat's not right\b/i, + /\bnot what i/i, + /\bdon't\b.*\bthat\b/i, + /\bundo\b/i, + /\brevert\b/i +]; +var FRUSTRATION_PATTERNS = [ + /\bagain\b/i, + /\bstill not working\b/i, + /\bsame error\b/i, + /\bfrustrat/i, + /\bugh\b/i, + /\bwhy (won't|doesn't|isn't)/i +]; +function isRejection(text) { + const lower = text.toLowerCase(); + if (lower.length > 200) return false; + return REJECTION_PATTERNS.some((p) => p.test(lower)); +} +function isFrustration(text) { + return FRUSTRATION_PATTERNS.some((p) => p.test(text)); +} +function isAnalyzableUserMessage(message) { + const isSkillInjectedPrompt = message.rawContent.trim().startsWith(SKILL_INJECTION_PREFIX); + return message.role === "user" && !message.isMeta && typeof message.sourceToolUseID !== "string" && message.toolUseResult === void 0 && !isSkillInjectedPrompt; +} +function toRawSessionData(session) { + return { + sessionId: session.sessionId, + messages: session.messages.map((message) => { + if (message.role === "user") { + return { + role: "user", + rawContent: message.content, + content: [{ type: "text", text: message.content }], + timestamp: new Date(message.timestamp), + ...message.isMeta ? { isMeta: true } : {}, + ...typeof message.sourceToolUseID === "string" ? { sourceToolUseID: message.sourceToolUseID } : {}, + ...message.toolUseResult !== void 0 ? { toolUseResult: message.toolUseResult } : {} + }; + } + const content = []; + if (message.content) { + content.push({ type: "text", text: message.content }); + } + for (const toolCall of message.toolCalls ?? []) { + content.push({ + type: "tool_use", + id: toolCall.id, + name: toolCall.name + }); + if (toolCall.result !== void 0) { + content.push({ + type: "tool_result", + tool_use_id: toolCall.id, + content: toolCall.result, + is_error: toolCall.isError + }); + } + } + return { + role: "assistant", + rawContent: message.content, + content, + timestamp: new Date(message.timestamp), + tokenUsage: message.tokenUsage + }; + }) + }; +} +function extractFromSession(session) { + const utterances = []; + const slashCommands = []; + const insightBlocks = []; + const seenKeys = /* @__PURE__ */ new Set(); + let precedingAssistantContent = null; + for (let i = 0; i < session.messages.length; i++) { + const message = session.messages[i]; + if (message.role === "user") { + if (!isAnalyzableUserMessage(message)) { + precedingAssistantContent = null; + continue; + } + const rawText = extractTextFromContent( + message.content + ); + slashCommands.push(...extractSlashCommands(message.rawContent || rawText)); + if (isClearCommand(rawText)) { + precedingAssistantContent = null; + continue; + } + const cleanText = stripSystemTags(rawText); + if (!cleanText.trim()) continue; + const dedupeKey = `${message.timestamp.toISOString()}|${cleanText.slice(0, 200)}`; + if (seenKeys.has(dedupeKey)) continue; + seenKeys.add(dedupeKey); + const text = truncateText(cleanText, MAX_TEXT_LENGTH); + const id = `${session.sessionId}_${i}`; + utterances.push({ + id, + text, + timestamp: message.timestamp.toISOString(), + sessionId: session.sessionId, + turnIndex: i, + characterCount: cleanText.length, + wordCount: countWords(cleanText), + hasCodeBlock: hasCodeBlock(cleanText), + hasQuestion: hasQuestion(cleanText), + isSessionStart: utterances.length === 0, + isContinuation: isContinuation(cleanText), + precedingAIToolCalls: precedingAssistantContent ? extractToolCallNames(precedingAssistantContent) : void 0, + precedingAIHadError: precedingAssistantContent ? assistantHadError(precedingAssistantContent) : void 0 + }); + precedingAssistantContent = null; + } else if (message.role === "assistant") { + precedingAssistantContent = message.content; + const assistantText = message.content.filter((b) => b.type === "text").map((b) => b.text).join("\n"); + let match; + const pattern = new RegExp(INSIGHT_BLOCK_PATTERN.source, "g"); + while ((match = pattern.exec(assistantText)) !== null) { + const content = match[1].trim().slice(0, 500); + if (content) { + insightBlocks.push({ + sessionId: session.sessionId, + turnIndex: i, + content, + triggeringUtteranceId: utterances.length > 0 ? utterances[utterances.length - 1].id : void 0 + }); + } + } + } + } + return { utterances, slashCommands, insightBlocks }; +} +function computeFrictionSignals(sessions, utterances) { + let toolFailureCount = 0; + let userRejectionSignals = 0; + let excessiveIterationSessions = 0; + let contextOverflowSessions = 0; + let frustrationExpressionCount = 0; + let bareRetryAfterErrorCount = 0; + let errorChainMaxLength = 0; + for (const session of sessions) { + let sessionUserMessages = 0; + let sessionHadOverflow = false; + let currentErrorChain = 0; + for (const message of session.messages) { + if (isAnalyzableUserMessage(message)) { + sessionUserMessages++; + } else if (message.role === "assistant") { + for (const block of message.content) { + if (block.type === "tool_result" && block.is_error) { + toolFailureCount++; + currentErrorChain++; + errorChainMaxLength = Math.max(errorChainMaxLength, currentErrorChain); + } + } + if (message.tokenUsage && message.tokenUsage.input / CONTEXT_WINDOW_SIZE >= 0.9) { + sessionHadOverflow = true; + } + } + if (message.role === "assistant") { + const hasError = message.content.some((b) => b.type === "tool_result" && b.is_error); + if (!hasError) currentErrorChain = 0; + } + } + if (sessionUserMessages >= 10) excessiveIterationSessions++; + if (sessionHadOverflow) contextOverflowSessions++; + } + for (const u of utterances) { + if (isRejection(u.text)) userRejectionSignals++; + if (isFrustration(u.text)) frustrationExpressionCount++; + if (u.precedingAIHadError && u.wordCount < 10) { + bareRetryAfterErrorCount++; + } + } + const errorPatterns = /* @__PURE__ */ new Map(); + for (const session of sessions) { + for (const message of session.messages) { + if (message.role === "assistant") { + for (const block of message.content) { + if (block.type === "tool_result" && block.is_error) { + const errText = typeof block.content === "string" ? block.content : ""; + const fingerprint = errText.replace(/\/[\w/.-]+/g, "").replace(/\d{4}-\d{2}-\d{2}/g, "").slice(0, 100); + errorPatterns.set(fingerprint, (errorPatterns.get(fingerprint) ?? 0) + 1); + } + } + } + } + } + const repeatedToolErrorPatterns = [...errorPatterns.values()].filter((c) => c >= 2).length; + return { + toolFailureCount, + userRejectionSignals, + excessiveIterationSessions, + contextOverflowSessions, + frustrationExpressionCount, + repeatedToolErrorPatterns, + bareRetryAfterErrorCount, + errorChainMaxLength + }; +} +function computeSessionHints(sessions) { + let totalUserTurns = 0; + let shortSessions = 0; + let mediumSessions = 0; + let longSessions = 0; + for (const session of sessions) { + const userTurns = session.messages.filter(isAnalyzableUserMessage).length; + totalUserTurns += userTurns; + if (userTurns <= 3) shortSessions++; + else if (userTurns <= 10) mediumSessions++; + else longSessions++; + } + return { + avgTurnsPerSession: sessions.length > 0 ? totalUserTurns / sessions.length : 0, + shortSessions, + mediumSessions, + longSessions + }; +} +function computeContextFillMetrics(sessions) { + const fillPercentages = []; + for (const session of sessions) { + for (const message of session.messages) { + if (message.role === "assistant" && message.tokenUsage?.input) { + fillPercentages.push(message.tokenUsage.input / CONTEXT_WINDOW_SIZE * 100); + } + } + } + if (fillPercentages.length === 0) return {}; + const avgFill = fillPercentages.reduce((sum, p) => sum + p, 0) / fillPercentages.length; + const maxFill = Math.max(...fillPercentages); + return { + avgContextFillPercent: Math.round(avgFill * 10) / 10, + maxContextFillPercent: Math.round(maxFill * 10) / 10, + contextFillExceeded90Count: fillPercentages.filter((p) => p >= 90).length + }; +} +async function extractPhase1DataFromParsedSessions(sessions) { + const allUtterances = []; + const allSlashCommands = []; + const allInsightBlocks = []; + const allSessions = []; + if (sessions.length === 0) { + throw new Error("No parsed sessions available for Phase 1 extraction."); + } + for (const parsedSession of sessions) { + const session = toRawSessionData(parsedSession); + allSessions.push(session); + const { utterances, slashCommands, insightBlocks } = extractFromSession(session); + allUtterances.push(...utterances); + allSlashCommands.push(...slashCommands); + allInsightBlocks.push(...insightBlocks); + } + const totalMessages = allSessions.reduce((sum, s) => sum + s.messages.length, 0); + const totalUserMessages = allSessions.reduce( + (sum, s) => sum + s.messages.filter(isAnalyzableUserMessage).length, + 0 + ); + const questionCount = allUtterances.filter((u) => u.hasQuestion).length; + const codeBlockCount = allUtterances.filter((u) => u.hasCodeBlock).length; + const slashCommandCounts = {}; + for (const cmd of allSlashCommands) { + slashCommandCounts[cmd] = (slashCommandCounts[cmd] ?? 0) + 1; + } + const timestamps = allUtterances.map((u) => u.timestamp).sort(); + const contextFillMetrics = computeContextFillMetrics(allSessions); + const frictionSignals = computeFrictionSignals(allSessions, allUtterances); + const sessionHints = computeSessionHints(allSessions); + const sessionMetrics = { + totalSessions: allSessions.length, + totalMessages, + totalDeveloperUtterances: allUtterances.length, + totalAIResponses: totalMessages - totalUserMessages, + avgMessagesPerSession: allSessions.length > 0 ? totalMessages / allSessions.length : 0, + avgDeveloperMessageLength: allUtterances.length > 0 ? allUtterances.reduce((sum, u) => sum + u.characterCount, 0) / allUtterances.length : 0, + questionRatio: allUtterances.length > 0 ? questionCount / allUtterances.length : 0, + codeBlockRatio: allUtterances.length > 0 ? codeBlockCount / allUtterances.length : 0, + dateRange: { + earliest: timestamps[0] ?? (/* @__PURE__ */ new Date()).toISOString(), + latest: timestamps[timestamps.length - 1] ?? (/* @__PURE__ */ new Date()).toISOString() + }, + ...Object.keys(slashCommandCounts).length > 0 ? { slashCommandCounts } : {}, + ...contextFillMetrics, + frictionSignals, + sessionHints, + ...allInsightBlocks.length > 0 ? { aiInsightBlockCount: allInsightBlocks.length } : {} + }; + const activitySessions = allSessions.map((session, idx) => { + const parsedSession = sessions[idx]; + const userMessages = session.messages.filter(isAnalyzableUserMessage); + const assistantMessages = session.messages.filter((m) => m.role === "assistant"); + const sessionTimestamps = session.messages.map((m) => m.timestamp.getTime()).sort(); + const startTime = sessionTimestamps.length > 0 ? new Date(sessionTimestamps[0]).toISOString() : (/* @__PURE__ */ new Date()).toISOString(); + const endTime = sessionTimestamps.length > 0 ? sessionTimestamps[sessionTimestamps.length - 1] : Date.now(); + const durationSeconds = sessionTimestamps.length > 1 ? (endTime - sessionTimestamps[0]) / 1e3 : parsedSession.durationSeconds; + const totalInputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.input ?? 0), 0); + const totalOutputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.output ?? 0), 0); + const firstUserMsg = userMessages[0]?.rawContent?.slice(0, 200) ?? ""; + return { + sessionId: session.sessionId, + projectName: parsedSession.projectName ?? "unknown", + ...parsedSession.projectPath ? { projectPath: parsedSession.projectPath } : {}, + startTime, + durationSeconds: Math.round(durationSeconds), + messageCount: session.messages.length, + userMessageCount: userMessages.length, + assistantMessageCount: assistantMessages.length, + totalInputTokens, + totalOutputTokens, + ...firstUserMsg ? { firstUserMessage: firstUserMsg } : {} + }; + }); + return { + developerUtterances: allUtterances, + sessionMetrics, + ...allInsightBlocks.length > 0 ? { aiInsightBlocks: allInsightBlocks } : {}, + activitySessions, + sessions + }; +} + +// cli/commands/extract-data.ts +async function execute(args) { + const maxSessions = args.maxSessions ?? 50; + const includeProjects = normalizeProjectFilters(args.includeProjects); + const allSessions = await readCachedParsedSessions(); + if (allSessions.length === 0) { + return JSON.stringify({ + status: "no_data", + message: "No cached parsed sessions. Run scan-sessions first." + }); + } + const sessions = includeProjects?.length ? allSessions.filter((s) => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; + if (sessions.length === 0) { + return JSON.stringify({ + status: "no_data", + message: "No sessions match the selected projects. Run scan-sessions to see available projects." + }); + } + clearAnalysisPending(); + markAnalysisStarted(); + try { + const selectedSessions = sessions.slice(0, maxSessions); + const phase1Output = await extractPhase1DataFromParsedSessions(selectedSessions); + const scores = computeDeterministicScores(phase1Output); + const activitySessions = buildReportActivitySessions(phase1Output); + const pluginDataDir = getPluginDataDir(); + await mkdir(pluginDataDir, { recursive: true }); + const phase1Path = join(pluginDataDir, "phase1-output.json"); + await writeFile(phase1Path, JSON.stringify(phase1Output, null, 2), "utf-8"); + const runId = createAnalysisRun({ + metrics: phase1Output.sessionMetrics, + scores, + phase1Output, + activitySessions + }); + const runIdPath = join(pluginDataDir, "current-run-id.txt"); + await writeFile(runIdPath, String(runId), "utf-8"); + const metrics = phase1Output.sessionMetrics; + return JSON.stringify({ + status: "ok", + runId, + phase1OutputPath: phase1Path, + metrics: { + totalSessions: metrics.totalSessions, + totalUtterances: metrics.totalDeveloperUtterances, + totalMessages: metrics.totalMessages, + avgMessagesPerSession: Math.round(metrics.avgMessagesPerSession), + avgMessageLength: Math.round(metrics.avgDeveloperMessageLength), + questionRatio: Math.round(metrics.questionRatio * 100), + codeBlockRatio: Math.round(metrics.codeBlockRatio * 100), + dateRange: metrics.dateRange + }, + deterministicScores: { + aiPartnership: scores.aiPartnership, + sessionCraft: scores.sessionCraft, + toolMastery: scores.toolMastery, + skillResilience: scores.skillResilience, + sessionMastery: scores.sessionMastery, + controlScore: scores.controlScore + }, + message: `Extracted ${metrics.totalDeveloperUtterances} utterances from ${metrics.totalSessions} sessions. Analysis run #${runId} created. Ready for domain analysis.` + }); + } catch (error) { + markAnalysisFailed(error); + throw error; + } +} +export { + execute +}; +//# sourceMappingURL=extract-data-SA3L25BI.js.map \ No newline at end of file diff --git a/packages/plugin/dist/extract-data-SA3L25BI.js.map b/packages/plugin/dist/extract-data-SA3L25BI.js.map new file mode 100644 index 00000000..62705242 --- /dev/null +++ b/packages/plugin/dist/extract-data-SA3L25BI.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/extract-data.ts","../lib/core/data-extractor.ts"],"sourcesContent":["/**\n * extract-data CLI command\n *\n * Runs deterministic Phase 1 extraction on scanned sessions.\n *\n * Usage: betterprompt-cli extract-data [--maxSessions 50] [--includeProjects '[\"proj1\"]']\n */\n\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { readCachedParsedSessions } from '../../lib/core/multi-source-session-scanner.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport { extractPhase1DataFromParsedSessions } from '../../lib/core/data-extractor.js';\nimport { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js';\nimport { buildReportActivitySessions } from '../../lib/evaluation-assembler.js';\nimport { createAnalysisRun } from '../../lib/results-db.js';\nimport { normalizeProjectFilters, normalizeProjectNameValue } from '../../lib/project-filters.js';\nimport {\n clearAnalysisPending,\n markAnalysisFailed,\n markAnalysisStarted,\n} from '../../lib/debounce.js';\n\nexport async function execute(args: Record): Promise {\n const maxSessions = (args.maxSessions as number) ?? 50;\n const includeProjects = normalizeProjectFilters(args.includeProjects as string[] | undefined);\n\n const allSessions = await readCachedParsedSessions();\n if (allSessions.length === 0) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No cached parsed sessions. Run scan-sessions first.',\n });\n }\n\n const sessions = includeProjects?.length\n ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName)))\n : allSessions;\n\n if (sessions.length === 0) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No sessions match the selected projects. Run scan-sessions to see available projects.',\n });\n }\n\n clearAnalysisPending();\n markAnalysisStarted();\n\n try {\n const selectedSessions = sessions.slice(0, maxSessions);\n const phase1Output = await extractPhase1DataFromParsedSessions(selectedSessions);\n const scores = computeDeterministicScores(phase1Output);\n const activitySessions = buildReportActivitySessions(phase1Output);\n\n const pluginDataDir = getPluginDataDir();\n await mkdir(pluginDataDir, { recursive: true });\n const phase1Path = join(pluginDataDir, 'phase1-output.json');\n await writeFile(phase1Path, JSON.stringify(phase1Output, null, 2), 'utf-8');\n\n const runId = createAnalysisRun({\n metrics: phase1Output.sessionMetrics,\n scores,\n phase1Output,\n activitySessions,\n });\n\n const runIdPath = join(pluginDataDir, 'current-run-id.txt');\n await writeFile(runIdPath, String(runId), 'utf-8');\n\n const metrics = phase1Output.sessionMetrics;\n\n return JSON.stringify({\n status: 'ok',\n runId,\n phase1OutputPath: phase1Path,\n metrics: {\n totalSessions: metrics.totalSessions,\n totalUtterances: metrics.totalDeveloperUtterances,\n totalMessages: metrics.totalMessages,\n avgMessagesPerSession: Math.round(metrics.avgMessagesPerSession),\n avgMessageLength: Math.round(metrics.avgDeveloperMessageLength),\n questionRatio: Math.round(metrics.questionRatio * 100),\n codeBlockRatio: Math.round(metrics.codeBlockRatio * 100),\n dateRange: metrics.dateRange,\n },\n deterministicScores: {\n aiPartnership: scores.aiPartnership,\n sessionCraft: scores.sessionCraft,\n toolMastery: scores.toolMastery,\n skillResilience: scores.skillResilience,\n sessionMastery: scores.sessionMastery,\n controlScore: scores.controlScore,\n },\n message:\n `Extracted ${metrics.totalDeveloperUtterances} utterances from ${metrics.totalSessions} sessions. ` +\n `Analysis run #${runId} created. Ready for domain analysis.`,\n });\n } catch (error) {\n markAnalysisFailed(error);\n throw error;\n }\n}\n","/**\n * Data Extractor - Deterministic Phase 1 extraction from parsed sessions\n *\n * Accepts canonical parsed sessions and produces the plugin Phase 1 artifact.\n * Full parsed sessions are preserved on the output so downstream stages keep\n * transcript access while the extracted utterance layer remains deterministic.\n *\n * @module plugin/lib/core/data-extractor\n */\n\nimport type {\n UserUtterance,\n AIInsightBlock,\n Phase1Output,\n Phase1SessionMetrics,\n FrictionSignals,\n SessionHints,\n ParsedSession,\n} from './types.js';\nimport { CONTEXT_WINDOW_SIZE } from './types.js';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MAX_TEXT_LENGTH = 2000;\nconst SKILL_INJECTION_PREFIX = 'Base directory for this skill:';\n/** Known slash commands (prevents false positives from file paths) */\nconst KNOWN_SLASH_COMMANDS = new Set([\n 'plan', 'review', 'commit', 'compact', 'clear', 'help', 'init',\n 'sisyphus', 'orchestrator', 'ultrawork', 'ralph-loop', 'deepsearch',\n 'analyze', 'prometheus', 'cancel-ralph', 'update',\n 'bug', 'config', 'cost', 'doctor', 'login', 'logout', 'memory',\n 'model', 'permissions', 'project', 'status', 'terminal-setup',\n 'vim', 'fast',\n]);\n\n/** Patterns for /clear command detection */\nconst CLEAR_COMMAND_PATTERNS = [\n /^\\/clear\\b/m,\n /\\/clear<\\/command-name>/,\n];\n\n/** Insight block regex */\nconst INSIGHT_BLOCK_PATTERN = /`★\\s*Insight\\s*─+`\\n([\\s\\S]*?)\\n`─+`/g;\n\n// ============================================================================\n// System Tag Stripping\n// ============================================================================\n\n/**\n * Strip system-injected tags from user message content.\n * These tags are added by Claude Code, not the developer.\n */\nfunction stripSystemTags(content: string): string {\n return content\n // Remove system-reminder tags\n .replace(/[\\s\\S]*?<\\/system-reminder>/g, '')\n // Remove command-name tags but keep the text\n .replace(/([\\s\\S]*?)<\\/command-name>/g, '$1')\n // Remove EXTREMELY_IMPORTANT tags\n .replace(/[\\s\\S]*?<\\/EXTREMELY_IMPORTANT>/g, '')\n // Remove tool result formatting\n .replace(/[\\s\\S]*?<\\/tool_result>/g, '')\n // Collapse excessive whitespace\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\n// ============================================================================\n// Text Utilities\n// ============================================================================\n\nfunction truncateText(text: string, maxLen: number): string {\n if (text.length <= maxLen) return text;\n return text.slice(0, maxLen) + '... [truncated]';\n}\n\nfunction countWords(text: string): number {\n const cleaned = text.replace(/```[\\s\\S]*?```/g, '').trim();\n if (!cleaned) return 0;\n return cleaned.split(/\\s+/).filter(w => w.length > 0).length;\n}\n\nfunction hasCodeBlock(text: string): boolean {\n return /```/.test(text);\n}\n\nfunction hasQuestion(text: string): boolean {\n return /\\?/.test(text);\n}\n\nfunction isContinuation(text: string): boolean {\n const lower = text.toLowerCase().trim();\n return /^(continue|go ahead|proceed|keep going|next|yes|ok|okay|sure|do it|let's go)/i.test(lower);\n}\n\nfunction isClearCommand(content: string): boolean {\n return CLEAR_COMMAND_PATTERNS.some(p => p.test(content));\n}\n\n// ============================================================================\n// Slash Command Extraction\n// ============================================================================\n\nfunction extractSlashCommands(rawContent: string): string[] {\n const commands: string[] = [];\n\n // XML-tagged commands (always trusted)\n const xmlPattern = /\\/([\\w-]+)<\\/command-name>/g;\n let match;\n while ((match = xmlPattern.exec(rawContent)) !== null) {\n commands.push(match[1]!);\n }\n\n // Plain-text `/xxx` at line start (whitelist-matched only)\n const plainPattern = /^\\/(\\w[\\w-]*)/gm;\n while ((match = plainPattern.exec(rawContent)) !== null) {\n const cmd = match[1]!;\n if (KNOWN_SLASH_COMMANDS.has(cmd)) {\n commands.push(cmd);\n }\n }\n\n return commands;\n}\n\n// ============================================================================\n// Content Extraction Helpers\n// ============================================================================\n\n/** Extract text content from JSONL message content field */\nfunction extractTextFromContent(content: string | Array<{ type: string; text?: string }>): string {\n if (typeof content === 'string') return content;\n return content\n .filter((block): block is { type: 'text'; text: string } => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n}\n\n/** Check if assistant response had errors (tool_result with is_error) */\nfunction assistantHadError(\n assistantContent: Array<{ type: string; is_error?: boolean }>,\n): boolean {\n return assistantContent.some(block => block.type === 'tool_result' && block.is_error);\n}\n\n/** Get tool call names from assistant response */\nfunction extractToolCallNames(\n assistantContent: Array<{ type: string; name?: string }>,\n): string[] {\n return assistantContent\n .filter((block): block is { type: 'tool_use'; name: string } => block.type === 'tool_use')\n .map(block => block.name);\n}\n\n// ============================================================================\n// Friction Signal Detection\n// ============================================================================\n\nconst REJECTION_PATTERNS = [\n /\\bno\\b/i, /\\bwrong\\b/i, /\\bincorrect\\b/i, /\\btry again\\b/i,\n /\\bthat's not right\\b/i, /\\bnot what i/i, /\\bdon't\\b.*\\bthat\\b/i,\n /\\bundo\\b/i, /\\brevert\\b/i,\n];\n\nconst FRUSTRATION_PATTERNS = [\n /\\bagain\\b/i, /\\bstill not working\\b/i, /\\bsame error\\b/i,\n /\\bfrustrat/i, /\\bugh\\b/i, /\\bwhy (won't|doesn't|isn't)/i,\n];\n\nfunction isRejection(text: string): boolean {\n const lower = text.toLowerCase();\n if (lower.length > 200) return false;\n return REJECTION_PATTERNS.some(p => p.test(lower));\n}\n\nfunction isFrustration(text: string): boolean {\n return FRUSTRATION_PATTERNS.some(p => p.test(text));\n}\n\n// ============================================================================\n// Session Processing\n// ============================================================================\n\ninterface RawSessionData {\n sessionId: string;\n messages: Array<{\n role: 'user' | 'assistant';\n rawContent: string;\n content: Array<{ type: string; text?: string; name?: string; is_error?: boolean; id?: string; tool_use_id?: string; content?: string | unknown[] }>;\n timestamp: Date;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n tokenUsage?: { input: number; output: number };\n }>;\n}\n\nfunction isAnalyzableUserMessage(\n message: RawSessionData['messages'][number],\n): boolean {\n const isSkillInjectedPrompt = message.rawContent.trim().startsWith(SKILL_INJECTION_PREFIX);\n\n return message.role === 'user'\n && !message.isMeta\n && typeof message.sourceToolUseID !== 'string'\n && message.toolUseResult === undefined\n && !isSkillInjectedPrompt;\n}\n\nfunction toRawSessionData(session: ParsedSession): RawSessionData {\n return {\n sessionId: session.sessionId,\n messages: session.messages.map(message => {\n if (message.role === 'user') {\n return {\n role: 'user',\n rawContent: message.content,\n content: [{ type: 'text', text: message.content }],\n timestamp: new Date(message.timestamp),\n ...(message.isMeta ? { isMeta: true } : {}),\n ...(typeof message.sourceToolUseID === 'string'\n ? { sourceToolUseID: message.sourceToolUseID }\n : {}),\n ...(message.toolUseResult !== undefined ? { toolUseResult: message.toolUseResult } : {}),\n };\n }\n\n const content: RawSessionData['messages'][0]['content'] = [];\n if (message.content) {\n content.push({ type: 'text', text: message.content });\n }\n for (const toolCall of message.toolCalls ?? []) {\n content.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n });\n if (toolCall.result !== undefined) {\n content.push({\n type: 'tool_result',\n tool_use_id: toolCall.id,\n content: toolCall.result,\n is_error: toolCall.isError,\n });\n }\n }\n\n return {\n role: 'assistant',\n rawContent: message.content,\n content,\n timestamp: new Date(message.timestamp),\n tokenUsage: message.tokenUsage,\n };\n }),\n };\n}\n\n/** Extract utterances from a single session */\nfunction extractFromSession(session: RawSessionData): {\n utterances: UserUtterance[];\n slashCommands: string[];\n insightBlocks: AIInsightBlock[];\n} {\n const utterances: UserUtterance[] = [];\n const slashCommands: string[] = [];\n const insightBlocks: AIInsightBlock[] = [];\n const seenKeys = new Set();\n\n let precedingAssistantContent: RawSessionData['messages'][0]['content'] | null = null;\n\n for (let i = 0; i < session.messages.length; i++) {\n const message = session.messages[i]!;\n\n if (message.role === 'user') {\n if (!isAnalyzableUserMessage(message)) {\n precedingAssistantContent = null;\n continue;\n }\n\n // Extract slash commands from raw content BEFORE stripping\n const rawText = extractTextFromContent(\n message.content as unknown as string | Array<{ type: string; text?: string }>,\n );\n slashCommands.push(...extractSlashCommands(message.rawContent || rawText));\n\n // Skip /clear commands\n if (isClearCommand(rawText)) {\n precedingAssistantContent = null;\n continue;\n }\n\n // Strip system tags\n const cleanText = stripSystemTags(rawText);\n if (!cleanText.trim()) continue;\n\n // Deduplication\n const dedupeKey = `${message.timestamp.toISOString()}|${cleanText.slice(0, 200)}`;\n if (seenKeys.has(dedupeKey)) continue;\n seenKeys.add(dedupeKey);\n\n const text = truncateText(cleanText, MAX_TEXT_LENGTH);\n const id = `${session.sessionId}_${i}`;\n\n utterances.push({\n id,\n text,\n timestamp: message.timestamp.toISOString(),\n sessionId: session.sessionId,\n turnIndex: i,\n characterCount: cleanText.length,\n wordCount: countWords(cleanText),\n hasCodeBlock: hasCodeBlock(cleanText),\n hasQuestion: hasQuestion(cleanText),\n isSessionStart: utterances.length === 0,\n isContinuation: isContinuation(cleanText),\n precedingAIToolCalls: precedingAssistantContent\n ? extractToolCallNames(precedingAssistantContent)\n : undefined,\n precedingAIHadError: precedingAssistantContent\n ? assistantHadError(precedingAssistantContent)\n : undefined,\n });\n\n precedingAssistantContent = null;\n } else if (message.role === 'assistant') {\n precedingAssistantContent = message.content;\n\n // Extract insight blocks from assistant text\n const assistantText = message.content\n .filter((b): b is { type: 'text'; text: string } => b.type === 'text')\n .map(b => b.text)\n .join('\\n');\n\n let match;\n const pattern = new RegExp(INSIGHT_BLOCK_PATTERN.source, 'g');\n while ((match = pattern.exec(assistantText)) !== null) {\n const content = match[1]!.trim().slice(0, 500);\n if (content) {\n insightBlocks.push({\n sessionId: session.sessionId,\n turnIndex: i,\n content,\n triggeringUtteranceId: utterances.length > 0\n ? utterances[utterances.length - 1]!.id\n : undefined,\n });\n }\n }\n }\n }\n\n return { utterances, slashCommands, insightBlocks };\n}\n\n// ============================================================================\n// Metrics Computation\n// ============================================================================\n\nfunction computeFrictionSignals(\n sessions: RawSessionData[],\n utterances: UserUtterance[],\n): FrictionSignals {\n let toolFailureCount = 0;\n let userRejectionSignals = 0;\n let excessiveIterationSessions = 0;\n let contextOverflowSessions = 0;\n let frustrationExpressionCount = 0;\n let bareRetryAfterErrorCount = 0;\n let errorChainMaxLength = 0;\n\n // Count tool failures and context overflows per session\n for (const session of sessions) {\n let sessionUserMessages = 0;\n let sessionHadOverflow = false;\n let currentErrorChain = 0;\n\n for (const message of session.messages) {\n if (isAnalyzableUserMessage(message)) {\n sessionUserMessages++;\n } else if (message.role === 'assistant') {\n // Count tool failures\n for (const block of message.content) {\n if (block.type === 'tool_result' && block.is_error) {\n toolFailureCount++;\n currentErrorChain++;\n errorChainMaxLength = Math.max(errorChainMaxLength, currentErrorChain);\n }\n }\n // Check context overflow\n if (message.tokenUsage && message.tokenUsage.input / CONTEXT_WINDOW_SIZE >= 0.9) {\n sessionHadOverflow = true;\n }\n }\n // Reset error chain on non-error\n if (message.role === 'assistant') {\n const hasError = message.content.some(b => b.type === 'tool_result' && b.is_error);\n if (!hasError) currentErrorChain = 0;\n }\n }\n\n if (sessionUserMessages >= 10) excessiveIterationSessions++;\n if (sessionHadOverflow) contextOverflowSessions++;\n }\n\n // Count rejection/frustration from utterances\n for (const u of utterances) {\n if (isRejection(u.text)) userRejectionSignals++;\n if (isFrustration(u.text)) frustrationExpressionCount++;\n // Bare retry: short message after error\n if (u.precedingAIHadError && u.wordCount < 10) {\n bareRetryAfterErrorCount++;\n }\n }\n\n // Count repeated tool error patterns (simplified fingerprinting)\n const errorPatterns = new Map();\n for (const session of sessions) {\n for (const message of session.messages) {\n if (message.role === 'assistant') {\n for (const block of message.content) {\n if (block.type === 'tool_result' && block.is_error) {\n const errText = typeof block.content === 'string' ? block.content : '';\n // Fingerprint: remove paths and timestamps\n const fingerprint = errText\n .replace(/\\/[\\w/.-]+/g, '')\n .replace(/\\d{4}-\\d{2}-\\d{2}/g, '')\n .slice(0, 100);\n errorPatterns.set(fingerprint, (errorPatterns.get(fingerprint) ?? 0) + 1);\n }\n }\n }\n }\n }\n const repeatedToolErrorPatterns = [...errorPatterns.values()].filter(c => c >= 2).length;\n\n return {\n toolFailureCount,\n userRejectionSignals,\n excessiveIterationSessions,\n contextOverflowSessions,\n frustrationExpressionCount,\n repeatedToolErrorPatterns,\n bareRetryAfterErrorCount,\n errorChainMaxLength,\n };\n}\n\nfunction computeSessionHints(sessions: RawSessionData[]): SessionHints {\n let totalUserTurns = 0;\n let shortSessions = 0;\n let mediumSessions = 0;\n let longSessions = 0;\n\n for (const session of sessions) {\n const userTurns = session.messages.filter(isAnalyzableUserMessage).length;\n totalUserTurns += userTurns;\n\n if (userTurns <= 3) shortSessions++;\n else if (userTurns <= 10) mediumSessions++;\n else longSessions++;\n }\n\n return {\n avgTurnsPerSession: sessions.length > 0 ? totalUserTurns / sessions.length : 0,\n shortSessions,\n mediumSessions,\n longSessions,\n };\n}\n\nfunction computeContextFillMetrics(\n sessions: RawSessionData[],\n): {\n avgContextFillPercent?: number;\n maxContextFillPercent?: number;\n contextFillExceeded90Count?: number;\n} {\n const fillPercentages: number[] = [];\n\n for (const session of sessions) {\n for (const message of session.messages) {\n if (message.role === 'assistant' && message.tokenUsage?.input) {\n fillPercentages.push((message.tokenUsage.input / CONTEXT_WINDOW_SIZE) * 100);\n }\n }\n }\n\n if (fillPercentages.length === 0) return {};\n\n const avgFill = fillPercentages.reduce((sum, p) => sum + p, 0) / fillPercentages.length;\n const maxFill = Math.max(...fillPercentages);\n\n return {\n avgContextFillPercent: Math.round(avgFill * 10) / 10,\n maxContextFillPercent: Math.round(maxFill * 10) / 10,\n contextFillExceeded90Count: fillPercentages.filter(p => p >= 90).length,\n };\n}\n\n/**\n * Extract Phase 1 output from parsed sessions.\n */\nexport async function extractPhase1DataFromParsedSessions(\n sessions: ParsedSession[],\n): Promise {\n const allUtterances: UserUtterance[] = [];\n const allSlashCommands: string[] = [];\n const allInsightBlocks: AIInsightBlock[] = [];\n const allSessions: RawSessionData[] = [];\n if (sessions.length === 0) {\n throw new Error('No parsed sessions available for Phase 1 extraction.');\n }\n\n for (const parsedSession of sessions) {\n const session = toRawSessionData(parsedSession);\n allSessions.push(session);\n\n const { utterances, slashCommands, insightBlocks } = extractFromSession(session);\n allUtterances.push(...utterances);\n allSlashCommands.push(...slashCommands);\n allInsightBlocks.push(...insightBlocks);\n }\n\n // Compute metrics\n const totalMessages = allSessions.reduce((sum, s) => sum + s.messages.length, 0);\n const totalUserMessages = allSessions.reduce(\n (sum, s) => sum + s.messages.filter(isAnalyzableUserMessage).length, 0,\n );\n const questionCount = allUtterances.filter(u => u.hasQuestion).length;\n const codeBlockCount = allUtterances.filter(u => u.hasCodeBlock).length;\n\n const slashCommandCounts: Record = {};\n for (const cmd of allSlashCommands) {\n slashCommandCounts[cmd] = (slashCommandCounts[cmd] ?? 0) + 1;\n }\n\n const timestamps = allUtterances.map(u => u.timestamp).sort();\n const contextFillMetrics = computeContextFillMetrics(allSessions);\n const frictionSignals = computeFrictionSignals(allSessions, allUtterances);\n const sessionHints = computeSessionHints(allSessions);\n\n const sessionMetrics: Phase1SessionMetrics = {\n totalSessions: allSessions.length,\n totalMessages,\n totalDeveloperUtterances: allUtterances.length,\n totalAIResponses: totalMessages - totalUserMessages,\n avgMessagesPerSession: allSessions.length > 0 ? totalMessages / allSessions.length : 0,\n avgDeveloperMessageLength: allUtterances.length > 0\n ? allUtterances.reduce((sum, u) => sum + u.characterCount, 0) / allUtterances.length\n : 0,\n questionRatio: allUtterances.length > 0 ? questionCount / allUtterances.length : 0,\n codeBlockRatio: allUtterances.length > 0 ? codeBlockCount / allUtterances.length : 0,\n dateRange: {\n earliest: timestamps[0] ?? new Date().toISOString(),\n latest: timestamps[timestamps.length - 1] ?? new Date().toISOString(),\n },\n ...(Object.keys(slashCommandCounts).length > 0 ? { slashCommandCounts } : {}),\n ...contextFillMetrics,\n frictionSignals,\n sessionHints,\n ...(allInsightBlocks.length > 0 ? { aiInsightBlockCount: allInsightBlocks.length } : {}),\n };\n\n // Build per-session activity metadata for Phase 1.5/2 stages\n const activitySessions = allSessions.map((session, idx) => {\n const parsedSession = sessions[idx]!;\n const userMessages = session.messages.filter(isAnalyzableUserMessage);\n const assistantMessages = session.messages.filter(m => m.role === 'assistant');\n const sessionTimestamps = session.messages.map(m => m.timestamp.getTime()).sort();\n const startTime = sessionTimestamps.length > 0\n ? new Date(sessionTimestamps[0]).toISOString()\n : new Date().toISOString();\n const endTime = sessionTimestamps.length > 0\n ? sessionTimestamps[sessionTimestamps.length - 1]\n : Date.now();\n const durationSeconds = sessionTimestamps.length > 1\n ? (endTime - sessionTimestamps[0]) / 1000\n : parsedSession.durationSeconds;\n\n const totalInputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.input ?? 0), 0);\n const totalOutputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.output ?? 0), 0);\n\n const firstUserMsg = userMessages[0]?.rawContent?.slice(0, 200) ?? '';\n\n return {\n sessionId: session.sessionId,\n projectName: parsedSession.projectName ?? 'unknown',\n ...(parsedSession.projectPath ? { projectPath: parsedSession.projectPath } : {}),\n startTime,\n durationSeconds: Math.round(durationSeconds),\n messageCount: session.messages.length,\n userMessageCount: userMessages.length,\n assistantMessageCount: assistantMessages.length,\n totalInputTokens,\n totalOutputTokens,\n ...(firstUserMsg ? { firstUserMessage: firstUserMsg } : {}),\n };\n });\n\n return {\n developerUtterances: allUtterances,\n sessionMetrics,\n ...(allInsightBlocks.length > 0 ? { aiInsightBlocks: allInsightBlocks } : {}),\n activitySessions,\n sessions,\n };\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/generate-report-LCHULA3Z.js b/packages/plugin/dist/generate-report-LCHULA3Z.js new file mode 100644 index 00000000..a1a74861 --- /dev/null +++ b/packages/plugin/dist/generate-report-LCHULA3Z.js @@ -0,0 +1,1352 @@ +import { + markAnalysisComplete +} from "./chunk-VXUKPHXP.js"; +import "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import { + REQUIRED_STAGE_NAMES, + assembleCanonicalRun, + getCurrentRunId, + getDomainResult, + getStageOutput, + getStageStatuses +} from "./chunk-T2XRMW7B.js"; +import { + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/generate-report.ts +import { readFileSync } from "fs"; +import { writeFile, mkdir } from "fs/promises"; +import { join } from "path"; +import { createServer } from "http"; +import { exec } from "child_process"; + +// lib/report-template.ts +function escapeHtml(str) { + return str.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); +} +function polarToCartesian(cx, cy, radius, angleDeg) { + const angleRad = (angleDeg - 90) * Math.PI / 180; + return { + x: cx + radius * Math.cos(angleRad), + y: cy + radius * Math.sin(angleRad) + }; +} +function generateRadarSvg(scores, labels, size = 300) { + const entries = Object.entries(scores); + const count = entries.length; + if (count === 0) return ""; + const cx = size / 2; + const cy = size / 2; + const maxRadius = size / 2 - 40; + const angleStep = 360 / count; + const gridCircles = [0.25, 0.5, 0.75, 1].map((frac) => { + const r = maxRadius * frac; + return ``; + }).join("\n"); + const gridLines = entries.map(([key], i) => { + const angle = i * angleStep; + const end = polarToCartesian(cx, cy, maxRadius, angle); + const labelPos = polarToCartesian(cx, cy, maxRadius + 20, angle); + const label = labels[key] ?? key; + return ` + + ${label} + `; + }).join("\n"); + const points = entries.map(([, score], i) => { + const angle = i * angleStep; + const r = maxRadius * (score / 100); + const p = polarToCartesian(cx, cy, r, angle); + return `${p.x},${p.y}`; + }).join(" "); + const dots = entries.map(([, score], i) => { + const angle = i * angleStep; + const r = maxRadius * (score / 100); + const p = polarToCartesian(cx, cy, r, angle); + return ``; + }).join("\n"); + return ` + + ${gridCircles} + ${gridLines} + + ${dots} + + `; +} +function generateTypeDistributionBar(distribution) { + const colors = { + architect: "#3B82F6", + analyst: "#9C7CF4", + conductor: "#FFD93D", + speedrunner: "#4ADE80", + trendsetter: "#FF6B9D" + }; + const entries = Object.entries(distribution); + entries.sort((a, b) => b[1] - a[1]); + const bars = entries.map(([type, pct]) => ` +
+ ${type} +
+
+
+ ${pct}% +
+ `).join(""); + return `
${bars}
`; +} +var RADAR_LABELS = { + aiPartnership: "AI Partnership", + sessionCraft: "Session Craft", + toolMastery: "Tool Mastery", + skillResilience: "Skill Resilience", + sessionMastery: "Session Mastery" +}; +function buildRadarScores(scores) { + return { + aiPartnership: scores.aiPartnership, + sessionCraft: scores.sessionCraft, + toolMastery: scores.toolMastery, + skillResilience: scores.skillResilience, + sessionMastery: scores.sessionMastery + }; +} +var DOMAIN_LABELS = { + aiPartnership: { label: "AI Partnership", emoji: "\u{1F91D}" }, + sessionCraft: { label: "Session Craft", emoji: "\u{1F6E0}\uFE0F" }, + toolMastery: { label: "Tool Mastery", emoji: "\u{1F527}" }, + skillResilience: { label: "Skill Resilience", emoji: "\u{1F9E9}" }, + sessionMastery: { label: "Session Mastery", emoji: "\u2728" }, + // Legacy domain labels for old runs + thinkingQuality: { label: "Thinking Quality", emoji: "\u{1F9E0}" }, + communicationPatterns: { label: "Communication", emoji: "\u{1F4AC}" }, + learningBehavior: { label: "Learning", emoji: "\u{1F4DA}" }, + contextEfficiency: { label: "Efficiency", emoji: "\u26A1" }, + sessionOutcome: { label: "Sessions", emoji: "\u{1F3AF}" }, + content: { label: "Skill Resilience", emoji: "\u{1F9E9}" } +}; +function generateDomainSection(result) { + const meta = DOMAIN_LABELS[result.domain] ?? { label: result.domain, emoji: "\u{1F4CA}" }; + const strengthCards = result.strengths.map((s) => ` +
+

${escapeHtml(s.title)}

+

${escapeHtml(s.description)}

+ ${s.evidence.length > 0 ? ` +
+ Evidence (${s.evidence.length}) +
    + ${s.evidence.map((e) => `
  • ${escapeHtml(e.utteranceId)}: "${escapeHtml(e.quote)}"
  • `).join("")} +
+
+ ` : ""} +
+ `).join(""); + const growthCards = result.growthAreas.map((g) => ` +
+
${escapeHtml(g.severity)}
+

${escapeHtml(g.title)}

+

${escapeHtml(g.description)}

+
${escapeHtml(g.recommendation)}
+ ${g.evidence.length > 0 ? ` +
+ Evidence (${g.evidence.length}) +
    + ${g.evidence.map((e) => `
  • ${escapeHtml(e.utteranceId)}: "${escapeHtml(e.quote)}"
  • `).join("")} +
+
+ ` : ""} +
+ `).join(""); + return ` +
+

${meta.emoji} ${meta.label} ${result.overallScore}/100

+ ${result.strengths.length > 0 ? `

Strengths

${strengthCards}
` : ""} + ${result.growthAreas.length > 0 ? `

Growth Areas

${growthCards}
` : ""} +
+ `; +} +function generateFocusAreas(content) { + if (!content?.topFocusAreas?.length) return ""; + const areas = content.topFocusAreas.map((area) => ` +
+

${escapeHtml(area.title)}

+

${escapeHtml(area.narrative ?? area.description ?? "")}

+ ${area.actions ? ` +
+
Start: ${escapeHtml(area.actions.start)}
+
Stop: ${escapeHtml(area.actions.stop)}
+
Continue: ${escapeHtml(area.actions.continue)}
+
+ ` : ""} +
+ `).join(""); + return ` +
+

\u{1F3AF} Top Focus Areas

+ ${areas} +
+ `; +} +function generatePersonalitySummary(summary) { + if (!summary?.trim()) return ""; + return ` +
+

\u{1FA9E} Personality Summary

+
+

${escapeHtml(summary).replace(/\n/g, "
")}

+
+
+ `; +} +function generatePromptPatternsSection(promptPatterns) { + if (!promptPatterns?.length) return ""; + const items = promptPatterns.map((pattern) => ` +
+

${escapeHtml(pattern.patternName ?? "Pattern")}

+

${escapeHtml(pattern.description ?? "")}

+

Frequency: ${escapeHtml(pattern.frequency ?? "n/a")}

+ ${(pattern.examples?.length ?? 0) > 0 ? ` +
+ Examples (${pattern.examples.length}) +
    + ${pattern.examples.map((example) => `
  • "${escapeHtml(example.quote ?? "")}"${example.analysis ? ` \u2014 ${escapeHtml(example.analysis)}` : ""}
  • `).join("")} +
+
+ ` : ""} +
+ `).join(""); + return ` +
+

\u{1F9E9} Prompt Patterns

+
${items}
+
+ `; +} +function generateProjectSummariesSection(projectSummaries) { + if (!projectSummaries?.length) return ""; + const items = projectSummaries.map((project) => ` +
+

${escapeHtml(project.projectName)} (${project.sessionCount} sessions)

+
    + ${project.summaryLines.map((line) => `
  • ${escapeHtml(line)}
  • `).join("")} +
+
+ `).join(""); + return ` +
+

\u{1F4C1} Project Summaries

+
${items}
+
+ `; +} +function heatmapToDateKey(dateStr) { + return dateStr.slice(0, 10); +} +function heatmapGetWeekStart(date) { + const d = new Date(date); + d.setDate(d.getDate() - d.getDay()); + return d; +} +function heatmapAddDays(date, days) { + const d = new Date(date); + d.setDate(d.getDate() + days); + return d; +} +function heatmapFormatTokenCount(tokens) { + if (tokens >= 1e9) return `${(tokens / 1e9).toFixed(1)}B`; + if (tokens >= 1e6) return `${(tokens / 1e6).toFixed(1)}M`; + if (tokens >= 1e3) return `${(tokens / 1e3).toFixed(1)}K`; + return String(tokens); +} +function heatmapGetIntensityByCount(count) { + if (count === 0) return 0; + if (count <= 2) return count; + if (count <= 4) return 3; + return 4; +} +function heatmapComputeTokenIntensity(grid) { + const nonZero = grid.map((d) => d.totalTokens).filter((t) => t > 0).sort((a, b) => a - b); + if (nonZero.length === 0) { + return () => 0; + } + const p25 = nonZero[Math.floor(nonZero.length * 0.25)]; + const p50 = nonZero[Math.floor(nonZero.length * 0.5)]; + const p75 = nonZero[Math.floor(nonZero.length * 0.75)]; + return (tokens) => { + if (tokens === 0) return 0; + if (tokens <= p25) return 1; + if (tokens <= p50) return 2; + if (tokens <= p75) return 3; + return 4; + }; +} +function heatmapFormatDate(dateStr) { + const d = /* @__PURE__ */ new Date(dateStr + "T00:00:00"); + return d.toLocaleDateString("en-US", { + weekday: "short", + month: "short", + day: "numeric", + year: "numeric" + }); +} +function generateActivityHeatmapSection(activitySessions) { + if (!activitySessions || activitySessions.length === 0) return ""; + const MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + const DAY_LABELS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const unified = activitySessions.map((s) => ({ + sessionId: s.sessionId, + projectName: s.projectName, + startTime: s.startTime, + durationMinutes: s.durationMinutes, + messageCount: s.messageCount, + summary: s.summary || "", + totalTokens: (s.totalInputTokens || 0) + (s.totalOutputTokens || 0) + })); + const sessionsByDate = /* @__PURE__ */ new Map(); + for (const session of unified) { + const dateKey = heatmapToDateKey(session.startTime); + if (!sessionsByDate.has(dateKey)) { + sessionsByDate.set(dateKey, []); + } + sessionsByDate.get(dateKey).push(session); + } + const dates = unified.map((s) => new Date(s.startTime)).sort((a, b) => a.getTime() - b.getTime()); + const startDate = dates[0]; + const endDate = dates[dates.length - 1]; + const weekStart = heatmapGetWeekStart(startDate); + const weekEnd = heatmapAddDays(endDate, 6 - endDate.getDay()); + const grid = []; + const monthLabels = []; + let currentDate = new Date(weekStart); + let prevMonth = -1; + let column = 0; + while (currentDate <= weekEnd) { + const dateKey = currentDate.toISOString().slice(0, 10); + const sessions = sessionsByDate.get(dateKey) || []; + const totalTokens = sessions.reduce((sum, s) => sum + s.totalTokens, 0); + grid.push({ date: dateKey, count: sessions.length, totalTokens, sessions }); + const dayOfWeek = currentDate.getDay(); + const month = currentDate.getMonth(); + if (dayOfWeek === 0 && month !== prevMonth) { + monthLabels.push({ text: MONTH_NAMES[month], column }); + prevMonth = month; + } + if (dayOfWeek === 6) { + column++; + } + currentDate = heatmapAddDays(currentDate, 1); + } + const totalWeeks = Math.ceil(grid.length / 7); + const hasTokenData = unified.some((s) => s.totalTokens > 0); + const getTokenIntensity = heatmapComputeTokenIntensity(grid); + const cellSize = 16; + const gap = 3; + const totalSessions = unified.length; + const activeDays = sessionsByDate.size; + const totalTokensAll = unified.reduce((sum, s) => sum + s.totalTokens, 0); + const projectCounts = /* @__PURE__ */ new Map(); + for (const session of unified) { + projectCounts.set(session.projectName, (projectCounts.get(session.projectName) || 0) + 1); + } + let mostActiveProject = ""; + let maxCount = 0; + for (const [project, count] of projectCounts) { + if (count > maxCount) { + mostActiveProject = project; + maxCount = count; + } + } + const statCards = ` +
+
+ ${totalSessions} + Sessions +
+
+ ${activeDays} + Active Days +
+ ${totalTokensAll > 0 ? ` +
+ ${heatmapFormatTokenCount(totalTokensAll)} + Total Tokens +
+ ` : ""} + ${mostActiveProject ? ` +
+ ${escapeHtml(mostActiveProject)} + Top Project +
+ ` : ""} +
+ `; + const monthLabelsHtml = monthLabels.map( + (m) => `${m.text}` + ).join(""); + const dayLabelsHtml = DAY_LABELS.map( + (label, i) => `${label}` + ).join(""); + const cellsHtml = grid.map((day) => { + const intensity = hasTokenData ? getTokenIntensity(day.totalTokens) : heatmapGetIntensityByCount(day.count); + const title = day.count > 0 ? `${heatmapFormatDate(day.date)}: ${day.totalTokens > 0 ? `${heatmapFormatTokenCount(day.totalTokens)} tokens, ` : ""}${day.count} session${day.count !== 1 ? "s" : ""}` : `${heatmapFormatDate(day.date)}: No sessions`; + return `
0 ? ' onclick="showHeatmapDetail(this.dataset.date)"' : ""}>
`; + }).join(""); + const legendHtml = ` +
+ Less +
+ ${[0, 1, 2, 3, 4].map((level) => `
`).join("")} +
+ More +
+ `; + const sessionDataByDate = {}; + for (const day of grid) { + if (day.sessions.length > 0) { + sessionDataByDate[day.date] = day.sessions; + } + } + return ` +
+
+ \u{1F4CA} +
+

Monthly Vibe

+

${totalSessions} sessions · ${activeDays} active days

+
+
+
+ ${statCards} +
+
${monthLabelsHtml}
+
+
${dayLabelsHtml}
+
+ ${cellsHtml} +
+
+ ${legendHtml} +
+ +
+
+ + `; +} +function generateWeeklyInsightsSection(weeklyInsights) { + if (!weeklyInsights) return ""; + const stats = weeklyInsights.stats; + const highlights = weeklyInsights.highlights ?? []; + const projects = weeklyInsights.projects ?? []; + const topSessions = weeklyInsights.topProjectSessions ?? []; + return ` +
+

\u{1F4C6} Weekly Insights

+ ${stats ? ` +
+
${stats.totalSessions ?? 0}
Sessions
+
${Math.round(stats.totalMinutes ?? 0)}
Minutes
+
${Math.round((stats.totalTokens ?? 0) / 1e3)}k
Tokens
+
${stats.activeDays ?? 0}
Active Days
+
+ ` : ""} + ${weeklyInsights.narrative ? `

${escapeHtml(weeklyInsights.narrative)}

` : ""} + ${projects.length > 0 ? ` +
+

Project Breakdown

+
    + ${projects.map((project) => `
  • ${escapeHtml(project.projectName)}: ${project.sessionCount} sessions, ${project.percentage}%
  • `).join("")} +
+
+ ` : ""} + ${topSessions.length > 0 ? ` +
+

Top Sessions

+
    + ${topSessions.map((session) => `
  • ${escapeHtml(session.date)} \xB7 ${Math.round(session.durationMinutes)} min \xB7 ${escapeHtml(session.summary)}
  • `).join("")} +
+
+ ` : ""} + ${highlights.length > 0 ? ` +
+

Highlights

+
    + ${highlights.map((item) => `
  • ${escapeHtml(item)}
  • `).join("")} +
+
+ ` : ""} +
+ `; +} +function generateKnowledgeResourcesSection(knowledgeResources) { + if (!knowledgeResources?.length) return ""; + return ` +
+

\u{1F4DA} Knowledge Resources

+
+ ${knowledgeResources.map((group) => ` +
+

${escapeHtml(group.dimensionDisplayName ?? "Recommended Resources")}

+ ${(group.professionalInsights?.length ?? 0) > 0 ? ` +

Professional Insights

+
    + ${group.professionalInsights.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? "Insight")}${item.keyTakeaway ? `: ${escapeHtml(item.keyTakeaway)}` : ""}
  • `).join("")} +
+ ` : ""} + ${(group.knowledgeItems?.length ?? 0) > 0 ? ` +

Suggested Reading

+
    + ${group.knowledgeItems.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? "Resource")}${item.summary ? `: ${escapeHtml(item.summary)}` : ""}
  • `).join("")} +
+ ` : ""} +
+ `).join("")} +
+
+ `; +} +function generateBaseCss() { + return ` + /* \u2500\u2500 Notebook Sketch Design System \u2500\u2500 */ + + :root { + --bg-paper: #FFFFFF; + --bg-paper-warm: #FFFEF8; + --bg-grid-color: #E8EDF5; + --bg-grid-size: 20px; + --ink-primary: #1A1A2E; + --ink-secondary: #4A4A5A; + --ink-muted: #8A8A9A; + --sketch-cyan: #00BCD4; + --sketch-green: #4ADE80; + --sketch-pink: #FF6B9D; + --sketch-blue: #3B82F6; + --sketch-purple: #9C7CF4; + --sketch-yellow: #FFD93D; + --sketch-orange: #FB923C; + --sketch-red: #EF4444; + } + + * { margin: 0; padding: 0; box-sizing: border-box; } + + body { + font-family: 'Fira Code', monospace; + background: var(--bg-paper-warm); + background-image: + linear-gradient(var(--bg-grid-color) 1px, transparent 1px), + linear-gradient(90deg, var(--bg-grid-color) 1px, transparent 1px); + background-size: var(--bg-grid-size) var(--bg-grid-size); + color: var(--ink-primary); + line-height: 1.6; + padding: 40px 20px; + } + + .container { + max-width: 900px; + margin: 0 auto; + } + + /* \u2500\u2500 Header \u2500\u2500 */ + .header { + text-align: center; + margin-bottom: 48px; + padding-bottom: 24px; + border-bottom: 2px solid var(--ink-primary); + } + .header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; } + .header .subtitle { color: var(--ink-secondary); font-size: 13px; } + + /* \u2500\u2500 Identity Section \u2500\u2500 */ + .identity { + display: flex; + gap: 32px; + align-items: center; + margin-bottom: 48px; + padding: 24px; + background: var(--bg-paper); + border: 2px solid var(--ink-primary); + border-radius: 8px; + } + .identity .type-info { flex: 1; } + .identity .type-emoji { font-size: 48px; } + .identity .type-name { font-size: 22px; font-weight: 700; margin-top: 8px; } + .identity .type-detail { color: var(--ink-secondary); font-size: 13px; margin-top: 4px; } + + /* \u2500\u2500 Scores Grid \u2500\u2500 */ + .scores-section { + display: flex; + gap: 32px; + margin-bottom: 48px; + align-items: flex-start; + } + .radar-container { flex-shrink: 0; } + .distribution-container { flex: 1; } + + /* \u2500\u2500 Cards \u2500\u2500 */ + .card { + background: var(--bg-paper); + border: 1px solid var(--bg-grid-color); + border-radius: 8px; + padding: 16px; + margin-bottom: 12px; + } + .card h4 { font-size: 14px; margin-bottom: 8px; } + .card p { font-size: 13px; color: var(--ink-secondary); line-height: 1.5; } + .card-grid { display: grid; grid-template-columns: 1fr; gap: 12px; } + + .strength-card { border-left: 3px solid var(--sketch-green); } + .growth-card { border-left: 3px solid var(--sketch-orange); } + .focus-card { border-left: 3px solid var(--sketch-cyan); } + + .severity-badge { + display: inline-block; + font-size: 11px; + font-weight: 600; + padding: 2px 8px; + border-radius: 4px; + margin-bottom: 8px; + text-transform: uppercase; + } + .severity-low { background: rgba(74,222,128,0.15); color: #16a34a; } + .severity-medium { background: rgba(251,146,60,0.15); color: #ea580c; } + .severity-high { background: rgba(239,68,68,0.15); color: #dc2626; } + + .recommendation { + margin-top: 8px; + padding: 8px 12px; + background: rgba(0,188,212,0.08); + border-radius: 4px; + font-size: 12px; + color: var(--ink-secondary); + } + + details { margin-top: 8px; } + details summary { + cursor: pointer; + font-size: 12px; + color: var(--ink-muted); + } + details ul { margin-top: 4px; padding-left: 20px; font-size: 12px; color: var(--ink-secondary); } + details li { margin-bottom: 4px; } + details code { font-size: 11px; background: #f0f0f5; padding: 1px 4px; border-radius: 2px; } + + /* \u2500\u2500 Domain Sections \u2500\u2500 */ + .domain-section { + margin-bottom: 48px; + padding-bottom: 24px; + border-bottom: 1px solid var(--bg-grid-color); + } + .domain-section h2 { + font-size: 20px; + margin-bottom: 16px; + display: flex; + align-items: center; + gap: 8px; + } + .domain-section h3 { + font-size: 14px; + font-weight: 600; + color: var(--ink-secondary); + margin: 16px 0 8px; + text-transform: uppercase; + letter-spacing: 0.5px; + } + .score { + font-size: 14px; + font-weight: 400; + color: var(--sketch-cyan); + margin-left: auto; + } + + /* \u2500\u2500 Actions Grid \u2500\u2500 */ + .actions-grid { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 8px; + margin-top: 12px; + } + .action { + padding: 8px; + border-radius: 4px; + font-size: 12px; + color: var(--ink-secondary); + } + .action.start { background: rgba(74,222,128,0.1); } + .action.stop { background: rgba(239,68,68,0.1); } + .action.continue { background: rgba(59,130,246,0.1); } + .action strong { display: block; font-size: 11px; color: var(--ink-primary); margin-bottom: 4px; } + + /* \u2500\u2500 Metrics Bar \u2500\u2500 */ + .metrics-bar { + display: flex; + gap: 24px; + flex-wrap: wrap; + margin-bottom: 32px; + padding: 16px; + background: var(--bg-paper); + border: 1px solid var(--bg-grid-color); + border-radius: 8px; + } + .metric { + text-align: center; + } + .metric .value { font-size: 24px; font-weight: 700; color: var(--sketch-cyan); } + .metric .label { font-size: 11px; color: var(--ink-muted); } + + /* \u2500\u2500 Navigation Dots \u2500\u2500 */ + .nav-dots { + position: fixed; + right: 20px; + top: 50%; + transform: translateY(-50%); + display: flex; + flex-direction: column; + gap: 12px; + z-index: 100; + } + .nav-dot { + display: block; + text-decoration: none; + } + .nav-dot .dot { + display: block; + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--bg-grid-color); + border: 1px solid var(--ink-muted); + transition: all 0.2s; + } + .nav-dot:hover .dot, + .nav-dot.active .dot { + background: var(--sketch-cyan); + border-color: var(--sketch-cyan); + transform: scale(1.5); + } + + /* \u2500\u2500 Footer \u2500\u2500 */ + .footer { + text-align: center; + padding: 24px; + color: var(--ink-muted); + font-size: 12px; + } + + @media (max-width: 640px) { + .identity { flex-direction: column; text-align: center; } + .scores-section { flex-direction: column; } + .actions-grid { grid-template-columns: 1fr; } + } + `; +} +function renderNavDotsHtml(dots) { + return dots.map((d) => ``).join(""); +} +function renderIdentitySection(typeResult, fallbackMessage) { + if (typeResult) { + return ` +
${typeResult.matrixEmoji}
+
+
${escapeHtml(typeResult.matrixName)}
+
${escapeHtml(typeResult.primaryType)} / ${escapeHtml(typeResult.controlLevel)} (control: ${typeResult.controlScore})
+
+ `; + } + return ` +
+
Type Not Classified
+
${escapeHtml(fallbackMessage)}
+
+ `; +} +function renderMetricsBar(metrics) { + return ` +
+
+
${metrics.totalSessions}
+
Sessions
+
+
+
${metrics.totalDeveloperUtterances}
+
Utterances
+
+
+
${Math.round(metrics.avgMessagesPerSession)}
+
Avg Messages/Session
+
+
+
${Math.round(metrics.questionRatio * 100)}%
+
Questions
+
+
+
${Math.round(metrics.codeBlockRatio * 100)}%
+
Code Blocks
+
+
+ `; +} +function renderScrollSpyScript() { + return ` + `; +} +function generateCanonicalReportHtml(run) { + const evaluation = run.evaluation; + const personalitySummary = typeof evaluation.personalitySummary === "string" ? evaluation.personalitySummary : ""; + const promptPatterns = Array.isArray(evaluation.promptPatterns) ? evaluation.promptPatterns : []; + const projectSummaries = Array.isArray(evaluation.projectSummaries) ? evaluation.projectSummaries : []; + const weeklyInsights = evaluation.weeklyInsights; + const focusAreas = evaluation.topFocusAreas?.areas; + const knowledgeResources = Array.isArray(evaluation.knowledgeResources) ? evaluation.knowledgeResources : []; + const legacyContent = focusAreas ? { + topFocusAreas: focusAreas.map((area) => ({ + title: area.title, + narrative: area.narrative, + description: area.narrative, + actions: area.actions + })) + } : void 0; + const typeResult = run.typeResult; + const radarSvg = generateRadarSvg(buildRadarScores(run.deterministicScores), RADAR_LABELS); + const distributionBar = typeResult ? generateTypeDistributionBar(typeResult.distribution) : '

Type classification not yet performed.

'; + const domainSections = run.domainResults.map(generateDomainSection).join("\n"); + const focusAreasSection = generateFocusAreas(legacyContent); + const personalitySummarySection = generatePersonalitySummary(personalitySummary); + const promptPatternsSection = generatePromptPatternsSection(promptPatterns); + const projectSummariesSection = generateProjectSummariesSection(projectSummaries); + const weeklyInsightsSection = generateWeeklyInsightsSection(weeklyInsights); + const knowledgeResourcesSection = generateKnowledgeResourcesSection(knowledgeResources); + const activityHeatmapSection = generateActivityHeatmapSection(run.activitySessions); + const navDots = [ + { id: "identity", label: "Identity" }, + { id: "scores", label: "Scores" }, + ...(run.activitySessions?.length ?? 0) > 0 ? [{ id: "activity-heatmap", label: "Activity" }] : [], + ...personalitySummary ? [{ id: "personality-summary", label: "Summary" }] : [], + ...promptPatterns.length > 0 ? [{ id: "prompt-patterns", label: "Patterns" }] : [], + ...projectSummaries.length > 0 ? [{ id: "project-summaries", label: "Projects" }] : [], + ...weeklyInsights ? [{ id: "weekly-insights", label: "Week" }] : [], + ...knowledgeResources.length > 0 ? [{ id: "knowledge-resources", label: "Resources" }] : [], + ...run.domainResults.map((d) => ({ + id: `domain-${d.domain}`, + label: DOMAIN_LABELS[d.domain]?.label ?? d.domain + })), + ...legacyContent?.topFocusAreas?.length ? [{ id: "focus-areas", label: "Focus" }] : [] + ]; + return ` + + + + + BetterPrompt Analysis Report + + + + + + +
+
+

BetterPrompt Analysis

+

Generated ${new Date(run.analyzedAt).toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" })}

+
+ +
+ ${renderIdentitySection(typeResult, "Run type classification before generating the final report.")} +
+ + ${renderMetricsBar(run.phase1Output.sessionMetrics)} + +
+
${radarSvg}
+
+

Type Distribution

+ ${distributionBar} +
+
+ + ${activityHeatmapSection} + ${personalitySummarySection} + ${promptPatternsSection} + ${projectSummariesSection} + ${weeklyInsightsSection} + ${knowledgeResourcesSection} + ${domainSections} + ${focusAreasSection} + +
+ Generated by BetterPrompt Plugin v0.2.0 - local-first AI collaboration analysis +
+
+ ${renderScrollSpyScript()} + +`; +} + +// cli/commands/generate-report.ts +var DOMAIN_STAGE_NAMES = /* @__PURE__ */ new Set([ + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery" +]); +function hasFallbackArtifact(runId, stage) { + if (DOMAIN_STAGE_NAMES.has(stage)) return getDomainResult(runId, stage) !== null; + return getStageOutput(runId, stage) !== null; +} +function getRequiredStageGateIssues(runId) { + const statuses = getStageStatuses(runId); + const statusLookup = new Map(statuses.map((s) => [s.stage, s])); + const issues = []; + for (const stage of REQUIRED_STAGE_NAMES) { + const status = statusLookup.get(stage); + if (status) { + if (status.status !== "validated") { + issues.push({ + stage, + required: status.required, + status: status.status, + attemptCount: status.attemptCount, + lastError: status.lastError, + updatedAt: status.updatedAt + }); + } + continue; + } + if (!hasFallbackArtifact(runId, stage)) { + issues.push({ + stage, + required: true, + status: "missing", + attemptCount: 0, + lastError: null, + updatedAt: null + }); + } + } + return issues; +} +async function execute(args) { + const serve = args.serve === true; + const port = typeof args.port === "number" ? args.port : 3456; + const noOpen = args.noOpen === true; + const allowIncomplete = args.allowIncomplete === true; + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No analysis results found. Run extract-data and domain analyses first." + }); + } + const gateIssues = getRequiredStageGateIssues(runId); + if (gateIssues.length > 0 && !allowIncomplete) { + return JSON.stringify({ + status: "blocked", + message: "Required analysis stages are incomplete. Re-run the missing stages or pass --allowIncomplete.", + issues: gateIssues + }); + } + const run = assembleCanonicalRun(runId); + if (!run) { + return JSON.stringify({ + status: "error", + message: "No analysis results found. Run extract-data and domain analyses first." + }); + } + const html = generateCanonicalReportHtml(run); + const reportsDir = join(getPluginDataDir(), "reports"); + await mkdir(reportsDir, { recursive: true }); + const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19); + const reportPath = join(reportsDir, `report-${timestamp}.html`); + await writeFile(reportPath, html, "utf-8"); + const latestPath = join(reportsDir, "latest.html"); + await writeFile(latestPath, html, "utf-8"); + markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); + if (!serve) { + if (!noOpen) { + try { + const cmd = process.platform === "darwin" ? `open "${reportPath}"` : process.platform === "win32" ? `start "${reportPath}"` : `xdg-open "${reportPath}"`; + exec(cmd); + } catch { + } + } + return JSON.stringify({ + status: "ok", + url: `file://${reportPath}`, + reportPath, + latestPath, + domainCount: run.domainResults.length, + type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : "Not classified", + ...gateIssues.length > 0 ? { warning: "Report generated with incomplete stages." } : {}, + message: `Report saved to ${reportPath}. Opened in browser.` + }); + } + const url = await new Promise((resolve, reject) => { + const server = createServer((req, res) => { + if (req.url !== "/" && req.url !== "") { + res.writeHead(404, { "Content-Type": "text/plain" }); + res.end("Not Found"); + return; + } + res.writeHead(200, { + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-cache" + }); + try { + res.end(readFileSync(latestPath, "utf-8")); + } catch { + res.end(html); + } + }); + server.on("error", (err) => { + if (err.code === "EADDRINUSE") resolve(`file://${reportPath}`); + else reject(err); + }); + server.listen(port, () => { + setTimeout(() => server.close(), 30 * 60 * 1e3); + resolve(`http://localhost:${port}`); + }); + }); + if (!noOpen && url.startsWith("http")) { + try { + const cmd = process.platform === "darwin" ? `open "${url}"` : process.platform === "win32" ? `start "${url}"` : `xdg-open "${url}"`; + exec(cmd); + } catch { + } + } + return JSON.stringify({ + status: "ok", + url, + reportPath, + latestPath, + domainCount: run.domainResults.length, + type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : "Not classified", + ...gateIssues.length > 0 ? { warning: "Report generated with incomplete stages." } : {}, + message: `Report available at ${url}. Saved to ${reportPath}.` + }); +} +export { + execute +}; +//# sourceMappingURL=generate-report-LCHULA3Z.js.map \ No newline at end of file diff --git a/packages/plugin/dist/generate-report-LCHULA3Z.js.map b/packages/plugin/dist/generate-report-LCHULA3Z.js.map new file mode 100644 index 00000000..b19ac54b --- /dev/null +++ b/packages/plugin/dist/generate-report-LCHULA3Z.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/generate-report.ts","../lib/report-template.ts"],"sourcesContent":["/**\n * generate-report CLI command\n *\n * Generates a standalone HTML report and opens it in the browser.\n * Optionally starts a localhost HTTP server with --serve.\n *\n * Usage: betterprompt-cli generate-report [--serve] [--port 3456] [--no-open] [--allowIncomplete]\n */\n\nimport { readFileSync } from 'node:fs';\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { createServer } from 'node:http';\nimport { exec } from 'node:child_process';\nimport {\n assembleCanonicalRun,\n getCurrentRunId,\n getDomainResult,\n} from '../../lib/results-db.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport { generateCanonicalReportHtml } from '../../lib/report-template.js';\nimport { markAnalysisComplete } from '../../lib/debounce.js';\nimport {\n getStageStatuses,\n getStageOutput,\n REQUIRED_STAGE_NAMES,\n} from '../../lib/stage-db.js';\n\nconst DOMAIN_STAGE_NAMES = new Set([\n 'aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery',\n]);\n\nfunction hasFallbackArtifact(runId: number, stage: string): boolean {\n if (DOMAIN_STAGE_NAMES.has(stage)) return getDomainResult(runId, stage) !== null;\n return getStageOutput(runId, stage) !== null;\n}\n\ninterface StageGateIssue {\n stage: string;\n required: boolean;\n status: string;\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\nfunction getRequiredStageGateIssues(runId: number): StageGateIssue[] {\n const statuses = getStageStatuses(runId);\n const statusLookup = new Map(statuses.map(s => [s.stage, s]));\n const issues: StageGateIssue[] = [];\n\n for (const stage of REQUIRED_STAGE_NAMES) {\n const status = statusLookup.get(stage);\n if (status) {\n if (status.status !== 'validated') {\n issues.push({\n stage,\n required: status.required,\n status: status.status,\n attemptCount: status.attemptCount,\n lastError: status.lastError,\n updatedAt: status.updatedAt,\n });\n }\n continue;\n }\n if (!hasFallbackArtifact(runId, stage)) {\n issues.push({\n stage, required: true, status: 'missing',\n attemptCount: 0, lastError: null, updatedAt: null,\n });\n }\n }\n return issues;\n}\n\nexport async function execute(args: Record): Promise {\n const serve = args.serve === true;\n const port = (typeof args.port === 'number' ? args.port : 3456);\n const noOpen = args.noOpen === true;\n const allowIncomplete = args.allowIncomplete === true;\n\n const runId = getCurrentRunId();\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No analysis results found. Run extract-data and domain analyses first.',\n });\n }\n\n const gateIssues = getRequiredStageGateIssues(runId);\n if (gateIssues.length > 0 && !allowIncomplete) {\n return JSON.stringify({\n status: 'blocked',\n message: 'Required analysis stages are incomplete. Re-run the missing stages or pass --allowIncomplete.',\n issues: gateIssues,\n });\n }\n\n const run = assembleCanonicalRun(runId);\n if (!run) {\n return JSON.stringify({\n status: 'error',\n message: 'No analysis results found. Run extract-data and domain analyses first.',\n });\n }\n\n const html = generateCanonicalReportHtml(run);\n\n const reportsDir = join(getPluginDataDir(), 'reports');\n await mkdir(reportsDir, { recursive: true });\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);\n const reportPath = join(reportsDir, `report-${timestamp}.html`);\n await writeFile(reportPath, html, 'utf-8');\n\n const latestPath = join(reportsDir, 'latest.html');\n await writeFile(latestPath, html, 'utf-8');\n\n markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions);\n\n // Default: open the HTML file directly in the browser\n if (!serve) {\n if (!noOpen) {\n try {\n const cmd = process.platform === 'darwin' ? `open \"${reportPath}\"`\n : process.platform === 'win32' ? `start \"${reportPath}\"`\n : `xdg-open \"${reportPath}\"`;\n exec(cmd);\n } catch { /* non-critical */ }\n }\n\n return JSON.stringify({\n status: 'ok',\n url: `file://${reportPath}`,\n reportPath,\n latestPath,\n domainCount: run.domainResults.length,\n type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : 'Not classified',\n ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete stages.' } : {}),\n message: `Report saved to ${reportPath}. Opened in browser.`,\n });\n }\n\n // Optional: serve via HTTP\n const url = await new Promise((resolve, reject) => {\n const server = createServer((req, res) => {\n if (req.url !== '/' && req.url !== '') {\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not Found');\n return;\n }\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'no-cache',\n });\n try {\n res.end(readFileSync(latestPath, 'utf-8'));\n } catch {\n res.end(html);\n }\n });\n\n server.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') resolve(`file://${reportPath}`);\n else reject(err);\n });\n\n // Auto-shutdown after 30 minutes\n server.listen(port, () => {\n setTimeout(() => server.close(), 30 * 60 * 1000);\n resolve(`http://localhost:${port}`);\n });\n });\n\n if (!noOpen && url.startsWith('http')) {\n try {\n const cmd = process.platform === 'darwin' ? `open \"${url}\"`\n : process.platform === 'win32' ? `start \"${url}\"`\n : `xdg-open \"${url}\"`;\n exec(cmd);\n } catch { /* non-critical */ }\n }\n\n return JSON.stringify({\n status: 'ok',\n url,\n reportPath,\n latestPath,\n domainCount: run.domainResults.length,\n type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : 'Not classified',\n ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete stages.' } : {}),\n message: `Report available at ${url}. Saved to ${reportPath}.`,\n });\n}\n","/**\n * HTML Report Template Generator\n *\n * Generates a standalone HTML report with inlined CSS/JS/SVG.\n * Uses the notebook-sketch design system from the main app.\n *\n * @module plugin/lib/report-template\n */\n\nimport type {\n AnalysisReport,\n CanonicalAnalysisRun,\n DomainResult,\n DeterministicTypeResult,\n CodingStyleType,\n ReportActivitySession,\n} from './core/types.js';\n\n// ============================================================================\n// HTML Escaping\n// ============================================================================\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n// ============================================================================\n// SVG Radar Chart (ported from RadarChart.tsx math)\n// ============================================================================\n\nfunction polarToCartesian(\n cx: number,\n cy: number,\n radius: number,\n angleDeg: number,\n): { x: number; y: number } {\n const angleRad = ((angleDeg - 90) * Math.PI) / 180;\n return {\n x: cx + radius * Math.cos(angleRad),\n y: cy + radius * Math.sin(angleRad),\n };\n}\n\nfunction generateRadarSvg(\n scores: Record,\n labels: Record,\n size = 300,\n): string {\n const entries = Object.entries(scores);\n const count = entries.length;\n if (count === 0) return '';\n\n const cx = size / 2;\n const cy = size / 2;\n const maxRadius = size / 2 - 40;\n const angleStep = 360 / count;\n\n // Grid circles\n const gridCircles = [0.25, 0.5, 0.75, 1.0]\n .map(frac => {\n const r = maxRadius * frac;\n return ``;\n })\n .join('\\n');\n\n // Grid lines + labels\n const gridLines = entries\n .map(([key], i) => {\n const angle = i * angleStep;\n const end = polarToCartesian(cx, cy, maxRadius, angle);\n const labelPos = polarToCartesian(cx, cy, maxRadius + 20, angle);\n const label = labels[key] ?? key;\n return `\n \n ${label}\n `;\n })\n .join('\\n');\n\n // Data polygon\n const points = entries\n .map(([, score], i) => {\n const angle = i * angleStep;\n const r = maxRadius * (score / 100);\n const p = polarToCartesian(cx, cy, r, angle);\n return `${p.x},${p.y}`;\n })\n .join(' ');\n\n // Data dots\n const dots = entries\n .map(([, score], i) => {\n const angle = i * angleStep;\n const r = maxRadius * (score / 100);\n const p = polarToCartesian(cx, cy, r, angle);\n return ``;\n })\n .join('\\n');\n\n return `\n \n ${gridCircles}\n ${gridLines}\n \n ${dots}\n \n `;\n}\n\n// ============================================================================\n// Type Distribution Bar\n// ============================================================================\n\nfunction generateTypeDistributionBar(distribution: DeterministicTypeResult['distribution']): string {\n const colors: Record = {\n architect: '#3B82F6',\n analyst: '#9C7CF4',\n conductor: '#FFD93D',\n speedrunner: '#4ADE80',\n trendsetter: '#FF6B9D',\n };\n\n const entries = Object.entries(distribution) as [CodingStyleType, number][];\n entries.sort((a, b) => b[1] - a[1]);\n\n const bars = entries\n .map(([type, pct]) => `\n
\n ${type}\n
\n
\n
\n ${pct}%\n
\n `)\n .join('');\n\n return `
${bars}
`;\n}\n\n// ============================================================================\n// Shared Radar / Scores Helpers\n// ============================================================================\n\nconst RADAR_LABELS: Record = {\n aiPartnership: 'AI Partnership',\n sessionCraft: 'Session Craft',\n toolMastery: 'Tool Mastery',\n skillResilience: 'Skill Resilience',\n sessionMastery: 'Session Mastery',\n};\n\nfunction buildRadarScores(scores: AnalysisReport['deterministicScores']): Record {\n return {\n aiPartnership: scores.aiPartnership,\n sessionCraft: scores.sessionCraft,\n toolMastery: scores.toolMastery,\n skillResilience: scores.skillResilience,\n sessionMastery: scores.sessionMastery,\n };\n}\n\n// ============================================================================\n// Domain Section Cards\n// ============================================================================\n\nconst DOMAIN_LABELS: Record = {\n aiPartnership: { label: 'AI Partnership', emoji: '🤝' },\n sessionCraft: { label: 'Session Craft', emoji: '🛠️' },\n toolMastery: { label: 'Tool Mastery', emoji: '🔧' },\n skillResilience: { label: 'Skill Resilience', emoji: '🧩' },\n sessionMastery: { label: 'Session Mastery', emoji: '✨' },\n // Legacy domain labels for old runs\n thinkingQuality: { label: 'Thinking Quality', emoji: '🧠' },\n communicationPatterns: { label: 'Communication', emoji: '💬' },\n learningBehavior: { label: 'Learning', emoji: '📚' },\n contextEfficiency: { label: 'Efficiency', emoji: '⚡' },\n sessionOutcome: { label: 'Sessions', emoji: '🎯' },\n content: { label: 'Skill Resilience', emoji: '🧩' },\n};\n\nfunction generateDomainSection(result: DomainResult): string {\n const meta = DOMAIN_LABELS[result.domain] ?? { label: result.domain, emoji: '📊' };\n\n const strengthCards = result.strengths\n .map(s => `\n
\n

${escapeHtml(s.title)}

\n

${escapeHtml(s.description)}

\n ${s.evidence.length > 0 ? `\n
\n Evidence (${s.evidence.length})\n
    \n ${s.evidence.map(e => `
  • ${escapeHtml(e.utteranceId)}: \"${escapeHtml(e.quote)}\"
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n const growthCards = result.growthAreas\n .map(g => `\n
\n
${escapeHtml(g.severity)}
\n

${escapeHtml(g.title)}

\n

${escapeHtml(g.description)}

\n
${escapeHtml(g.recommendation)}
\n ${g.evidence.length > 0 ? `\n
\n Evidence (${g.evidence.length})\n
    \n ${g.evidence.map(e => `
  • ${escapeHtml(e.utteranceId)}: \"${escapeHtml(e.quote)}\"
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

${meta.emoji} ${meta.label} ${result.overallScore}/100

\n ${result.strengths.length > 0 ? `

Strengths

${strengthCards}
` : ''}\n ${result.growthAreas.length > 0 ? `

Growth Areas

${growthCards}
` : ''}\n
\n `;\n}\n\n// ============================================================================\n// Focus Areas Section\n// ============================================================================\n\nfunction generateFocusAreas(content: AnalysisReport['content']): string {\n if (!content?.topFocusAreas?.length) return '';\n\n const areas = content.topFocusAreas\n .map(area => `\n
\n

${escapeHtml(area.title)}

\n

${escapeHtml(area.narrative ?? area.description ?? '')}

\n ${area.actions ? `\n
\n
Start: ${escapeHtml(area.actions.start)}
\n
Stop: ${escapeHtml(area.actions.stop)}
\n
Continue: ${escapeHtml(area.actions.continue)}
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

🎯 Top Focus Areas

\n ${areas}\n
\n `;\n}\n\nfunction generatePersonalitySummary(summary: string | undefined): string {\n if (!summary?.trim()) return '';\n\n return `\n
\n

🪞 Personality Summary

\n
\n

${escapeHtml(summary).replace(/\\n/g, '
')}

\n
\n
\n `;\n}\n\nfunction generatePromptPatternsSection(\n promptPatterns: Array<{ patternName?: string; description?: string; frequency?: string; examples?: Array<{ quote?: string; analysis?: string }> }> | undefined,\n): string {\n if (!promptPatterns?.length) return '';\n\n const items = promptPatterns\n .map(pattern => `\n
\n

${escapeHtml(pattern.patternName ?? 'Pattern')}

\n

${escapeHtml(pattern.description ?? '')}

\n

Frequency: ${escapeHtml(pattern.frequency ?? 'n/a')}

\n ${(pattern.examples?.length ?? 0) > 0 ? `\n
\n Examples (${pattern.examples!.length})\n
    \n ${pattern.examples!.map(example => `
  • \"${escapeHtml(example.quote ?? '')}\"${example.analysis ? ` — ${escapeHtml(example.analysis)}` : ''}
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

🧩 Prompt Patterns

\n
${items}
\n
\n `;\n}\n\nfunction generateProjectSummariesSection(\n projectSummaries: Array<{ projectName: string; summaryLines: string[]; sessionCount: number }> | undefined,\n): string {\n if (!projectSummaries?.length) return '';\n\n const items = projectSummaries\n .map(project => `\n
\n

${escapeHtml(project.projectName)} (${project.sessionCount} sessions)

\n
    \n ${project.summaryLines.map(line => `
  • ${escapeHtml(line)}
  • `).join('')}\n
\n
\n `)\n .join('');\n\n return `\n
\n

📁 Project Summaries

\n
${items}
\n
\n `;\n}\n\n// ============================================================================\n// Activity Heatmap Section (ported from ActivitySection.tsx)\n// ============================================================================\n\ninterface HeatmapDayData {\n date: string;\n count: number;\n totalTokens: number;\n sessions: Array<{\n sessionId: string;\n projectName: string;\n startTime: string;\n durationMinutes: number;\n messageCount: number;\n summary: string;\n totalTokens: number;\n }>;\n}\n\nfunction heatmapToDateKey(dateStr: string): string {\n return dateStr.slice(0, 10);\n}\n\nfunction heatmapGetWeekStart(date: Date): Date {\n const d = new Date(date);\n d.setDate(d.getDate() - d.getDay());\n return d;\n}\n\nfunction heatmapAddDays(date: Date, days: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nfunction heatmapFormatTokenCount(tokens: number): string {\n if (tokens >= 1_000_000_000) return `${(tokens / 1_000_000_000).toFixed(1)}B`;\n if (tokens >= 1_000_000) return `${(tokens / 1_000_000).toFixed(1)}M`;\n if (tokens >= 1_000) return `${(tokens / 1_000).toFixed(1)}K`;\n return String(tokens);\n}\n\nfunction heatmapGetIntensityByCount(count: number): number {\n if (count === 0) return 0;\n if (count <= 2) return count;\n if (count <= 4) return 3;\n return 4;\n}\n\nfunction heatmapComputeTokenIntensity(grid: HeatmapDayData[]): (tokens: number) => number {\n const nonZero = grid\n .map(d => d.totalTokens)\n .filter(t => t > 0)\n .sort((a, b) => a - b);\n\n if (nonZero.length === 0) {\n return () => 0;\n }\n\n const p25 = nonZero[Math.floor(nonZero.length * 0.25)];\n const p50 = nonZero[Math.floor(nonZero.length * 0.50)];\n const p75 = nonZero[Math.floor(nonZero.length * 0.75)];\n\n return (tokens: number) => {\n if (tokens === 0) return 0;\n if (tokens <= p25) return 1;\n if (tokens <= p50) return 2;\n if (tokens <= p75) return 3;\n return 4;\n };\n}\n\nfunction heatmapFormatDate(dateStr: string): string {\n const d = new Date(dateStr + 'T00:00:00');\n return d.toLocaleDateString('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n}\n\nfunction generateActivityHeatmapSection(\n activitySessions: ReportActivitySession[] | undefined,\n): string {\n if (!activitySessions || activitySessions.length === 0) return '';\n\n const MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const DAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n // Unify session data\n const unified = activitySessions.map(s => ({\n sessionId: s.sessionId,\n projectName: s.projectName,\n startTime: s.startTime,\n durationMinutes: s.durationMinutes,\n messageCount: s.messageCount,\n summary: s.summary || '',\n totalTokens: (s.totalInputTokens || 0) + (s.totalOutputTokens || 0),\n }));\n\n // Group sessions by date\n const sessionsByDate = new Map();\n for (const session of unified) {\n const dateKey = heatmapToDateKey(session.startTime);\n if (!sessionsByDate.has(dateKey)) {\n sessionsByDate.set(dateKey, []);\n }\n sessionsByDate.get(dateKey)!.push(session);\n }\n\n // Compute date range\n const dates = unified.map(s => new Date(s.startTime)).sort((a, b) => a.getTime() - b.getTime());\n const startDate = dates[0];\n const endDate = dates[dates.length - 1];\n\n // Pad to full weeks\n const weekStart = heatmapGetWeekStart(startDate);\n const weekEnd = heatmapAddDays(endDate, 6 - endDate.getDay());\n\n // Build grid\n const grid: HeatmapDayData[] = [];\n const monthLabels: { text: string; column: number }[] = [];\n let currentDate = new Date(weekStart);\n let prevMonth = -1;\n let column = 0;\n\n while (currentDate <= weekEnd) {\n const dateKey = currentDate.toISOString().slice(0, 10);\n const sessions = sessionsByDate.get(dateKey) || [];\n const totalTokens = sessions.reduce((sum, s) => sum + s.totalTokens, 0);\n grid.push({ date: dateKey, count: sessions.length, totalTokens, sessions });\n\n const dayOfWeek = currentDate.getDay();\n const month = currentDate.getMonth();\n if (dayOfWeek === 0 && month !== prevMonth) {\n monthLabels.push({ text: MONTH_NAMES[month], column });\n prevMonth = month;\n }\n if (dayOfWeek === 6) {\n column++;\n }\n currentDate = heatmapAddDays(currentDate, 1);\n }\n\n const totalWeeks = Math.ceil(grid.length / 7);\n const hasTokenData = unified.some(s => s.totalTokens > 0);\n const getTokenIntensity = heatmapComputeTokenIntensity(grid);\n const cellSize = 16;\n const gap = 3;\n\n // Compute stats\n const totalSessions = unified.length;\n const activeDays = sessionsByDate.size;\n const totalTokensAll = unified.reduce((sum, s) => sum + s.totalTokens, 0);\n\n const projectCounts = new Map();\n for (const session of unified) {\n projectCounts.set(session.projectName, (projectCounts.get(session.projectName) || 0) + 1);\n }\n let mostActiveProject = '';\n let maxCount = 0;\n for (const [project, count] of projectCounts) {\n if (count > maxCount) {\n mostActiveProject = project;\n maxCount = count;\n }\n }\n\n // Build stat cards HTML\n const statCards = `\n
\n
\n ${totalSessions}\n Sessions\n
\n
\n ${activeDays}\n Active Days\n
\n ${totalTokensAll > 0 ? `\n
\n ${heatmapFormatTokenCount(totalTokensAll)}\n Total Tokens\n
\n ` : ''}\n ${mostActiveProject ? `\n
\n ${escapeHtml(mostActiveProject)}\n Top Project\n
\n ` : ''}\n
\n `;\n\n // Build month labels HTML\n const monthLabelsHtml = monthLabels.map(m =>\n `${m.text}`\n ).join('');\n\n // Build day labels HTML (show Mon/Wed/Fri only)\n const dayLabelsHtml = DAY_LABELS.map((label, i) =>\n `${label}`\n ).join('');\n\n // Build grid cells HTML\n const cellsHtml = grid.map((day) => {\n const intensity = hasTokenData\n ? getTokenIntensity(day.totalTokens)\n : heatmapGetIntensityByCount(day.count);\n const title = day.count > 0\n ? `${heatmapFormatDate(day.date)}: ${day.totalTokens > 0 ? `${heatmapFormatTokenCount(day.totalTokens)} tokens, ` : ''}${day.count} session${day.count !== 1 ? 's' : ''}`\n : `${heatmapFormatDate(day.date)}: No sessions`;\n return `
0 ? ' onclick=\"showHeatmapDetail(this.dataset.date)\"' : ''}>
`;\n }).join('');\n\n // Build legend\n const legendHtml = `\n
\n Less\n
\n ${[0, 1, 2, 3, 4].map(level => `
`).join('')}\n
\n More\n
\n `;\n\n // Build session data JSON for client-side detail panel\n const sessionDataByDate: Record = {};\n for (const day of grid) {\n if (day.sessions.length > 0) {\n sessionDataByDate[day.date] = day.sessions;\n }\n }\n\n return `\n
\n
\n 📊\n
\n

Monthly Vibe

\n

${totalSessions} sessions · ${activeDays} active days

\n
\n
\n
\n ${statCards}\n
\n
${monthLabelsHtml}
\n
\n
${dayLabelsHtml}
\n
\n ${cellsHtml}\n
\n
\n ${legendHtml}\n
\n
\n
\n
\n \n `;\n}\n\nfunction generateWeeklyInsightsSection(\n weeklyInsights: {\n stats?: { totalSessions?: number; totalMinutes?: number; totalTokens?: number; activeDays?: number };\n projects?: Array<{ projectName: string; sessionCount: number; percentage: number }>;\n narrative?: string;\n highlights?: string[];\n topProjectSessions?: Array<{ summary: string; durationMinutes: number; date: string }>;\n } | undefined,\n): string {\n if (!weeklyInsights) return '';\n\n const stats = weeklyInsights.stats;\n const highlights = weeklyInsights.highlights ?? [];\n const projects = weeklyInsights.projects ?? [];\n const topSessions = weeklyInsights.topProjectSessions ?? [];\n\n return `\n
\n

📆 Weekly Insights

\n ${stats ? `\n
\n
${stats.totalSessions ?? 0}
Sessions
\n
${Math.round(stats.totalMinutes ?? 0)}
Minutes
\n
${Math.round((stats.totalTokens ?? 0) / 1000)}k
Tokens
\n
${stats.activeDays ?? 0}
Active Days
\n
\n ` : ''}\n ${weeklyInsights.narrative ? `

${escapeHtml(weeklyInsights.narrative)}

` : ''}\n ${projects.length > 0 ? `\n
\n

Project Breakdown

\n
    \n ${projects.map(project => `
  • ${escapeHtml(project.projectName)}: ${project.sessionCount} sessions, ${project.percentage}%
  • `).join('')}\n
\n
\n ` : ''}\n ${topSessions.length > 0 ? `\n
\n

Top Sessions

\n
    \n ${topSessions.map(session => `
  • ${escapeHtml(session.date)} · ${Math.round(session.durationMinutes)} min · ${escapeHtml(session.summary)}
  • `).join('')}\n
\n
\n ` : ''}\n ${highlights.length > 0 ? `\n
\n

Highlights

\n
    \n ${highlights.map(item => `
  • ${escapeHtml(item)}
  • `).join('')}\n
\n
\n ` : ''}\n
\n `;\n}\n\nfunction generateKnowledgeResourcesSection(\n knowledgeResources: Array<{\n dimensionDisplayName?: string;\n knowledgeItems?: Array<{ title?: string; summary?: string; sourceAuthor?: string; sourceUrl?: string }>;\n professionalInsights?: Array<{ title?: string; keyTakeaway?: string; sourceAuthor?: string; sourceUrl?: string }>;\n }> | undefined,\n): string {\n if (!knowledgeResources?.length) return '';\n\n return `\n
\n

📚 Knowledge Resources

\n
\n ${knowledgeResources.map((group) => `\n
\n

${escapeHtml(group.dimensionDisplayName ?? 'Recommended Resources')}

\n ${(group.professionalInsights?.length ?? 0) > 0 ? `\n

Professional Insights

\n
    \n ${group.professionalInsights!.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? 'Insight')}${item.keyTakeaway ? `: ${escapeHtml(item.keyTakeaway)}` : ''}
  • `).join('')}\n
\n ` : ''}\n ${(group.knowledgeItems?.length ?? 0) > 0 ? `\n

Suggested Reading

\n
    \n ${group.knowledgeItems!.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? 'Resource')}${item.summary ? `: ${escapeHtml(item.summary)}` : ''}
  • `).join('')}\n
\n ` : ''}\n
\n `).join('')}\n
\n
\n `;\n}\n\n// ============================================================================\n// Shared HTML Fragments\n// ============================================================================\n\nfunction generateBaseCss(): string {\n return `\n /* ── Notebook Sketch Design System ── */\n\n :root {\n --bg-paper: #FFFFFF;\n --bg-paper-warm: #FFFEF8;\n --bg-grid-color: #E8EDF5;\n --bg-grid-size: 20px;\n --ink-primary: #1A1A2E;\n --ink-secondary: #4A4A5A;\n --ink-muted: #8A8A9A;\n --sketch-cyan: #00BCD4;\n --sketch-green: #4ADE80;\n --sketch-pink: #FF6B9D;\n --sketch-blue: #3B82F6;\n --sketch-purple: #9C7CF4;\n --sketch-yellow: #FFD93D;\n --sketch-orange: #FB923C;\n --sketch-red: #EF4444;\n }\n\n * { margin: 0; padding: 0; box-sizing: border-box; }\n\n body {\n font-family: 'Fira Code', monospace;\n background: var(--bg-paper-warm);\n background-image:\n linear-gradient(var(--bg-grid-color) 1px, transparent 1px),\n linear-gradient(90deg, var(--bg-grid-color) 1px, transparent 1px);\n background-size: var(--bg-grid-size) var(--bg-grid-size);\n color: var(--ink-primary);\n line-height: 1.6;\n padding: 40px 20px;\n }\n\n .container {\n max-width: 900px;\n margin: 0 auto;\n }\n\n /* ── Header ── */\n .header {\n text-align: center;\n margin-bottom: 48px;\n padding-bottom: 24px;\n border-bottom: 2px solid var(--ink-primary);\n }\n .header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; }\n .header .subtitle { color: var(--ink-secondary); font-size: 13px; }\n\n /* ── Identity Section ── */\n .identity {\n display: flex;\n gap: 32px;\n align-items: center;\n margin-bottom: 48px;\n padding: 24px;\n background: var(--bg-paper);\n border: 2px solid var(--ink-primary);\n border-radius: 8px;\n }\n .identity .type-info { flex: 1; }\n .identity .type-emoji { font-size: 48px; }\n .identity .type-name { font-size: 22px; font-weight: 700; margin-top: 8px; }\n .identity .type-detail { color: var(--ink-secondary); font-size: 13px; margin-top: 4px; }\n\n /* ── Scores Grid ── */\n .scores-section {\n display: flex;\n gap: 32px;\n margin-bottom: 48px;\n align-items: flex-start;\n }\n .radar-container { flex-shrink: 0; }\n .distribution-container { flex: 1; }\n\n /* ── Cards ── */\n .card {\n background: var(--bg-paper);\n border: 1px solid var(--bg-grid-color);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 12px;\n }\n .card h4 { font-size: 14px; margin-bottom: 8px; }\n .card p { font-size: 13px; color: var(--ink-secondary); line-height: 1.5; }\n .card-grid { display: grid; grid-template-columns: 1fr; gap: 12px; }\n\n .strength-card { border-left: 3px solid var(--sketch-green); }\n .growth-card { border-left: 3px solid var(--sketch-orange); }\n .focus-card { border-left: 3px solid var(--sketch-cyan); }\n\n .severity-badge {\n display: inline-block;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n margin-bottom: 8px;\n text-transform: uppercase;\n }\n .severity-low { background: rgba(74,222,128,0.15); color: #16a34a; }\n .severity-medium { background: rgba(251,146,60,0.15); color: #ea580c; }\n .severity-high { background: rgba(239,68,68,0.15); color: #dc2626; }\n\n .recommendation {\n margin-top: 8px;\n padding: 8px 12px;\n background: rgba(0,188,212,0.08);\n border-radius: 4px;\n font-size: 12px;\n color: var(--ink-secondary);\n }\n\n details { margin-top: 8px; }\n details summary {\n cursor: pointer;\n font-size: 12px;\n color: var(--ink-muted);\n }\n details ul { margin-top: 4px; padding-left: 20px; font-size: 12px; color: var(--ink-secondary); }\n details li { margin-bottom: 4px; }\n details code { font-size: 11px; background: #f0f0f5; padding: 1px 4px; border-radius: 2px; }\n\n /* ── Domain Sections ── */\n .domain-section {\n margin-bottom: 48px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--bg-grid-color);\n }\n .domain-section h2 {\n font-size: 20px;\n margin-bottom: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .domain-section h3 {\n font-size: 14px;\n font-weight: 600;\n color: var(--ink-secondary);\n margin: 16px 0 8px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n .score {\n font-size: 14px;\n font-weight: 400;\n color: var(--sketch-cyan);\n margin-left: auto;\n }\n\n /* ── Actions Grid ── */\n .actions-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 8px;\n margin-top: 12px;\n }\n .action {\n padding: 8px;\n border-radius: 4px;\n font-size: 12px;\n color: var(--ink-secondary);\n }\n .action.start { background: rgba(74,222,128,0.1); }\n .action.stop { background: rgba(239,68,68,0.1); }\n .action.continue { background: rgba(59,130,246,0.1); }\n .action strong { display: block; font-size: 11px; color: var(--ink-primary); margin-bottom: 4px; }\n\n /* ── Metrics Bar ── */\n .metrics-bar {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n margin-bottom: 32px;\n padding: 16px;\n background: var(--bg-paper);\n border: 1px solid var(--bg-grid-color);\n border-radius: 8px;\n }\n .metric {\n text-align: center;\n }\n .metric .value { font-size: 24px; font-weight: 700; color: var(--sketch-cyan); }\n .metric .label { font-size: 11px; color: var(--ink-muted); }\n\n /* ── Navigation Dots ── */\n .nav-dots {\n position: fixed;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n flex-direction: column;\n gap: 12px;\n z-index: 100;\n }\n .nav-dot {\n display: block;\n text-decoration: none;\n }\n .nav-dot .dot {\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--bg-grid-color);\n border: 1px solid var(--ink-muted);\n transition: all 0.2s;\n }\n .nav-dot:hover .dot,\n .nav-dot.active .dot {\n background: var(--sketch-cyan);\n border-color: var(--sketch-cyan);\n transform: scale(1.5);\n }\n\n /* ── Footer ── */\n .footer {\n text-align: center;\n padding: 24px;\n color: var(--ink-muted);\n font-size: 12px;\n }\n\n @media (max-width: 640px) {\n .identity { flex-direction: column; text-align: center; }\n .scores-section { flex-direction: column; }\n .actions-grid { grid-template-columns: 1fr; }\n }\n `;\n}\n\nfunction renderNavDotsHtml(dots: Array<{ id: string; label: string }>): string {\n return dots\n .map(d => ``)\n .join('');\n}\n\nfunction renderIdentitySection(typeResult: DeterministicTypeResult | null, fallbackMessage: string): string {\n if (typeResult) {\n return `\n
${typeResult.matrixEmoji}
\n
\n
${escapeHtml(typeResult.matrixName)}
\n
${escapeHtml(typeResult.primaryType)} / ${escapeHtml(typeResult.controlLevel)} (control: ${typeResult.controlScore})
\n
\n `;\n }\n return `\n
\n
Type Not Classified
\n
${escapeHtml(fallbackMessage)}
\n
\n `;\n}\n\nfunction renderMetricsBar(metrics: AnalysisReport['phase1Metrics']): string {\n return `\n
\n
\n
${metrics.totalSessions}
\n
Sessions
\n
\n
\n
${metrics.totalDeveloperUtterances}
\n
Utterances
\n
\n
\n
${Math.round(metrics.avgMessagesPerSession)}
\n
Avg Messages/Session
\n
\n
\n
${Math.round(metrics.questionRatio * 100)}%
\n
Questions
\n
\n
\n
${Math.round(metrics.codeBlockRatio * 100)}%
\n
Code Blocks
\n
\n
\n `;\n}\n\nfunction renderScrollSpyScript(): string {\n return `\n `;\n}\n\n// ============================================================================\n// Main HTML Generator\n// ============================================================================\n\nexport function generateReportHtml(report: AnalysisReport): string {\n const { typeResult, deterministicScores, phase1Metrics, domainResults, content } = report;\n\n const radarSvg = generateRadarSvg(buildRadarScores(deterministicScores), RADAR_LABELS);\n const distributionBar = typeResult\n ? generateTypeDistributionBar(typeResult.distribution)\n : '

Type classification not yet performed. Run classify_developer_type first.

';\n const domainSections = domainResults.map(generateDomainSection).join('\\n');\n const focusAreasSection = generateFocusAreas(content);\n\n const navDots = [\n { id: 'identity', label: 'Identity' },\n { id: 'scores', label: 'Scores' },\n ...domainResults.map((d: DomainResult) => ({\n id: `domain-${d.domain}`,\n label: DOMAIN_LABELS[d.domain]?.label ?? d.domain,\n })),\n ...(content?.topFocusAreas?.length ? [{ id: 'focus-areas', label: 'Focus' }] : []),\n ];\n\n return `\n\n\n \n \n BetterPrompt Analysis Report\n \n \n\n\n \n\n
\n
\n

BetterPrompt Analysis

\n

Generated ${new Date(report.analyzedAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}

\n
\n\n
\n ${renderIdentitySection(typeResult, 'Run classify_developer_type to determine your collaboration style')}\n
\n\n ${renderMetricsBar(phase1Metrics)}\n\n
\n
${radarSvg}
\n
\n

Type Distribution

\n ${distributionBar}\n
\n
\n\n ${domainSections}\n ${focusAreasSection}\n\n
\n Generated by BetterPrompt Plugin v0.2.0 — local-first AI collaboration analysis\n
\n
\n ${renderScrollSpyScript()}\n\n`;\n}\n\nexport function generateCanonicalReportHtml(run: CanonicalAnalysisRun): string {\n const evaluation = run.evaluation as Record;\n const personalitySummary = typeof evaluation.personalitySummary === 'string'\n ? evaluation.personalitySummary\n : '';\n const promptPatterns = Array.isArray(evaluation.promptPatterns)\n ? evaluation.promptPatterns as Array<{ patternName?: string; description?: string; frequency?: string; examples?: Array<{ quote?: string; analysis?: string }> }>\n : [];\n const projectSummaries = Array.isArray(evaluation.projectSummaries)\n ? evaluation.projectSummaries as Array<{ projectName: string; summaryLines: string[]; sessionCount: number }>\n : [];\n const weeklyInsights = evaluation.weeklyInsights as {\n stats?: { totalSessions?: number; totalMinutes?: number; totalTokens?: number; activeDays?: number };\n projects?: Array<{ projectName: string; sessionCount: number; percentage: number }>;\n narrative?: string;\n highlights?: string[];\n topProjectSessions?: Array<{ summary: string; durationMinutes: number; date: string }>;\n } | undefined;\n const focusAreas = (evaluation.topFocusAreas as { areas?: Array<{ title: string; narrative?: string; actions?: { start: string; stop: string; continue: string } }> } | undefined)?.areas;\n const knowledgeResources = Array.isArray(evaluation.knowledgeResources)\n ? evaluation.knowledgeResources as Array<{\n dimensionDisplayName?: string;\n knowledgeItems?: Array<{ title?: string; summary?: string; sourceAuthor?: string; sourceUrl?: string }>;\n professionalInsights?: Array<{ title?: string; keyTakeaway?: string; sourceAuthor?: string; sourceUrl?: string }>;\n }>\n : [];\n\n const legacyContent = focusAreas\n ? {\n topFocusAreas: focusAreas.map(area => ({\n title: area.title,\n narrative: area.narrative,\n description: area.narrative,\n actions: area.actions,\n })),\n }\n : undefined;\n\n const typeResult = run.typeResult;\n const radarSvg = generateRadarSvg(buildRadarScores(run.deterministicScores), RADAR_LABELS);\n const distributionBar = typeResult\n ? generateTypeDistributionBar(typeResult.distribution)\n : '

Type classification not yet performed.

';\n const domainSections = run.domainResults.map(generateDomainSection).join('\\n');\n const focusAreasSection = generateFocusAreas(legacyContent);\n const personalitySummarySection = generatePersonalitySummary(personalitySummary);\n const promptPatternsSection = generatePromptPatternsSection(promptPatterns);\n const projectSummariesSection = generateProjectSummariesSection(projectSummaries);\n const weeklyInsightsSection = generateWeeklyInsightsSection(weeklyInsights);\n const knowledgeResourcesSection = generateKnowledgeResourcesSection(knowledgeResources);\n const activityHeatmapSection = generateActivityHeatmapSection(run.activitySessions);\n\n const navDots = [\n { id: 'identity', label: 'Identity' },\n { id: 'scores', label: 'Scores' },\n ...((run.activitySessions?.length ?? 0) > 0 ? [{ id: 'activity-heatmap', label: 'Activity' }] : []),\n ...(personalitySummary ? [{ id: 'personality-summary', label: 'Summary' }] : []),\n ...(promptPatterns.length > 0 ? [{ id: 'prompt-patterns', label: 'Patterns' }] : []),\n ...(projectSummaries.length > 0 ? [{ id: 'project-summaries', label: 'Projects' }] : []),\n ...(weeklyInsights ? [{ id: 'weekly-insights', label: 'Week' }] : []),\n ...(knowledgeResources.length > 0 ? [{ id: 'knowledge-resources', label: 'Resources' }] : []),\n ...run.domainResults.map((d: DomainResult) => ({\n id: `domain-${d.domain}`,\n label: DOMAIN_LABELS[d.domain]?.label ?? d.domain,\n })),\n ...(legacyContent?.topFocusAreas?.length ? [{ id: 'focus-areas', label: 'Focus' }] : []),\n ];\n\n return `\n\n\n \n \n BetterPrompt Analysis Report\n \n \n\n\n \n\n
\n
\n

BetterPrompt Analysis

\n

Generated ${new Date(run.analyzedAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}

\n
\n\n
\n ${renderIdentitySection(typeResult, 'Run type classification before generating the final report.')}\n
\n\n ${renderMetricsBar(run.phase1Output.sessionMetrics)}\n\n
\n
${radarSvg}
\n
\n

Type Distribution

\n ${distributionBar}\n
\n
\n\n ${activityHeatmapSection}\n ${personalitySummarySection}\n ${promptPatternsSection}\n ${projectSummariesSection}\n ${weeklyInsightsSection}\n ${knowledgeResourcesSection}\n ${domainSections}\n ${focusAreasSection}\n\n
\n Generated by BetterPrompt Plugin v0.2.0 - local-first AI collaboration analysis\n
\n
\n ${renderScrollSpyScript()}\n\n`;\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/get-domain-results-AJSUPVA2.js b/packages/plugin/dist/get-domain-results-AJSUPVA2.js new file mode 100644 index 00000000..e96209ba --- /dev/null +++ b/packages/plugin/dist/get-domain-results-AJSUPVA2.js @@ -0,0 +1,60 @@ +import { + getCurrentRunId, + getDomainResult, + getDomainResults +} from "./chunk-T2XRMW7B.js"; +import { + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/get-domain-results.ts +import { writeFile, mkdir } from "fs/promises"; +import { join } from "path"; +async function execute(args) { + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first." + }); + } + const tmpDir = join(getPluginDataDir(), "tmp"); + await mkdir(tmpDir, { recursive: true }); + if (typeof args.domain === "string") { + const result = getDomainResult(runId, args.domain); + if (!result) { + return JSON.stringify({ + status: "not_found", + domain: args.domain, + runId, + message: `No ${args.domain} result found for run #${runId}.` + }); + } + const output2 = { status: "ok", domain: args.domain, runId, data: result }; + const outputFile2 = join(tmpDir, `domain-${args.domain}.json`); + await writeFile(outputFile2, JSON.stringify(output2, null, 2), "utf-8"); + return JSON.stringify({ + status: "ok", + domain: args.domain, + runId, + outputFile: outputFile2, + message: `Domain result written to ${outputFile2}.` + }); + } + const results = getDomainResults(runId); + const output = { status: "ok", runId, domainsAvailable: results.map((r) => r.domain), data: results }; + const outputFile = join(tmpDir, "domain-all.json"); + await writeFile(outputFile, JSON.stringify(output, null, 2), "utf-8"); + return JSON.stringify({ + status: "ok", + runId, + domainsAvailable: results.map((r) => r.domain), + outputFile, + message: `All domain results written to ${outputFile}.` + }); +} +export { + execute +}; +//# sourceMappingURL=get-domain-results-AJSUPVA2.js.map \ No newline at end of file diff --git a/packages/plugin/dist/get-domain-results-AJSUPVA2.js.map b/packages/plugin/dist/get-domain-results-AJSUPVA2.js.map new file mode 100644 index 00000000..2df9d844 --- /dev/null +++ b/packages/plugin/dist/get-domain-results-AJSUPVA2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/get-domain-results.ts"],"sourcesContent":["/**\n * get-domain-results CLI command\n *\n * Reads previously saved domain analysis results. Writes large output to file.\n *\n * Usage: betterprompt-cli get-domain-results [--domain aiPartnership]\n */\n\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { getCurrentRunId, getDomainResult, getDomainResults } from '../../lib/results-db.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\n\nexport async function execute(args: Record): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first.',\n });\n }\n\n const tmpDir = join(getPluginDataDir(), 'tmp');\n await mkdir(tmpDir, { recursive: true });\n\n if (typeof args.domain === 'string') {\n const result = getDomainResult(runId, args.domain);\n if (!result) {\n return JSON.stringify({\n status: 'not_found',\n domain: args.domain,\n runId,\n message: `No ${args.domain} result found for run #${runId}.`,\n });\n }\n\n const output = { status: 'ok', domain: args.domain, runId, data: result };\n const outputFile = join(tmpDir, `domain-${args.domain}.json`);\n await writeFile(outputFile, JSON.stringify(output, null, 2), 'utf-8');\n\n return JSON.stringify({\n status: 'ok',\n domain: args.domain,\n runId,\n outputFile,\n message: `Domain result written to ${outputFile}.`,\n });\n }\n\n const results = getDomainResults(runId);\n const output = { status: 'ok', runId, domainsAvailable: results.map(r => r.domain), data: results };\n const outputFile = join(tmpDir, 'domain-all.json');\n await writeFile(outputFile, JSON.stringify(output, null, 2), 'utf-8');\n\n return JSON.stringify({\n status: 'ok',\n runId,\n domainsAvailable: results.map(r => r.domain),\n outputFile,\n message: `All domain results written to ${outputFile}.`,\n });\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAS,WAAW,aAAa;AACjC,SAAS,YAAY;AAIrB,eAAsB,QAAQ,MAAgD;AAC5E,QAAM,QAAQ,gBAAgB;AAE9B,MAAI,CAAC,OAAO;AACV,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,KAAK,iBAAiB,GAAG,KAAK;AAC7C,QAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAEvC,MAAI,OAAO,KAAK,WAAW,UAAU;AACnC,UAAM,SAAS,gBAAgB,OAAO,KAAK,MAAM;AACjD,QAAI,CAAC,QAAQ;AACX,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,SAAS,MAAM,KAAK,MAAM,0BAA0B,KAAK;AAAA,MAC3D,CAAC;AAAA,IACH;AAEA,UAAMA,UAAS,EAAE,QAAQ,MAAM,QAAQ,KAAK,QAAQ,OAAO,MAAM,OAAO;AACxE,UAAMC,cAAa,KAAK,QAAQ,UAAU,KAAK,MAAM,OAAO;AAC5D,UAAM,UAAUA,aAAY,KAAK,UAAUD,SAAQ,MAAM,CAAC,GAAG,OAAO;AAEpE,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,YAAAC;AAAA,MACA,SAAS,4BAA4BA,WAAU;AAAA,IACjD,CAAC;AAAA,EACH;AAEA,QAAM,UAAU,iBAAiB,KAAK;AACtC,QAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,kBAAkB,QAAQ,IAAI,OAAK,EAAE,MAAM,GAAG,MAAM,QAAQ;AAClG,QAAM,aAAa,KAAK,QAAQ,iBAAiB;AACjD,QAAM,UAAU,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAEpE,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,IACA,kBAAkB,QAAQ,IAAI,OAAK,EAAE,MAAM;AAAA,IAC3C;AAAA,IACA,SAAS,iCAAiC,UAAU;AAAA,EACtD,CAAC;AACH;","names":["output","outputFile"]} \ No newline at end of file diff --git a/packages/plugin/dist/get-prompt-context-RPLLOGSK.js b/packages/plugin/dist/get-prompt-context-RPLLOGSK.js new file mode 100644 index 00000000..45c5aca9 --- /dev/null +++ b/packages/plugin/dist/get-prompt-context-RPLLOGSK.js @@ -0,0 +1,483 @@ +import { + getAllStageOutputs, + getAnalysisRun, + getCurrentRunId, + getDomainResults +} from "./chunk-T2XRMW7B.js"; +import { + CONTEXT_WINDOW_SIZE, + external_exports, + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/get-prompt-context.ts +import { writeFile, mkdir } from "fs/promises"; +import { join } from "path"; + +// lib/prompt-context.ts +var PROMPT_CONTEXT_KINDS = [ + "sessionSummaries", + "domainAnalysis", + "projectSummaries", + "weeklyInsights", + "typeClassification", + "evidenceVerification", + "contentWriter", + "translation" +]; +var SKILL_INJECTION_PREFIX = "Base directory for this skill:"; +function trimText(text, maxChars) { + if (!text) return ""; + if (text.length <= maxChars) return text; + return `${text.slice(0, maxChars - 1)}\u2026`; +} +function isAnalyzablePromptContextUserMessage(message) { + return message.role === "user" && !message.isMeta && typeof message.sourceToolUseID !== "string" && message.toolUseResult === void 0 && !message.content.trim().startsWith(SKILL_INJECTION_PREFIX); +} +function trimMessages(messages, maxMessages, maxChars) { + return messages.slice(0, maxMessages).map((message) => ({ + role: message.role, + timestamp: message.timestamp, + content: trimText(message.content, maxChars), + ...Array.isArray(message.toolCalls) && message.toolCalls.length > 0 ? { + toolCalls: message.toolCalls.slice(0, 5).map((toolCall) => ({ + id: toolCall.id, + name: toolCall.name, + ...toolCall.isError ? { isError: true } : {} + })) + } : {}, + ...message.tokenUsage ? { tokenUsage: message.tokenUsage } : {} + })); +} +var MAX_UTTERANCES = 300; +var MAX_INTERACTION_SNAPSHOTS = 200; +var MAX_SESSION_OVERVIEWS = 40; +function buildTrimmedDeveloperUtterances(phase1Output, maxChars) { + return phase1Output.developerUtterances.slice(0, MAX_UTTERANCES).map((utterance) => ({ + id: utterance.id, + text: trimText(utterance.displayText || utterance.text, maxChars), + sessionId: utterance.sessionId, + turnIndex: utterance.turnIndex, + characterCount: utterance.characterCount, + wordCount: utterance.wordCount, + hasCodeBlock: utterance.hasCodeBlock, + hasQuestion: utterance.hasQuestion, + isSessionStart: utterance.isSessionStart, + isContinuation: utterance.isContinuation, + precedingAIToolCalls: utterance.precedingAIToolCalls?.slice(0, 8), + precedingAIHadError: utterance.precedingAIHadError, + timestamp: utterance.timestamp + })); +} +function asSessionMessageWithMeta(message) { + return message; +} +function buildSessionOverviews(phase1Output) { + return (phase1Output.sessions ?? []).slice(0, MAX_SESSION_OVERVIEWS).map((session) => { + const messages = session.messages.map(asSessionMessageWithMeta); + const userMessages = messages.filter(isAnalyzablePromptContextUserMessage); + const assistantMessages = messages.filter((message) => message.role === "assistant"); + const firstAssistant = assistantMessages[0]; + const toolSequence = assistantMessages.flatMap((message) => message.toolCalls?.map((toolCall) => toolCall.name) ?? []).filter((toolName, index, all) => all.indexOf(toolName) === index).slice(0, 10); + const peakAssistantInputTokens = assistantMessages.reduce( + (max, message) => Math.max(max, message.tokenUsage?.input ?? 0), + 0 + ); + const peakContextFillPercent = peakAssistantInputTokens > 0 ? Math.round(peakAssistantInputTokens / CONTEXT_WINDOW_SIZE * 1e3) / 10 : void 0; + return { + sessionId: session.sessionId, + projectName: session.projectName ?? "unknown", + startTime: session.startTime, + endTime: session.endTime, + durationSeconds: session.durationSeconds, + stats: { + userMessageCount: userMessages.length, + assistantMessageCount: assistantMessages.length, + toolCallCount: session.stats.toolCallCount, + uniqueToolsUsed: session.stats.uniqueToolsUsed, + totalInputTokens: session.stats.totalInputTokens, + totalOutputTokens: session.stats.totalOutputTokens + }, + firstUserMessage: trimText(userMessages[0]?.content, 220), + firstAssistantPreview: trimText(firstAssistant?.content, 220), + firstAssistantAskedQuestion: Boolean(firstAssistant?.content?.includes("?")), + assistantErrorCount: assistantMessages.reduce( + (count, message) => count + (message.toolCalls?.some((toolCall) => toolCall.isError) ? 1 : 0), + 0 + ), + toolSequence, + peakContextFillPercent + }; + }); +} +function buildInteractionSnapshots(phase1Output, options) { + const { maxUserChars = 260, maxAssistantChars = 220 } = options ?? {}; + const snapshots = (phase1Output.sessions ?? []).flatMap((session) => { + const messages = session.messages.map(asSessionMessageWithMeta); + return messages.flatMap((message, index) => { + if (!isAnalyzablePromptContextUserMessage(message)) { + return []; + } + const precedingAssistant = [...messages.slice(0, index)].reverse().find((candidate) => candidate.role === "assistant"); + return [{ + utteranceId: `${session.sessionId}_${index}`, + sessionId: session.sessionId, + projectName: session.projectName ?? "unknown", + turnIndex: index, + text: trimText(message.content, maxUserChars), + characterCount: message.content.length, + hasQuestion: message.content.includes("?"), + isSessionStart: !messages.slice(0, index).some(isAnalyzablePromptContextUserMessage), + precedingAssistantPreview: trimText(precedingAssistant?.content, maxAssistantChars), + precedingAssistantLength: precedingAssistant?.content?.length ?? 0, + precedingAssistantHadCodeBlock: Boolean(precedingAssistant?.content?.includes("```")), + precedingAIToolCalls: precedingAssistant?.toolCalls?.map((toolCall) => toolCall.name).slice(0, 8), + precedingAIHadError: precedingAssistant?.toolCalls?.some((toolCall) => toolCall.isError) ?? false + }]; + }); + }); + return snapshots.slice(0, MAX_INTERACTION_SNAPSHOTS); +} +function buildUtteranceLookup(phase1Output) { + return Object.fromEntries( + phase1Output.developerUtterances.map((utterance) => [ + utterance.id, + utterance.displayText || utterance.text + ]) + ); +} +function buildTrimmedSessionInput(phase1Output) { + return (phase1Output.sessions ?? []).map((session) => ({ + sessionId: session.sessionId, + projectPath: session.projectPath, + projectName: session.projectName ?? "unknown", + startTime: session.startTime, + endTime: session.endTime, + durationSeconds: session.durationSeconds, + source: session.source, + stats: session.stats, + messages: trimMessages(session.messages, 12, 700) + })); +} +function buildCondensedDomainResults(domainResults, options) { + const { + maxStrengths = 2, + maxGrowthAreas = 2, + maxDescriptionChars = 420, + maxRecommendationChars = 260 + } = options ?? {}; + return domainResults.map((result) => ({ + domain: result.domain, + overallScore: result.overallScore, + confidenceScore: result.confidenceScore, + strengths: result.strengths.slice(0, maxStrengths).map((strength) => ({ + title: strength.title, + description: trimText(strength.description, maxDescriptionChars), + evidenceCount: strength.evidence.length + })), + growthAreas: result.growthAreas.slice(0, maxGrowthAreas).map((growthArea) => ({ + title: growthArea.title, + description: trimText(growthArea.description, maxDescriptionChars), + severity: growthArea.severity, + recommendation: trimText(growthArea.recommendation, maxRecommendationChars), + evidenceCount: growthArea.evidence.length + })), + analyzedAt: result.analyzedAt + })); +} +function buildCondensedContentWriterStageOutputs(stageOutputs) { + return { + typeClassification: stageOutputs.typeClassification ? { + collaborationMaturity: stageOutputs.typeClassification.collaborationMaturity, + reasoning: stageOutputs.typeClassification.reasoning.slice(0, 1).map((paragraph) => trimText(paragraph, 500)), + personalityNarrative: stageOutputs.typeClassification.personalityNarrative.slice(0, 1).map((paragraph) => trimText(paragraph, 500)) + } : void 0, + weeklyInsights: stageOutputs.weeklyInsights ? { + stats: stageOutputs.weeklyInsights.stats, + projects: stageOutputs.weeklyInsights.projects, + topSessions: stageOutputs.weeklyInsights.topSessions, + narrative: trimText(stageOutputs.weeklyInsights.narrative, 600), + highlights: stageOutputs.weeklyInsights.highlights.slice(0, 5).map((item) => trimText(item, 180)) + } : void 0, + projectSummaries: stageOutputs.projectSummaries, + evidenceVerification: stageOutputs.evidenceVerification ? { + threshold: stageOutputs.evidenceVerification.threshold, + domainStats: stageOutputs.evidenceVerification.domainStats, + verifiedEvidenceCount: stageOutputs.evidenceVerification.verifiedResults.length + } : void 0 + }; +} +function buildThinkingQualityContext(phase1Output) { + return { + developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 280), + sessionMetrics: phase1Output.sessionMetrics, + sessionOverviews: buildSessionOverviews(phase1Output), + interactionSnapshots: buildInteractionSnapshots(phase1Output, { + maxUserChars: 260, + maxAssistantChars: 200 + }), + ...phase1Output.aiInsightBlocks?.length ? { + aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 20).map((block) => ({ + sessionId: block.sessionId, + turnIndex: block.turnIndex, + content: trimText(block.content, 180), + triggeringUtteranceId: block.triggeringUtteranceId + })) + } : {} + }; +} +function buildCommunicationContext(phase1Output) { + return { + developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260), + sessionMetrics: phase1Output.sessionMetrics, + sessionOverviews: buildSessionOverviews(phase1Output), + interactionSnapshots: buildInteractionSnapshots(phase1Output, { + maxUserChars: 220, + maxAssistantChars: 160 + }) + }; +} +function buildLearningContext(phase1Output) { + return { + sessionMetrics: phase1Output.sessionMetrics, + developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260), + sessionOverviews: buildSessionOverviews(phase1Output), + interactionSnapshots: buildInteractionSnapshots(phase1Output, { + maxUserChars: 240, + maxAssistantChars: 200 + }), + ...phase1Output.aiInsightBlocks?.length ? { + aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({ + sessionId: block.sessionId, + turnIndex: block.turnIndex, + content: trimText(block.content, 200), + triggeringUtteranceId: block.triggeringUtteranceId + })) + } : {} + }; +} +function buildEfficiencyContext(phase1Output) { + return { + sessionMetrics: phase1Output.sessionMetrics, + activitySessions: phase1Output.activitySessions ?? [], + sessionOverviews: buildSessionOverviews(phase1Output), + interactionSnapshots: buildInteractionSnapshots(phase1Output, { + maxUserChars: 220, + maxAssistantChars: 160 + }), + developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 240) + }; +} +function buildSessionMasteryContext(phase1Output) { + return { + sessionMetrics: phase1Output.sessionMetrics, + activitySessions: phase1Output.activitySessions ?? [], + sessionOverviews: buildSessionOverviews(phase1Output), + interactionSnapshots: buildInteractionSnapshots(phase1Output, { + maxUserChars: 200, + maxAssistantChars: 160 + }) + }; +} +function buildDomainAnalysisContext(domain, phase1Output, deterministicScores) { + const base = { + domain, + deterministicScores, + dateRange: phase1Output.sessionMetrics.dateRange + }; + switch (domain) { + case "aiPartnership": + return { ...base, phase1: { + ...buildThinkingQualityContext(phase1Output), + activitySessions: phase1Output.activitySessions ?? [] + } }; + case "sessionCraft": + return { ...base, phase1: { + ...buildEfficiencyContext(phase1Output), + ...phase1Output.aiInsightBlocks?.length ? { + aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({ + sessionId: block.sessionId, + turnIndex: block.turnIndex, + content: trimText(block.content, 200), + triggeringUtteranceId: block.triggeringUtteranceId + })) + } : {} + } }; + case "toolMastery": + return { ...base, phase1: buildCommunicationContext(phase1Output) }; + case "skillResilience": + return { ...base, phase1: buildLearningContext(phase1Output) }; + case "sessionMastery": + return { ...base, phase1: buildSessionMasteryContext(phase1Output) }; + } +} +function buildPromptContext(input) { + const { + kind, + phase1Output, + deterministicScores, + typeResult, + domainResults, + stageOutputs, + domain + } = input; + const base = { + kind, + availableDomains: domainResults.map((result) => result.domain), + availableStages: Object.keys(stageOutputs).filter( + (key) => stageOutputs[key] !== void 0 + ) + }; + switch (kind) { + case "sessionSummaries": + return { + ...base, + phase1: { + sessionMetrics: phase1Output.sessionMetrics, + sessions: buildTrimmedSessionInput(phase1Output), + activitySessions: phase1Output.activitySessions ?? [] + } + }; + case "domainAnalysis": + if (!domain) { + throw new Error("Domain is required when kind=domainAnalysis."); + } + return { + ...base, + ...buildDomainAnalysisContext(domain, phase1Output, deterministicScores) + }; + case "projectSummaries": + return { + ...base, + activitySessions: phase1Output.activitySessions ?? [], + sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] } + }; + case "weeklyInsights": + return { + ...base, + activitySessions: phase1Output.activitySessions ?? [], + sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] } + }; + case "typeClassification": + return { + ...base, + deterministicScores, + deterministicType: typeResult, + sessionMetrics: phase1Output.sessionMetrics, + domainResults: buildCondensedDomainResults(domainResults, { + maxStrengths: 2, + maxGrowthAreas: 2, + maxDescriptionChars: 420, + maxRecommendationChars: 260 + }) + }; + case "evidenceVerification": + return { + ...base, + utteranceLookup: buildUtteranceLookup(phase1Output), + domainResults + }; + case "contentWriter": + return { + ...base, + deterministicType: typeResult, + domainResults: buildCondensedDomainResults(domainResults, { + maxStrengths: 2, + maxGrowthAreas: 2, + maxDescriptionChars: 520, + maxRecommendationChars: 320 + }), + stageOutputs: buildCondensedContentWriterStageOutputs(stageOutputs) + }; + case "translation": + return { + ...base, + languageSample: phase1Output.developerUtterances.slice(-50).map((utterance) => utterance.displayText || utterance.text), + deterministicType: typeResult, + domainResults, + stageOutputs + }; + } +} + +// cli/commands/get-prompt-context.ts +var InputSchema = external_exports.object({ + kind: external_exports.enum(PROMPT_CONTEXT_KINDS), + domain: external_exports.enum([ + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery" + ]).optional() +}); +async function execute(args) { + const parsed = InputSchema.safeParse(args); + if (!parsed.success) { + return JSON.stringify({ + status: "validation_error", + message: "Invalid prompt-context request.", + errors: parsed.error.issues.map((issue) => ({ + path: issue.path.join("."), + message: issue.message + })) + }); + } + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first." + }); + } + const run = getAnalysisRun(runId); + if (!run?.phase1Output) { + return JSON.stringify({ + status: "not_found", + runId, + message: `Run #${runId} has no Phase 1 output.` + }); + } + try { + const data = buildPromptContext({ + kind: parsed.data.kind, + domain: parsed.data.domain, + phase1Output: run.phase1Output, + deterministicScores: run.scores, + typeResult: run.typeResult, + domainResults: getDomainResults(runId), + stageOutputs: getAllStageOutputs(runId) + }); + const result = { + status: "ok", + runId, + kind: parsed.data.kind, + ...parsed.data.domain ? { domain: parsed.data.domain } : {}, + data + }; + const tmpDir = join(getPluginDataDir(), "tmp"); + await mkdir(tmpDir, { recursive: true }); + const label = parsed.data.domain ? `${parsed.data.kind}-${parsed.data.domain}` : parsed.data.kind; + const outputFile = join(tmpDir, `context-${label}.json`); + await writeFile(outputFile, JSON.stringify(result, null, 2), "utf-8"); + return JSON.stringify({ + status: "ok", + runId, + kind: parsed.data.kind, + ...parsed.data.domain ? { domain: parsed.data.domain } : {}, + outputFile, + message: `Prompt context written to ${outputFile}.` + }); + } catch (error) { + return JSON.stringify({ + status: "error", + runId, + message: error instanceof Error ? error.message : "Failed to build prompt context." + }); + } +} +export { + execute +}; +//# sourceMappingURL=get-prompt-context-RPLLOGSK.js.map \ No newline at end of file diff --git a/packages/plugin/dist/get-prompt-context-RPLLOGSK.js.map b/packages/plugin/dist/get-prompt-context-RPLLOGSK.js.map new file mode 100644 index 00000000..77cb357b --- /dev/null +++ b/packages/plugin/dist/get-prompt-context-RPLLOGSK.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/get-prompt-context.ts","../lib/prompt-context.ts"],"sourcesContent":["/**\n * get-prompt-context CLI command\n *\n * Returns stage- or domain-specific prompt payloads. Writes large output\n * to a file and returns the path.\n *\n * Usage: betterprompt-cli get-prompt-context --kind domainAnalysis [--domain aiPartnership]\n */\n\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { z } from 'zod';\nimport { getCurrentRunId, getAnalysisRun, getDomainResults } from '../../lib/results-db.js';\nimport { getAllStageOutputs } from '../../lib/stage-db.js';\nimport {\n buildPromptContext,\n PROMPT_CONTEXT_KINDS,\n type PromptContextDomain,\n} from '../../lib/prompt-context.js';\nimport type { CanonicalStageOutputs } from '../../lib/core/types.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\n\nconst InputSchema = z.object({\n kind: z.enum(PROMPT_CONTEXT_KINDS),\n domain: z.enum([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n ]).optional(),\n});\n\nexport async function execute(args: Record): Promise {\n const parsed = InputSchema.safeParse(args);\n if (!parsed.success) {\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid prompt-context request.',\n errors: parsed.error.issues.map(issue => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n\n const runId = getCurrentRunId();\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first.',\n });\n }\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return JSON.stringify({\n status: 'not_found',\n runId,\n message: `Run #${runId} has no Phase 1 output.`,\n });\n }\n\n try {\n const data = buildPromptContext({\n kind: parsed.data.kind,\n domain: parsed.data.domain as PromptContextDomain | undefined,\n phase1Output: run.phase1Output,\n deterministicScores: run.scores,\n typeResult: run.typeResult,\n domainResults: getDomainResults(runId),\n stageOutputs: getAllStageOutputs(runId) as CanonicalStageOutputs,\n });\n\n const result = {\n status: 'ok',\n runId,\n kind: parsed.data.kind,\n ...(parsed.data.domain ? { domain: parsed.data.domain } : {}),\n data,\n };\n\n // Write to file to avoid bloating agent context via stdout\n const tmpDir = join(getPluginDataDir(), 'tmp');\n await mkdir(tmpDir, { recursive: true });\n const label = parsed.data.domain ? `${parsed.data.kind}-${parsed.data.domain}` : parsed.data.kind;\n const outputFile = join(tmpDir, `context-${label}.json`);\n await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8');\n\n return JSON.stringify({\n status: 'ok',\n runId,\n kind: parsed.data.kind,\n ...(parsed.data.domain ? { domain: parsed.data.domain } : {}),\n outputFile,\n message: `Prompt context written to ${outputFile}.`,\n });\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: error instanceof Error ? error.message : 'Failed to build prompt context.',\n });\n }\n}\n","/**\n * Prompt Context Builders\n *\n * Produces stage- and domain-specific prompt payloads from the current\n * canonical run state so skills no longer need to reread the raw Phase 1 file.\n *\n * @module plugin/lib/prompt-context\n */\n\nimport type {\n CanonicalStageOutputs,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n ParsedSession,\n Phase1Output,\n} from './core/types.js';\nimport { CONTEXT_WINDOW_SIZE } from './core/types.js';\n\nexport const PROMPT_CONTEXT_KINDS = [\n 'sessionSummaries',\n 'domainAnalysis',\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n 'translation',\n] as const;\n\nexport type PromptContextKind = typeof PROMPT_CONTEXT_KINDS[number];\n\nexport type PromptContextDomain =\n | 'aiPartnership'\n | 'sessionCraft'\n | 'toolMastery'\n | 'skillResilience'\n | 'sessionMastery';\n\ninterface PromptContextInput {\n kind: PromptContextKind;\n phase1Output: Phase1Output;\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n domain?: PromptContextDomain;\n}\n\ntype SessionMessageWithMeta = ParsedSession['messages'][number] & {\n isMeta?: boolean;\n};\n\nconst SKILL_INJECTION_PREFIX = 'Base directory for this skill:';\n\nfunction trimText(text: string | undefined, maxChars: number): string {\n if (!text) return '';\n if (text.length <= maxChars) return text;\n return `${text.slice(0, maxChars - 1)}…`;\n}\n\nfunction isAnalyzablePromptContextUserMessage(message: SessionMessageWithMeta): boolean {\n return message.role === 'user'\n && !message.isMeta\n && typeof message.sourceToolUseID !== 'string'\n && message.toolUseResult === undefined\n && !message.content.trim().startsWith(SKILL_INJECTION_PREFIX);\n}\n\nfunction trimMessages(\n messages: ParsedSession['messages'],\n maxMessages: number,\n maxChars: number,\n) {\n return messages.slice(0, maxMessages).map((message) => ({\n role: message.role,\n timestamp: message.timestamp,\n content: trimText(message.content, maxChars),\n ...(Array.isArray(message.toolCalls) && message.toolCalls.length > 0\n ? {\n toolCalls: message.toolCalls.slice(0, 5).map((toolCall) => ({\n id: toolCall.id,\n name: toolCall.name,\n ...(toolCall.isError ? { isError: true } : {}),\n })),\n }\n : {}),\n ...(message.tokenUsage ? { tokenUsage: message.tokenUsage } : {}),\n }));\n}\n\n// Caps to keep domainAnalysis payloads under ~80k tokens for haiku-class models.\n// Tune these if analysis quality degrades or rate limits persist.\nconst MAX_UTTERANCES = 300;\nconst MAX_INTERACTION_SNAPSHOTS = 200;\nconst MAX_SESSION_OVERVIEWS = 40;\n\nfunction buildTrimmedDeveloperUtterances(\n phase1Output: Phase1Output,\n maxChars: number,\n) {\n return phase1Output.developerUtterances.slice(0, MAX_UTTERANCES).map((utterance) => ({\n id: utterance.id,\n text: trimText(utterance.displayText || utterance.text, maxChars),\n sessionId: utterance.sessionId,\n turnIndex: utterance.turnIndex,\n characterCount: utterance.characterCount,\n wordCount: utterance.wordCount,\n hasCodeBlock: utterance.hasCodeBlock,\n hasQuestion: utterance.hasQuestion,\n isSessionStart: utterance.isSessionStart,\n isContinuation: utterance.isContinuation,\n precedingAIToolCalls: utterance.precedingAIToolCalls?.slice(0, 8),\n precedingAIHadError: utterance.precedingAIHadError,\n timestamp: utterance.timestamp,\n }));\n}\n\nfunction asSessionMessageWithMeta(\n message: ParsedSession['messages'][number],\n): SessionMessageWithMeta {\n return message as SessionMessageWithMeta;\n}\n\nfunction buildSessionOverviews(phase1Output: Phase1Output) {\n return (phase1Output.sessions ?? []).slice(0, MAX_SESSION_OVERVIEWS).map((session) => {\n const messages = session.messages.map(asSessionMessageWithMeta);\n const userMessages = messages.filter(isAnalyzablePromptContextUserMessage);\n const assistantMessages = messages.filter((message) => message.role === 'assistant');\n const firstAssistant = assistantMessages[0];\n const toolSequence = assistantMessages\n .flatMap((message) => message.toolCalls?.map((toolCall) => toolCall.name) ?? [])\n .filter((toolName, index, all) => all.indexOf(toolName) === index)\n .slice(0, 10);\n const peakAssistantInputTokens = assistantMessages.reduce(\n (max, message) => Math.max(max, message.tokenUsage?.input ?? 0),\n 0,\n );\n const peakContextFillPercent = peakAssistantInputTokens > 0\n ? Math.round((peakAssistantInputTokens / CONTEXT_WINDOW_SIZE) * 1000) / 10\n : undefined;\n\n return {\n sessionId: session.sessionId,\n projectName: session.projectName ?? 'unknown',\n startTime: session.startTime,\n endTime: session.endTime,\n durationSeconds: session.durationSeconds,\n stats: {\n userMessageCount: userMessages.length,\n assistantMessageCount: assistantMessages.length,\n toolCallCount: session.stats.toolCallCount,\n uniqueToolsUsed: session.stats.uniqueToolsUsed,\n totalInputTokens: session.stats.totalInputTokens,\n totalOutputTokens: session.stats.totalOutputTokens,\n },\n firstUserMessage: trimText(userMessages[0]?.content, 220),\n firstAssistantPreview: trimText(firstAssistant?.content, 220),\n firstAssistantAskedQuestion: Boolean(firstAssistant?.content?.includes('?')),\n assistantErrorCount: assistantMessages.reduce(\n (count, message) => count + (message.toolCalls?.some((toolCall) => toolCall.isError) ? 1 : 0),\n 0,\n ),\n toolSequence,\n peakContextFillPercent,\n };\n });\n}\n\nfunction buildInteractionSnapshots(\n phase1Output: Phase1Output,\n options?: { maxUserChars?: number; maxAssistantChars?: number },\n) {\n const { maxUserChars = 260, maxAssistantChars = 220 } = options ?? {};\n\n const snapshots = (phase1Output.sessions ?? []).flatMap((session) => {\n const messages = session.messages.map(asSessionMessageWithMeta);\n return messages.flatMap((message, index) => {\n if (!isAnalyzablePromptContextUserMessage(message)) {\n return [];\n }\n\n const precedingAssistant = [...messages.slice(0, index)]\n .reverse()\n .find((candidate) => candidate.role === 'assistant');\n\n return [{\n utteranceId: `${session.sessionId}_${index}`,\n sessionId: session.sessionId,\n projectName: session.projectName ?? 'unknown',\n turnIndex: index,\n text: trimText(message.content, maxUserChars),\n characterCount: message.content.length,\n hasQuestion: message.content.includes('?'),\n isSessionStart: !messages.slice(0, index).some(isAnalyzablePromptContextUserMessage),\n precedingAssistantPreview: trimText(precedingAssistant?.content, maxAssistantChars),\n precedingAssistantLength: precedingAssistant?.content?.length ?? 0,\n precedingAssistantHadCodeBlock: Boolean(precedingAssistant?.content?.includes('```')),\n precedingAIToolCalls: precedingAssistant?.toolCalls?.map((toolCall) => toolCall.name).slice(0, 8),\n precedingAIHadError: precedingAssistant?.toolCalls?.some((toolCall) => toolCall.isError) ?? false,\n }];\n });\n });\n\n return snapshots.slice(0, MAX_INTERACTION_SNAPSHOTS);\n}\n\nfunction buildUtteranceLookup(phase1Output: Phase1Output): Record {\n return Object.fromEntries(\n phase1Output.developerUtterances.map((utterance) => [\n utterance.id,\n utterance.displayText || utterance.text,\n ]),\n );\n}\n\nfunction buildTrimmedSessionInput(phase1Output: Phase1Output) {\n return (phase1Output.sessions ?? []).map((session) => ({\n sessionId: session.sessionId,\n projectPath: session.projectPath,\n projectName: session.projectName ?? 'unknown',\n startTime: session.startTime,\n endTime: session.endTime,\n durationSeconds: session.durationSeconds,\n source: session.source,\n stats: session.stats,\n messages: trimMessages(session.messages, 12, 700),\n }));\n}\n\nfunction buildCondensedDomainResults(\n domainResults: DomainResult[],\n options?: {\n maxStrengths?: number;\n maxGrowthAreas?: number;\n maxDescriptionChars?: number;\n maxRecommendationChars?: number;\n },\n) {\n const {\n maxStrengths = 2,\n maxGrowthAreas = 2,\n maxDescriptionChars = 420,\n maxRecommendationChars = 260,\n } = options ?? {};\n\n return domainResults.map((result) => ({\n domain: result.domain,\n overallScore: result.overallScore,\n confidenceScore: result.confidenceScore,\n strengths: result.strengths.slice(0, maxStrengths).map((strength) => ({\n title: strength.title,\n description: trimText(strength.description, maxDescriptionChars),\n evidenceCount: strength.evidence.length,\n })),\n growthAreas: result.growthAreas.slice(0, maxGrowthAreas).map((growthArea) => ({\n title: growthArea.title,\n description: trimText(growthArea.description, maxDescriptionChars),\n severity: growthArea.severity,\n recommendation: trimText(growthArea.recommendation, maxRecommendationChars),\n evidenceCount: growthArea.evidence.length,\n })),\n analyzedAt: result.analyzedAt,\n }));\n}\n\nfunction buildCondensedContentWriterStageOutputs(stageOutputs: CanonicalStageOutputs) {\n return {\n typeClassification: stageOutputs.typeClassification\n ? {\n collaborationMaturity: stageOutputs.typeClassification.collaborationMaturity,\n reasoning: stageOutputs.typeClassification.reasoning.slice(0, 1).map((paragraph) => trimText(paragraph, 500)),\n personalityNarrative: stageOutputs.typeClassification.personalityNarrative\n .slice(0, 1)\n .map((paragraph) => trimText(paragraph, 500)),\n }\n : undefined,\n weeklyInsights: stageOutputs.weeklyInsights\n ? {\n stats: stageOutputs.weeklyInsights.stats,\n projects: stageOutputs.weeklyInsights.projects,\n topSessions: stageOutputs.weeklyInsights.topSessions,\n narrative: trimText(stageOutputs.weeklyInsights.narrative, 600),\n highlights: stageOutputs.weeklyInsights.highlights.slice(0, 5).map((item) => trimText(item, 180)),\n }\n : undefined,\n projectSummaries: stageOutputs.projectSummaries,\n evidenceVerification: stageOutputs.evidenceVerification\n ? {\n threshold: stageOutputs.evidenceVerification.threshold,\n domainStats: stageOutputs.evidenceVerification.domainStats,\n verifiedEvidenceCount: stageOutputs.evidenceVerification.verifiedResults.length,\n }\n : undefined,\n };\n}\n\nfunction buildThinkingQualityContext(phase1Output: Phase1Output) {\n return {\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 280),\n sessionMetrics: phase1Output.sessionMetrics,\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 260,\n maxAssistantChars: 200,\n }),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 20).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 180),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n };\n}\n\nfunction buildCommunicationContext(phase1Output: Phase1Output) {\n return {\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260),\n sessionMetrics: phase1Output.sessionMetrics,\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 220,\n maxAssistantChars: 160,\n }),\n };\n}\n\nfunction buildLearningContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260),\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 240,\n maxAssistantChars: 200,\n }),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 200),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n };\n}\n\nfunction buildEfficiencyContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 220,\n maxAssistantChars: 160,\n }),\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 240),\n };\n}\n\nfunction buildSessionOutcomeContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n };\n}\n\nfunction buildSessionMasteryContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 200,\n maxAssistantChars: 160,\n }),\n };\n}\n\nfunction buildDomainAnalysisContext(\n domain: PromptContextDomain,\n phase1Output: Phase1Output,\n deterministicScores: DeterministicScores,\n) {\n const base = {\n domain,\n deterministicScores,\n dateRange: phase1Output.sessionMetrics.dateRange,\n };\n\n switch (domain) {\n case 'aiPartnership':\n // Merged thinking + control: needs full interaction data + AI insight blocks\n return { ...base, phase1: {\n ...buildThinkingQualityContext(phase1Output),\n activitySessions: phase1Output.activitySessions ?? [],\n } };\n case 'sessionCraft':\n // Merged context efficiency + burnout: needs efficiency + learning context\n return { ...base, phase1: {\n ...buildEfficiencyContext(phase1Output),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 200),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n } };\n case 'toolMastery':\n return { ...base, phase1: buildCommunicationContext(phase1Output) };\n case 'skillResilience':\n // Cold-start, error recovery: needs session overviews + interaction data\n return { ...base, phase1: buildLearningContext(phase1Output) };\n case 'sessionMastery':\n // Absence scoring: needs session-level anti-pattern data\n return { ...base, phase1: buildSessionMasteryContext(phase1Output) };\n }\n}\n\nexport function buildPromptContext(input: PromptContextInput): Record {\n const {\n kind,\n phase1Output,\n deterministicScores,\n typeResult,\n domainResults,\n stageOutputs,\n domain,\n } = input;\n\n const base = {\n kind,\n availableDomains: domainResults.map((result) => result.domain),\n availableStages: Object.keys(stageOutputs).filter(\n (key) => stageOutputs[key as keyof CanonicalStageOutputs] !== undefined,\n ),\n };\n\n switch (kind) {\n case 'sessionSummaries':\n return {\n ...base,\n phase1: {\n sessionMetrics: phase1Output.sessionMetrics,\n sessions: buildTrimmedSessionInput(phase1Output),\n activitySessions: phase1Output.activitySessions ?? [],\n },\n };\n case 'domainAnalysis':\n if (!domain) {\n throw new Error('Domain is required when kind=domainAnalysis.');\n }\n return {\n ...base,\n ...buildDomainAnalysisContext(domain, phase1Output, deterministicScores),\n };\n case 'projectSummaries':\n return {\n ...base,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] },\n };\n case 'weeklyInsights':\n return {\n ...base,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] },\n };\n case 'typeClassification':\n return {\n ...base,\n deterministicScores,\n deterministicType: typeResult,\n sessionMetrics: phase1Output.sessionMetrics,\n domainResults: buildCondensedDomainResults(domainResults, {\n maxStrengths: 2,\n maxGrowthAreas: 2,\n maxDescriptionChars: 420,\n maxRecommendationChars: 260,\n }),\n };\n case 'evidenceVerification':\n return {\n ...base,\n utteranceLookup: buildUtteranceLookup(phase1Output),\n domainResults,\n };\n case 'contentWriter':\n return {\n ...base,\n deterministicType: typeResult,\n domainResults: buildCondensedDomainResults(domainResults, {\n maxStrengths: 2,\n maxGrowthAreas: 2,\n maxDescriptionChars: 520,\n maxRecommendationChars: 320,\n }),\n stageOutputs: buildCondensedContentWriterStageOutputs(stageOutputs),\n };\n case 'translation':\n return {\n ...base,\n languageSample: phase1Output.developerUtterances\n .slice(-50)\n .map((utterance) => utterance.displayText || utterance.text),\n deterministicType: typeResult,\n domainResults,\n stageOutputs,\n };\n }\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/get-run-progress-O6LL2U2R.js b/packages/plugin/dist/get-run-progress-O6LL2U2R.js new file mode 100644 index 00000000..1a62b37a --- /dev/null +++ b/packages/plugin/dist/get-run-progress-O6LL2U2R.js @@ -0,0 +1,133 @@ +import { + getAnalysisRun, + getCurrentRunId, + getDomainResult, + getStageOutput, + getStageStatuses +} from "./chunk-T2XRMW7B.js"; +import "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/get-run-progress.ts +var DOMAIN_STAGE_NAMES = /* @__PURE__ */ new Set([ + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery" +]); +var REQUIRED_STAGE_SEQUENCE = [ + { stage: "sessionSummaries", skill: "summarize-sessions", tool: null, kind: "stage" }, + { stage: "extractAiPartnership", skill: "extract-ai-partnership", tool: null, kind: "stage" }, + { stage: "extractSessionCraft", skill: "extract-session-craft", tool: null, kind: "stage" }, + { stage: "extractToolMastery", skill: "extract-tool-mastery", tool: null, kind: "stage" }, + { stage: "extractSkillResilience", skill: "extract-skill-resilience", tool: null, kind: "stage" }, + { stage: "extractSessionMastery", skill: "extract-session-mastery", tool: null, kind: "stage" }, + { stage: "aiPartnership", skill: "write-ai-partnership", tool: null, kind: "domain" }, + { stage: "sessionCraft", skill: "write-session-craft", tool: null, kind: "domain" }, + { stage: "toolMastery", skill: "write-tool-mastery", tool: null, kind: "domain" }, + { stage: "skillResilience", skill: "write-skill-resilience", tool: null, kind: "domain" }, + { stage: "sessionMastery", skill: "write-session-mastery", tool: null, kind: "domain" }, + { stage: "projectSummaries", skill: "summarize-projects", tool: null, kind: "stage" }, + { stage: "weeklyInsights", skill: "generate-weekly-insights", tool: null, kind: "stage" }, + { stage: "deterministicType", skill: null, tool: "classify-developer-type", kind: "stage" }, + { stage: "typeClassification", skill: "classify-type", tool: null, kind: "stage" }, + { stage: "evidenceVerification", skill: null, tool: "verify-evidence", kind: "stage" }, + { stage: "contentWriter", skill: "write-content", tool: null, kind: "stage" } +]; +function hasArtifact(runId, stage) { + if (stage === "deterministicType") { + return getAnalysisRun(runId)?.typeResult !== null; + } + if (DOMAIN_STAGE_NAMES.has(stage)) { + return getDomainResult(runId, stage) !== null; + } + return getStageOutput(runId, stage) !== null; +} +function buildStepStatus(runId, step, statusLookup) { + const savedStatus = statusLookup.get(step.stage); + const artifactPresent = hasArtifact(runId, step.stage); + if (savedStatus) { + return { + stage: step.stage, + skill: step.skill, + tool: step.tool, + kind: step.kind, + status: savedStatus.status, + completed: savedStatus.status === "validated", + hasArtifact: artifactPresent, + attemptCount: savedStatus.attemptCount, + lastError: savedStatus.lastError, + updatedAt: savedStatus.updatedAt + }; + } + return { + stage: step.stage, + skill: step.skill, + tool: step.tool, + kind: step.kind, + status: artifactPresent ? "validated" : "missing", + completed: artifactPresent, + hasArtifact: artifactPresent, + attemptCount: 0, + lastError: null, + updatedAt: null + }; +} +async function execute(_args) { + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "no_run", + message: "No active analysis run. Start Phase 1 with scan-sessions and extract-data." + }); + } + const run = getAnalysisRun(runId); + if (!run?.phase1Output) { + return JSON.stringify({ + status: "no_run", + runId, + message: "The current run has no resumable Phase 1 data. Start Phase 1 again." + }); + } + const statusLookup = new Map( + getStageStatuses(runId).map((status) => [status.stage, status]) + ); + const stages = REQUIRED_STAGE_SEQUENCE.map((step) => buildStepStatus(runId, step, statusLookup)); + const nextIncomplete = stages.find((stage) => !stage.completed); + const completedRequiredStages = stages.filter((stage) => stage.completed).length; + const projectNames = Array.from( + new Set( + (run.phase1Output.sessions ?? []).map((session) => session.projectName).filter((name) => typeof name === "string" && name.length > 0) + ) + ).sort(); + const pendingStages = stages.filter((stage) => !stage.completed).map(({ stage, skill, tool, kind, status, lastError }) => ({ + stage, + skill, + tool, + kind, + status, + ...lastError ? { lastError } : {} + })); + const nextStep = nextIncomplete ? { stage: nextIncomplete.stage, skill: nextIncomplete.skill, tool: nextIncomplete.tool, kind: nextIncomplete.kind } : { stage: "generateReport", skill: null, tool: "generate-report", kind: "report" }; + return JSON.stringify({ + status: "ok", + runId, + analyzedAt: run.analyzedAt, + phase1Complete: true, + sessionCount: run.phase1Output.sessionMetrics.totalSessions, + projectNames, + completionStatus: nextIncomplete ? "incomplete" : "complete", + completedRequiredStages, + totalRequiredStages: REQUIRED_STAGE_SEQUENCE.length, + completedDomainCount: stages.filter((stage) => DOMAIN_STAGE_NAMES.has(stage.stage) && stage.completed).length, + totalDomainCount: DOMAIN_STAGE_NAMES.size, + nextStep, + pendingStages, + message: nextIncomplete ? `Run #${runId} is incomplete (${completedRequiredStages}/${REQUIRED_STAGE_SEQUENCE.length}). Resume with ${nextStep.tool ?? nextStep.skill ?? nextStep.stage}.` : `Run #${runId} already has all required stages. Ready to generate report.` + }); +} +export { + execute +}; +//# sourceMappingURL=get-run-progress-O6LL2U2R.js.map \ No newline at end of file diff --git a/packages/plugin/dist/get-run-progress-O6LL2U2R.js.map b/packages/plugin/dist/get-run-progress-O6LL2U2R.js.map new file mode 100644 index 00000000..73b1f3b2 --- /dev/null +++ b/packages/plugin/dist/get-run-progress-O6LL2U2R.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/get-run-progress.ts"],"sourcesContent":["/**\n * get-run-progress CLI command\n *\n * Reports resumable progress for the current local analysis run.\n * Contains the computeRunProgress logic (extracted from MCP tool).\n *\n * Usage: betterprompt-cli get-run-progress\n */\n\nimport {\n getAnalysisRun,\n getCurrentRunId,\n getDomainResult,\n} from '../../lib/results-db.js';\nimport {\n getStageOutput,\n getStageStatuses,\n type StageLifecycleStatus,\n} from '../../lib/stage-db.js';\n\nconst DOMAIN_STAGE_NAMES = new Set([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n]);\n\nconst REQUIRED_STAGE_SEQUENCE = [\n { stage: 'sessionSummaries', skill: 'summarize-sessions', tool: null, kind: 'stage' },\n { stage: 'extractAiPartnership', skill: 'extract-ai-partnership', tool: null, kind: 'stage' },\n { stage: 'extractSessionCraft', skill: 'extract-session-craft', tool: null, kind: 'stage' },\n { stage: 'extractToolMastery', skill: 'extract-tool-mastery', tool: null, kind: 'stage' },\n { stage: 'extractSkillResilience', skill: 'extract-skill-resilience', tool: null, kind: 'stage' },\n { stage: 'extractSessionMastery', skill: 'extract-session-mastery', tool: null, kind: 'stage' },\n { stage: 'aiPartnership', skill: 'write-ai-partnership', tool: null, kind: 'domain' },\n { stage: 'sessionCraft', skill: 'write-session-craft', tool: null, kind: 'domain' },\n { stage: 'toolMastery', skill: 'write-tool-mastery', tool: null, kind: 'domain' },\n { stage: 'skillResilience', skill: 'write-skill-resilience', tool: null, kind: 'domain' },\n { stage: 'sessionMastery', skill: 'write-session-mastery', tool: null, kind: 'domain' },\n { stage: 'projectSummaries', skill: 'summarize-projects', tool: null, kind: 'stage' },\n { stage: 'weeklyInsights', skill: 'generate-weekly-insights', tool: null, kind: 'stage' },\n { stage: 'deterministicType', skill: null, tool: 'classify-developer-type', kind: 'stage' },\n { stage: 'typeClassification', skill: 'classify-type', tool: null, kind: 'stage' },\n { stage: 'evidenceVerification', skill: null, tool: 'verify-evidence', kind: 'stage' },\n { stage: 'contentWriter', skill: 'write-content', tool: null, kind: 'stage' },\n] as const;\n\ntype RequiredStep = (typeof REQUIRED_STAGE_SEQUENCE)[number];\ntype StepStatus = StageLifecycleStatus | 'missing';\n\ninterface RunProgressStep {\n stage: string;\n skill: string | null;\n tool: string | null;\n kind: 'stage' | 'domain';\n status: StepStatus;\n completed: boolean;\n hasArtifact: boolean;\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\nfunction hasArtifact(runId: number, stage: string): boolean {\n if (stage === 'deterministicType') {\n return getAnalysisRun(runId)?.typeResult !== null;\n }\n if (DOMAIN_STAGE_NAMES.has(stage)) {\n return getDomainResult(runId, stage) !== null;\n }\n return getStageOutput(runId, stage) !== null;\n}\n\nfunction buildStepStatus(\n runId: number,\n step: RequiredStep,\n statusLookup: Map[number]>,\n): RunProgressStep {\n const savedStatus = statusLookup.get(step.stage);\n const artifactPresent = hasArtifact(runId, step.stage);\n\n if (savedStatus) {\n return {\n stage: step.stage,\n skill: step.skill,\n tool: step.tool,\n kind: step.kind,\n status: savedStatus.status,\n completed: savedStatus.status === 'validated',\n hasArtifact: artifactPresent,\n attemptCount: savedStatus.attemptCount,\n lastError: savedStatus.lastError,\n updatedAt: savedStatus.updatedAt,\n };\n }\n\n return {\n stage: step.stage,\n skill: step.skill,\n tool: step.tool,\n kind: step.kind,\n status: artifactPresent ? 'validated' : 'missing',\n completed: artifactPresent,\n hasArtifact: artifactPresent,\n attemptCount: 0,\n lastError: null,\n updatedAt: null,\n };\n}\n\nexport async function execute(_args: Record): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'no_run',\n message: 'No active analysis run. Start Phase 1 with scan-sessions and extract-data.',\n });\n }\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return JSON.stringify({\n status: 'no_run',\n runId,\n message: 'The current run has no resumable Phase 1 data. Start Phase 1 again.',\n });\n }\n\n const statusLookup = new Map(\n getStageStatuses(runId).map(status => [status.stage, status]),\n );\n const stages = REQUIRED_STAGE_SEQUENCE.map(step => buildStepStatus(runId, step, statusLookup));\n const nextIncomplete = stages.find(stage => !stage.completed);\n const completedRequiredStages = stages.filter(stage => stage.completed).length;\n const projectNames = Array.from(\n new Set(\n (run.phase1Output.sessions ?? [])\n .map(session => session.projectName)\n .filter((name): name is string => typeof name === 'string' && name.length > 0),\n ),\n ).sort();\n\n const pendingStages = stages\n .filter(stage => !stage.completed)\n .map(({ stage, skill, tool, kind, status, lastError }) => ({\n stage, skill, tool, kind, status,\n ...(lastError ? { lastError } : {}),\n }));\n\n const nextStep = nextIncomplete\n ? { stage: nextIncomplete.stage, skill: nextIncomplete.skill, tool: nextIncomplete.tool, kind: nextIncomplete.kind }\n : { stage: 'generateReport', skill: null, tool: 'generate-report', kind: 'report' as const };\n\n return JSON.stringify({\n status: 'ok',\n runId,\n analyzedAt: run.analyzedAt,\n phase1Complete: true,\n sessionCount: run.phase1Output.sessionMetrics.totalSessions,\n projectNames,\n completionStatus: nextIncomplete ? 'incomplete' : 'complete',\n completedRequiredStages,\n totalRequiredStages: REQUIRED_STAGE_SEQUENCE.length,\n completedDomainCount: stages.filter(stage => DOMAIN_STAGE_NAMES.has(stage.stage) && stage.completed).length,\n totalDomainCount: DOMAIN_STAGE_NAMES.size,\n nextStep,\n pendingStages,\n message: nextIncomplete\n ? `Run #${runId} is incomplete (${completedRequiredStages}/${REQUIRED_STAGE_SEQUENCE.length}). Resume with ${nextStep.tool ?? nextStep.skill ?? nextStep.stage}.`\n : `Run #${runId} already has all required stages. Ready to generate report.`,\n });\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/get-stage-output-RZT4A4FD.js b/packages/plugin/dist/get-stage-output-RZT4A4FD.js new file mode 100644 index 00000000..f46e26e5 --- /dev/null +++ b/packages/plugin/dist/get-stage-output-RZT4A4FD.js @@ -0,0 +1,61 @@ +import { + getAllStageOutputs, + getCurrentRunId, + getStageOutput +} from "./chunk-T2XRMW7B.js"; +import { + getPluginDataDir +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/get-stage-output.ts +import { writeFile, mkdir } from "fs/promises"; +import { join } from "path"; +async function execute(args) { + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first." + }); + } + const tmpDir = join(getPluginDataDir(), "tmp"); + await mkdir(tmpDir, { recursive: true }); + if (typeof args.stage === "string") { + const data = getStageOutput(runId, args.stage); + if (!data) { + return JSON.stringify({ + status: "not_found", + stage: args.stage, + runId, + message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.` + }); + } + const result2 = { status: "ok", stage: args.stage, runId, data }; + const outputFile2 = join(tmpDir, `stage-${args.stage}.json`); + await writeFile(outputFile2, JSON.stringify(result2, null, 2), "utf-8"); + return JSON.stringify({ + status: "ok", + stage: args.stage, + runId, + outputFile: outputFile2, + message: `Stage output written to ${outputFile2}.` + }); + } + const all = getAllStageOutputs(runId); + const stages = Object.keys(all); + const result = { status: "ok", runId, stagesAvailable: stages, data: all }; + const outputFile = join(tmpDir, "stage-all.json"); + await writeFile(outputFile, JSON.stringify(result, null, 2), "utf-8"); + return JSON.stringify({ + status: "ok", + runId, + stagesAvailable: stages, + outputFile, + message: `All stage outputs written to ${outputFile}.` + }); +} +export { + execute +}; +//# sourceMappingURL=get-stage-output-RZT4A4FD.js.map \ No newline at end of file diff --git a/packages/plugin/dist/get-stage-output-RZT4A4FD.js.map b/packages/plugin/dist/get-stage-output-RZT4A4FD.js.map new file mode 100644 index 00000000..57e0a376 --- /dev/null +++ b/packages/plugin/dist/get-stage-output-RZT4A4FD.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/get-stage-output.ts"],"sourcesContent":["/**\n * get-stage-output CLI command\n *\n * Reads a previously saved pipeline stage output. Writes large output to file.\n *\n * Usage: betterprompt-cli get-stage-output [--stage sessionSummaries]\n */\n\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { getCurrentRunId } from '../../lib/results-db.js';\nimport { getStageOutput, getAllStageOutputs } from '../../lib/stage-db.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\n\nexport async function execute(args: Record): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first.',\n });\n }\n\n const tmpDir = join(getPluginDataDir(), 'tmp');\n await mkdir(tmpDir, { recursive: true });\n\n if (typeof args.stage === 'string') {\n const data = getStageOutput(runId, args.stage);\n if (!data) {\n return JSON.stringify({\n status: 'not_found',\n stage: args.stage,\n runId,\n message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.`,\n });\n }\n\n const result = { status: 'ok', stage: args.stage, runId, data };\n const outputFile = join(tmpDir, `stage-${args.stage}.json`);\n await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8');\n\n return JSON.stringify({\n status: 'ok',\n stage: args.stage,\n runId,\n outputFile,\n message: `Stage output written to ${outputFile}.`,\n });\n }\n\n const all = getAllStageOutputs(runId);\n const stages = Object.keys(all);\n const result = { status: 'ok', runId, stagesAvailable: stages, data: all };\n const outputFile = join(tmpDir, 'stage-all.json');\n await writeFile(outputFile, JSON.stringify(result, null, 2), 'utf-8');\n\n return JSON.stringify({\n status: 'ok',\n runId,\n stagesAvailable: stages,\n outputFile,\n message: `All stage outputs written to ${outputFile}.`,\n });\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAS,WAAW,aAAa;AACjC,SAAS,YAAY;AAKrB,eAAsB,QAAQ,MAAgD;AAC5E,QAAM,QAAQ,gBAAgB;AAE9B,MAAI,CAAC,OAAO;AACV,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,KAAK,iBAAiB,GAAG,KAAK;AAC7C,QAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAEvC,MAAI,OAAO,KAAK,UAAU,UAAU;AAClC,UAAM,OAAO,eAAe,OAAO,KAAK,KAAK;AAC7C,QAAI,CAAC,MAAM;AACT,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,SAAS,MAAM,KAAK,KAAK,0BAA0B,KAAK;AAAA,MAC1D,CAAC;AAAA,IACH;AAEA,UAAMA,UAAS,EAAE,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,KAAK;AAC9D,UAAMC,cAAa,KAAK,QAAQ,SAAS,KAAK,KAAK,OAAO;AAC1D,UAAM,UAAUA,aAAY,KAAK,UAAUD,SAAQ,MAAM,CAAC,GAAG,OAAO;AAEpE,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,OAAO,KAAK;AAAA,MACZ;AAAA,MACA,YAAAC;AAAA,MACA,SAAS,2BAA2BA,WAAU;AAAA,IAChD,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,mBAAmB,KAAK;AACpC,QAAM,SAAS,OAAO,KAAK,GAAG;AAC9B,QAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,iBAAiB,QAAQ,MAAM,IAAI;AACzE,QAAM,aAAa,KAAK,QAAQ,gBAAgB;AAChD,QAAM,UAAU,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAEpE,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA,SAAS,gCAAgC,UAAU;AAAA,EACrD,CAAC;AACH;","names":["result","outputFile"]} \ No newline at end of file diff --git a/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js b/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js new file mode 100644 index 00000000..908e7b8f --- /dev/null +++ b/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js @@ -0,0 +1,20 @@ +import { + readPrefs +} from "./chunk-IQ4EWBXE.js"; +import "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/get-user-prefs.ts +async function execute(_args) { + return JSON.stringify({ + status: "ok", + prefs: readPrefs(), + message: "Loaded BetterPrompt user preferences." + }); +} +export { + execute +}; +//# sourceMappingURL=get-user-prefs-Z4HGQUNP.js.map \ No newline at end of file diff --git a/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js.map b/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js.map new file mode 100644 index 00000000..af1d2dcd --- /dev/null +++ b/packages/plugin/dist/get-user-prefs-Z4HGQUNP.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/get-user-prefs.ts"],"sourcesContent":["/**\n * get-user-prefs CLI command\n *\n * Reads BetterPrompt user preferences.\n *\n * Usage: betterprompt-cli get-user-prefs\n */\n\nimport { readPrefs } from '../../lib/prefs.js';\n\nexport async function execute(_args: Record): Promise {\n return JSON.stringify({\n status: 'ok',\n prefs: readPrefs(),\n message: 'Loaded BetterPrompt user preferences.',\n });\n}\n"],"mappings":";;;;;;;;;AAUA,eAAsB,QAAQ,OAAiD;AAC7E,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR,OAAO,UAAU;AAAA,IACjB,SAAS;AAAA,EACX,CAAC;AACH;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/hooks/post-session-handler.js b/packages/plugin/dist/hooks/post-session-handler.js index 55ffd0c6..96b7c846 100755 --- a/packages/plugin/dist/hooks/post-session-handler.js +++ b/packages/plugin/dist/hooks/post-session-handler.js @@ -4,14 +4,18 @@ import { isInFlightTranscriptBoundary } from "../chunk-VADEIFYQ.js"; import { - getConfig, markAnalysisPending, recoverStaleAnalysisState, shouldTriggerAnalysis -} from "../chunk-SUEN2LKX.js"; +} from "../chunk-VXUKPHXP.js"; +import { + getConfig +} from "../chunk-FIGO7IPG.js"; import { debug -} from "../chunk-PP5673GG.js"; +} from "../chunk-FW6ZW4J3.js"; +import "../chunk-UORQZYNI.js"; +import "../chunk-NSBPE2FW.js"; // hooks/post-session-handler.ts import { readFileSync } from "fs"; diff --git a/packages/plugin/dist/hooks/post-session-handler.js.map b/packages/plugin/dist/hooks/post-session-handler.js.map index 4e932795..8cce3b10 100644 --- a/packages/plugin/dist/hooks/post-session-handler.js.map +++ b/packages/plugin/dist/hooks/post-session-handler.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../hooks/post-session-handler.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Session End Hook Handler\n *\n * Called by Claude Code when a session ends.\n * Checks debounce rules and marks analysis as pending for the next session.\n *\n * DEFERRED QUEUE PATTERN:\n * Instead of spawning a detached background process (which has no LLM host),\n * this hook simply marks analysis as \"pending\" in plugin-state.json.\n * The next Claude Code session detects the pending flag and runs the full\n * skill-based analysis pipeline with Claude Code as the LLM host.\n *\n * Exit codes:\n * 0 = hook ran successfully (analysis may or may not have been queued)\n * 1 = unexpected error\n *\n * This must be fast because SessionEnd hooks default to a 1.5s timeout.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { getConfig } from '../lib/config.js';\nimport {\n markAnalysisPending,\n recoverStaleAnalysisState,\n shouldTriggerAnalysis,\n} from '../lib/debounce.js';\nimport {\n estimateSessionDurationMsFromTranscript,\n isInFlightTranscriptBoundary,\n} from '../lib/hook-utils.js';\nimport { debug } from '../lib/logger.js';\n\nexport interface SessionEndHookInput {\n transcript_path?: string;\n}\n\ninterface SessionEndHookDeps {\n getConfig: typeof getConfig;\n recoverStaleAnalysisState: typeof recoverStaleAnalysisState;\n shouldTriggerAnalysis: typeof shouldTriggerAnalysis;\n markAnalysisPending: typeof markAnalysisPending;\n estimateSessionDurationMsFromTranscript: typeof estimateSessionDurationMsFromTranscript;\n isInFlightTranscriptBoundary: typeof isInFlightTranscriptBoundary;\n}\n\nexport interface SessionEndHookResult {\n queued: boolean;\n reason: string;\n durationMs: number;\n}\n\nconst DEFAULT_DEPS: SessionEndHookDeps = {\n getConfig,\n recoverStaleAnalysisState,\n shouldTriggerAnalysis,\n markAnalysisPending,\n estimateSessionDurationMsFromTranscript,\n isInFlightTranscriptBoundary,\n};\n\nexport function readHookInput(raw?: string): SessionEndHookInput {\n try {\n const payload = raw ?? readFileSync(0, 'utf-8').trim();\n return payload ? JSON.parse(payload) as SessionEndHookInput : {};\n } catch {\n return {};\n }\n}\n\nexport function resolveSessionDurationMs(\n hookInput: SessionEndHookInput,\n env: NodeJS.ProcessEnv,\n estimateDuration: (transcriptPath: string) => number = estimateSessionDurationMsFromTranscript,\n): number {\n return Number.parseInt(env.CLAUDE_SESSION_DURATION_MS ?? '0', 10)\n || (hookInput.transcript_path ? estimateDuration(hookInput.transcript_path) : 0);\n}\n\nexport function handleSessionEndHook(\n hookInput: SessionEndHookInput,\n deps: SessionEndHookDeps = DEFAULT_DEPS,\n env: NodeJS.ProcessEnv = process.env,\n): SessionEndHookResult {\n debug('hook', 'session-end');\n const config = deps.getConfig();\n\n // Skip if auto-analyze is disabled\n if (!config.autoAnalyze) {\n debug('hook', 'session-end: auto-analyze disabled');\n return {\n queued: false,\n reason: 'Auto-analysis disabled',\n durationMs: 0,\n };\n }\n\n const recoveredState = deps.recoverStaleAnalysisState({\n force: false,\n reason: 'Recovered stale running state on SessionEnd hook startup.',\n });\n\n const durationMs = resolveSessionDurationMs(\n hookInput,\n env,\n deps.estimateSessionDurationMsFromTranscript,\n );\n\n if (recoveredState.analysisState === 'running') {\n const stillActive = hookInput.transcript_path\n ? deps.isInFlightTranscriptBoundary(hookInput.transcript_path)\n : false;\n\n if (stillActive) {\n const reason = 'Analysis still appears to be mid-turn; skipping requeue for this SessionEnd event';\n debug('hook', 'session-end: running analysis still active, skipping requeue', { reason, durationMs });\n return {\n queued: false,\n reason,\n durationMs,\n };\n }\n\n const reason = 'Active analysis session ended before completion; queued resume for the next session';\n deps.markAnalysisPending();\n debug('hook', 'session-end: interrupted analysis re-queued', { reason, durationMs });\n return {\n queued: true,\n reason,\n durationMs,\n };\n }\n\n // Check debounce rules\n const result = deps.shouldTriggerAnalysis(durationMs);\n\n if (!result.shouldAnalyze) {\n debug('hook', 'session-end: analysis skipped', { reason: result.reason, durationMs });\n return {\n queued: false,\n reason: result.reason,\n durationMs,\n };\n }\n\n // Mark as pending for the next Claude Code session to pick up\n deps.markAnalysisPending();\n debug('hook', 'session-end: analysis queued', { reason: result.reason, durationMs });\n\n return {\n queued: true,\n reason: result.reason,\n durationMs,\n };\n}\n\nfunction main(): void {\n handleSessionEndHook(readHookInput());\n process.exit(0);\n}\n\nif (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {\n main();\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAqBA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAgC9B,IAAM,eAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc,KAAmC;AAC/D,MAAI;AACF,UAAM,UAAU,OAAO,aAAa,GAAG,OAAO,EAAE,KAAK;AACrD,WAAO,UAAU,KAAK,MAAM,OAAO,IAA2B,CAAC;AAAA,EACjE,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,yBACd,WACA,KACA,mBAAuD,yCAC/C;AACR,SAAO,OAAO,SAAS,IAAI,8BAA8B,KAAK,EAAE,MAC1D,UAAU,kBAAkB,iBAAiB,UAAU,eAAe,IAAI;AAClF;AAEO,SAAS,qBACd,WACA,OAA2B,cAC3B,MAAyB,QAAQ,KACX;AACtB,QAAM,QAAQ,aAAa;AAC3B,QAAM,SAAS,KAAK,UAAU;AAG9B,MAAI,CAAC,OAAO,aAAa;AACvB,UAAM,QAAQ,oCAAoC;AAClD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,iBAAiB,KAAK,0BAA0B;AAAA,IACpD,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,CAAC;AAED,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA,KAAK;AAAA,EACP;AAEA,MAAI,eAAe,kBAAkB,WAAW;AAC9C,UAAM,cAAc,UAAU,kBAC1B,KAAK,6BAA6B,UAAU,eAAe,IAC3D;AAEJ,QAAI,aAAa;AACf,YAAMA,UAAS;AACf,YAAM,QAAQ,gEAAgE,EAAE,QAAAA,SAAQ,WAAW,CAAC;AACpG,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAAA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS;AACf,SAAK,oBAAoB;AACzB,UAAM,QAAQ,+CAA+C,EAAE,QAAQ,WAAW,CAAC;AACnF,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,QAAM,SAAS,KAAK,sBAAsB,UAAU;AAEpD,MAAI,CAAC,OAAO,eAAe;AACzB,UAAM,QAAQ,iCAAiC,EAAE,QAAQ,OAAO,QAAQ,WAAW,CAAC;AACpF,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAGA,OAAK,oBAAoB;AACzB,QAAM,QAAQ,gCAAgC,EAAE,QAAQ,OAAO,QAAQ,WAAW,CAAC;AAEnF,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,OAAa;AACpB,uBAAqB,cAAc,CAAC;AACpC,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAI,QAAQ,KAAK,CAAC,KAAK,cAAc,YAAY,GAAG,MAAM,QAAQ,KAAK,CAAC,GAAG;AACzE,OAAK;AACP;","names":["reason"]} \ No newline at end of file +{"version":3,"sources":["../../hooks/post-session-handler.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Session End Hook Handler\n *\n * Called by Claude Code when a session ends.\n * Checks debounce rules and marks analysis as pending for the next session.\n *\n * DEFERRED QUEUE PATTERN:\n * Instead of spawning a detached background process (which has no LLM host),\n * this hook simply marks analysis as \"pending\" in plugin-state.json.\n * The next Claude Code session detects the pending flag and runs the full\n * skill-based analysis pipeline with Claude Code as the LLM host.\n *\n * Exit codes:\n * 0 = hook ran successfully (analysis may or may not have been queued)\n * 1 = unexpected error\n *\n * This must be fast because SessionEnd hooks default to a 1.5s timeout.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { getConfig } from '../lib/config.js';\nimport {\n markAnalysisPending,\n recoverStaleAnalysisState,\n shouldTriggerAnalysis,\n} from '../lib/debounce.js';\nimport {\n estimateSessionDurationMsFromTranscript,\n isInFlightTranscriptBoundary,\n} from '../lib/hook-utils.js';\nimport { debug } from '../lib/logger.js';\n\nexport interface SessionEndHookInput {\n transcript_path?: string;\n}\n\ninterface SessionEndHookDeps {\n getConfig: typeof getConfig;\n recoverStaleAnalysisState: typeof recoverStaleAnalysisState;\n shouldTriggerAnalysis: typeof shouldTriggerAnalysis;\n markAnalysisPending: typeof markAnalysisPending;\n estimateSessionDurationMsFromTranscript: typeof estimateSessionDurationMsFromTranscript;\n isInFlightTranscriptBoundary: typeof isInFlightTranscriptBoundary;\n}\n\nexport interface SessionEndHookResult {\n queued: boolean;\n reason: string;\n durationMs: number;\n}\n\nconst DEFAULT_DEPS: SessionEndHookDeps = {\n getConfig,\n recoverStaleAnalysisState,\n shouldTriggerAnalysis,\n markAnalysisPending,\n estimateSessionDurationMsFromTranscript,\n isInFlightTranscriptBoundary,\n};\n\nexport function readHookInput(raw?: string): SessionEndHookInput {\n try {\n const payload = raw ?? readFileSync(0, 'utf-8').trim();\n return payload ? JSON.parse(payload) as SessionEndHookInput : {};\n } catch {\n return {};\n }\n}\n\nexport function resolveSessionDurationMs(\n hookInput: SessionEndHookInput,\n env: NodeJS.ProcessEnv,\n estimateDuration: (transcriptPath: string) => number = estimateSessionDurationMsFromTranscript,\n): number {\n return Number.parseInt(env.CLAUDE_SESSION_DURATION_MS ?? '0', 10)\n || (hookInput.transcript_path ? estimateDuration(hookInput.transcript_path) : 0);\n}\n\nexport function handleSessionEndHook(\n hookInput: SessionEndHookInput,\n deps: SessionEndHookDeps = DEFAULT_DEPS,\n env: NodeJS.ProcessEnv = process.env,\n): SessionEndHookResult {\n debug('hook', 'session-end');\n const config = deps.getConfig();\n\n // Skip if auto-analyze is disabled\n if (!config.autoAnalyze) {\n debug('hook', 'session-end: auto-analyze disabled');\n return {\n queued: false,\n reason: 'Auto-analysis disabled',\n durationMs: 0,\n };\n }\n\n const recoveredState = deps.recoverStaleAnalysisState({\n force: false,\n reason: 'Recovered stale running state on SessionEnd hook startup.',\n });\n\n const durationMs = resolveSessionDurationMs(\n hookInput,\n env,\n deps.estimateSessionDurationMsFromTranscript,\n );\n\n if (recoveredState.analysisState === 'running') {\n const stillActive = hookInput.transcript_path\n ? deps.isInFlightTranscriptBoundary(hookInput.transcript_path)\n : false;\n\n if (stillActive) {\n const reason = 'Analysis still appears to be mid-turn; skipping requeue for this SessionEnd event';\n debug('hook', 'session-end: running analysis still active, skipping requeue', { reason, durationMs });\n return {\n queued: false,\n reason,\n durationMs,\n };\n }\n\n const reason = 'Active analysis session ended before completion; queued resume for the next session';\n deps.markAnalysisPending();\n debug('hook', 'session-end: interrupted analysis re-queued', { reason, durationMs });\n return {\n queued: true,\n reason,\n durationMs,\n };\n }\n\n // Check debounce rules\n const result = deps.shouldTriggerAnalysis(durationMs);\n\n if (!result.shouldAnalyze) {\n debug('hook', 'session-end: analysis skipped', { reason: result.reason, durationMs });\n return {\n queued: false,\n reason: result.reason,\n durationMs,\n };\n }\n\n // Mark as pending for the next Claude Code session to pick up\n deps.markAnalysisPending();\n debug('hook', 'session-end: analysis queued', { reason: result.reason, durationMs });\n\n return {\n queued: true,\n reason: result.reason,\n durationMs,\n };\n}\n\nfunction main(): void {\n handleSessionEndHook(readHookInput());\n process.exit(0);\n}\n\nif (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {\n main();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAgC9B,IAAM,eAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc,KAAmC;AAC/D,MAAI;AACF,UAAM,UAAU,OAAO,aAAa,GAAG,OAAO,EAAE,KAAK;AACrD,WAAO,UAAU,KAAK,MAAM,OAAO,IAA2B,CAAC;AAAA,EACjE,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,yBACd,WACA,KACA,mBAAuD,yCAC/C;AACR,SAAO,OAAO,SAAS,IAAI,8BAA8B,KAAK,EAAE,MAC1D,UAAU,kBAAkB,iBAAiB,UAAU,eAAe,IAAI;AAClF;AAEO,SAAS,qBACd,WACA,OAA2B,cAC3B,MAAyB,QAAQ,KACX;AACtB,QAAM,QAAQ,aAAa;AAC3B,QAAM,SAAS,KAAK,UAAU;AAG9B,MAAI,CAAC,OAAO,aAAa;AACvB,UAAM,QAAQ,oCAAoC;AAClD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,iBAAiB,KAAK,0BAA0B;AAAA,IACpD,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,CAAC;AAED,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA,KAAK;AAAA,EACP;AAEA,MAAI,eAAe,kBAAkB,WAAW;AAC9C,UAAM,cAAc,UAAU,kBAC1B,KAAK,6BAA6B,UAAU,eAAe,IAC3D;AAEJ,QAAI,aAAa;AACf,YAAMA,UAAS;AACf,YAAM,QAAQ,gEAAgE,EAAE,QAAAA,SAAQ,WAAW,CAAC;AACpG,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAAA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS;AACf,SAAK,oBAAoB;AACzB,UAAM,QAAQ,+CAA+C,EAAE,QAAQ,WAAW,CAAC;AACnF,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,QAAM,SAAS,KAAK,sBAAsB,UAAU;AAEpD,MAAI,CAAC,OAAO,eAAe;AACzB,UAAM,QAAQ,iCAAiC,EAAE,QAAQ,OAAO,QAAQ,WAAW,CAAC;AACpF,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAGA,OAAK,oBAAoB;AACzB,QAAM,QAAQ,gCAAgC,EAAE,QAAQ,OAAO,QAAQ,WAAW,CAAC;AAEnF,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,OAAa;AACpB,uBAAqB,cAAc,CAAC;AACpC,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAI,QAAQ,KAAK,CAAC,KAAK,cAAc,YAAY,GAAG,MAAM,QAAQ,KAAK,CAAC,GAAG;AACzE,OAAK;AACP;","names":["reason"]} \ No newline at end of file diff --git a/packages/plugin/dist/hooks/session-start-handler.js b/packages/plugin/dist/hooks/session-start-handler.js index e3d608ed..734bf9ce 100755 --- a/packages/plugin/dist/hooks/session-start-handler.js +++ b/packages/plugin/dist/hooks/session-start-handler.js @@ -1,10 +1,10 @@ #!/usr/bin/env node -import { - ensureNativeDeps -} from "../chunk-ZSMKKVNT.js"; import { isFirstRun -} from "../chunk-QFCYET5Y.js"; +} from "../chunk-IQ4EWBXE.js"; +import { + ensureNativeDeps +} from "../chunk-A6TBYMRP.js"; import { buildFirstRunAdditionalContext, buildPendingAnalysisAdditionalContext @@ -13,10 +13,13 @@ import { isAnalysisPending, markAnalysisPending, shouldResumeRunningAnalysis -} from "../chunk-SUEN2LKX.js"; +} from "../chunk-VXUKPHXP.js"; +import "../chunk-FIGO7IPG.js"; import { debug -} from "../chunk-PP5673GG.js"; +} from "../chunk-FW6ZW4J3.js"; +import "../chunk-UORQZYNI.js"; +import "../chunk-NSBPE2FW.js"; // hooks/session-start-handler.ts import { readFileSync } from "fs"; diff --git a/packages/plugin/dist/hooks/session-start-handler.js.map b/packages/plugin/dist/hooks/session-start-handler.js.map index 31c7a083..aab4a6c6 100644 --- a/packages/plugin/dist/hooks/session-start-handler.js.map +++ b/packages/plugin/dist/hooks/session-start-handler.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../hooks/session-start-handler.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Session Start Hook Handler\n *\n * Injects queued BetterPrompt auto-analysis context at session start so Claude\n * can consume the pending analysis run automatically in the next session.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport {\n isAnalysisPending,\n markAnalysisPending,\n shouldResumeRunningAnalysis,\n} from '../lib/debounce.js';\nimport { buildPendingAnalysisAdditionalContext, buildFirstRunAdditionalContext } from '../lib/hook-utils.js';\nimport { isFirstRun } from '../lib/prefs.js';\nimport { ensureNativeDeps } from '../lib/native-deps.js';\nimport { debug } from '../lib/logger.js';\n\nexport interface SessionStartHookInput {\n source?: 'startup' | 'resume' | 'clear' | 'compact';\n}\n\nexport interface SessionStartHookOutput {\n hookSpecificOutput: {\n hookEventName: 'SessionStart';\n additionalContext: string;\n };\n}\n\ninterface SessionStartHookDeps {\n isFirstRun: () => boolean;\n buildFirstRunAdditionalContext: () => string;\n isAnalysisPending: () => boolean;\n shouldResumeRunningAnalysis: () => boolean;\n markAnalysisPending: () => void;\n buildPendingAnalysisAdditionalContext: () => string;\n}\n\nconst DEFAULT_DEPS: SessionStartHookDeps = {\n isFirstRun,\n buildFirstRunAdditionalContext,\n isAnalysisPending,\n shouldResumeRunningAnalysis,\n markAnalysisPending,\n buildPendingAnalysisAdditionalContext,\n};\n\nexport function readHookInput(raw?: string): SessionStartHookInput {\n try {\n const payload = raw ?? readFileSync(0, 'utf-8').trim();\n return payload ? JSON.parse(payload) as SessionStartHookInput : {};\n } catch {\n return {};\n }\n}\n\nexport function handleSessionStartHook(\n input: SessionStartHookInput,\n deps: SessionStartHookDeps = DEFAULT_DEPS,\n): SessionStartHookOutput | null {\n debug('hook', 'session-start', { source: input.source });\n\n if (input.source === 'compact') {\n debug('hook', 'session-start: compact source, skipping');\n return null;\n }\n\n if (deps.isFirstRun()) {\n debug('hook', 'session-start: first run detected');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildFirstRunAdditionalContext(),\n },\n };\n }\n\n if (deps.shouldResumeRunningAnalysis()) {\n deps.markAnalysisPending();\n debug('hook', 'session-start: stale running analysis detected, converted to pending');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildPendingAnalysisAdditionalContext(),\n },\n };\n }\n\n if (deps.isAnalysisPending()) {\n debug('hook', 'session-start: pending analysis detected');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildPendingAnalysisAdditionalContext(),\n },\n };\n }\n\n debug('hook', 'session-start: no action needed');\n return null;\n}\n\nfunction main(): void {\n const pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');\n ensureNativeDeps({ pluginRoot });\n\n const output = handleSessionStartHook(readHookInput());\n if (!output) {\n process.exit(0);\n }\n\n process.stdout.write(JSON.stringify(output));\n}\n\nif (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {\n main();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AASA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AA+B9B,IAAM,eAAqC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc,KAAqC;AACjE,MAAI;AACF,UAAM,UAAU,OAAO,aAAa,GAAG,OAAO,EAAE,KAAK;AACrD,WAAO,UAAU,KAAK,MAAM,OAAO,IAA6B,CAAC;AAAA,EACnE,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,uBACd,OACA,OAA6B,cACE;AAC/B,QAAM,QAAQ,iBAAiB,EAAE,QAAQ,MAAM,OAAO,CAAC;AAEvD,MAAI,MAAM,WAAW,WAAW;AAC9B,UAAM,QAAQ,yCAAyC;AACvD,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,QAAQ,mCAAmC;AACjD,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,+BAA+B;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK,4BAA4B,GAAG;AACtC,SAAK,oBAAoB;AACzB,UAAM,QAAQ,sEAAsE;AACpF,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,sCAAsC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK,kBAAkB,GAAG;AAC5B,UAAM,QAAQ,0CAA0C;AACxD,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,sCAAsC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,iCAAiC;AAC/C,SAAO;AACT;AAEA,SAAS,OAAa;AACpB,QAAM,aAAa,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,MAAM,IAAI;AAC3E,mBAAiB,EAAE,WAAW,CAAC;AAE/B,QAAM,SAAS,uBAAuB,cAAc,CAAC;AACrD,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,OAAO,MAAM,KAAK,UAAU,MAAM,CAAC;AAC7C;AAEA,IAAI,QAAQ,KAAK,CAAC,KAAK,cAAc,YAAY,GAAG,MAAM,QAAQ,KAAK,CAAC,GAAG;AACzE,OAAK;AACP;","names":[]} \ No newline at end of file +{"version":3,"sources":["../../hooks/session-start-handler.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Session Start Hook Handler\n *\n * Injects queued BetterPrompt auto-analysis context at session start so Claude\n * can consume the pending analysis run automatically in the next session.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport {\n isAnalysisPending,\n markAnalysisPending,\n shouldResumeRunningAnalysis,\n} from '../lib/debounce.js';\nimport { buildPendingAnalysisAdditionalContext, buildFirstRunAdditionalContext } from '../lib/hook-utils.js';\nimport { isFirstRun } from '../lib/prefs.js';\nimport { ensureNativeDeps } from '../lib/native-deps.js';\nimport { debug } from '../lib/logger.js';\n\nexport interface SessionStartHookInput {\n source?: 'startup' | 'resume' | 'clear' | 'compact';\n}\n\nexport interface SessionStartHookOutput {\n hookSpecificOutput: {\n hookEventName: 'SessionStart';\n additionalContext: string;\n };\n}\n\ninterface SessionStartHookDeps {\n isFirstRun: () => boolean;\n buildFirstRunAdditionalContext: () => string;\n isAnalysisPending: () => boolean;\n shouldResumeRunningAnalysis: () => boolean;\n markAnalysisPending: () => void;\n buildPendingAnalysisAdditionalContext: () => string;\n}\n\nconst DEFAULT_DEPS: SessionStartHookDeps = {\n isFirstRun,\n buildFirstRunAdditionalContext,\n isAnalysisPending,\n shouldResumeRunningAnalysis,\n markAnalysisPending,\n buildPendingAnalysisAdditionalContext,\n};\n\nexport function readHookInput(raw?: string): SessionStartHookInput {\n try {\n const payload = raw ?? readFileSync(0, 'utf-8').trim();\n return payload ? JSON.parse(payload) as SessionStartHookInput : {};\n } catch {\n return {};\n }\n}\n\nexport function handleSessionStartHook(\n input: SessionStartHookInput,\n deps: SessionStartHookDeps = DEFAULT_DEPS,\n): SessionStartHookOutput | null {\n debug('hook', 'session-start', { source: input.source });\n\n if (input.source === 'compact') {\n debug('hook', 'session-start: compact source, skipping');\n return null;\n }\n\n if (deps.isFirstRun()) {\n debug('hook', 'session-start: first run detected');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildFirstRunAdditionalContext(),\n },\n };\n }\n\n if (deps.shouldResumeRunningAnalysis()) {\n deps.markAnalysisPending();\n debug('hook', 'session-start: stale running analysis detected, converted to pending');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildPendingAnalysisAdditionalContext(),\n },\n };\n }\n\n if (deps.isAnalysisPending()) {\n debug('hook', 'session-start: pending analysis detected');\n return {\n hookSpecificOutput: {\n hookEventName: 'SessionStart',\n additionalContext: deps.buildPendingAnalysisAdditionalContext(),\n },\n };\n }\n\n debug('hook', 'session-start: no action needed');\n return null;\n}\n\nfunction main(): void {\n const pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');\n ensureNativeDeps({ pluginRoot });\n\n const output = handleSessionStartHook(readHookInput());\n if (!output) {\n process.exit(0);\n }\n\n process.stdout.write(JSON.stringify(output));\n}\n\nif (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {\n main();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AASA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AA+B9B,IAAM,eAAqC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc,KAAqC;AACjE,MAAI;AACF,UAAM,UAAU,OAAO,aAAa,GAAG,OAAO,EAAE,KAAK;AACrD,WAAO,UAAU,KAAK,MAAM,OAAO,IAA6B,CAAC;AAAA,EACnE,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,uBACd,OACA,OAA6B,cACE;AAC/B,QAAM,QAAQ,iBAAiB,EAAE,QAAQ,MAAM,OAAO,CAAC;AAEvD,MAAI,MAAM,WAAW,WAAW;AAC9B,UAAM,QAAQ,yCAAyC;AACvD,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,QAAQ,mCAAmC;AACjD,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,+BAA+B;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK,4BAA4B,GAAG;AACtC,SAAK,oBAAoB;AACzB,UAAM,QAAQ,sEAAsE;AACpF,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,sCAAsC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK,kBAAkB,GAAG;AAC5B,UAAM,QAAQ,0CAA0C;AACxD,WAAO;AAAA,MACL,oBAAoB;AAAA,QAClB,eAAe;AAAA,QACf,mBAAmB,KAAK,sCAAsC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,iCAAiC;AAC/C,SAAO;AACT;AAEA,SAAS,OAAa;AACpB,QAAM,aAAa,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,MAAM,IAAI;AAC3E,mBAAiB,EAAE,WAAW,CAAC;AAE/B,QAAM,SAAS,uBAAuB,cAAc,CAAC;AACrD,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,OAAO,MAAM,KAAK,UAAU,MAAM,CAAC;AAC7C;AAEA,IAAI,QAAQ,KAAK,CAAC,KAAK,cAAc,YAAY,GAAG,MAAM,QAAQ,KAAK,CAAC,GAAG;AACzE,OAAK;AACP;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/mcp/server-entry.js b/packages/plugin/dist/mcp/server-entry.js deleted file mode 100755 index a2c13c86..00000000 --- a/packages/plugin/dist/mcp/server-entry.js +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node -import { - ensureNativeDeps -} from "../chunk-ZSMKKVNT.js"; -import { - info -} from "../chunk-PP5673GG.js"; - -// mcp/server-entry.ts -import { dirname, join } from "path"; -import { fileURLToPath } from "url"; -var pluginRoot = join(dirname(fileURLToPath(import.meta.url)), "..", ".."); -info("bootstrap", "ensuring native deps"); -ensureNativeDeps({ pluginRoot, fatal: true }); -info("bootstrap", "native deps ready, loading server"); -await import("./server.js"); -//# sourceMappingURL=server-entry.js.map \ No newline at end of file diff --git a/packages/plugin/dist/mcp/server-entry.js.map b/packages/plugin/dist/mcp/server-entry.js.map deleted file mode 100644 index 8d92e11c..00000000 --- a/packages/plugin/dist/mcp/server-entry.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../mcp/server-entry.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * MCP Server Bootstrap\n *\n * Thin entry point that guarantees native dependencies (better-sqlite3)\n * are installed BEFORE loading the real server. This is critical for\n * first-run-in-session: the plugin may be installed mid-session after\n * the SessionStart hook has already fired, so the MCP server is the\n * first (and only) entry point that runs.\n *\n * Static imports of better-sqlite3 in cache.ts / results-db.ts would\n * crash Node during module evaluation if the native addon is missing.\n * By deferring the server import to a dynamic `import()`, we ensure\n * ensureNativeDeps() runs first.\n *\n * pluginRoot derivation: this file lives at dist/mcp/server-entry.js,\n * so going up 2 levels reaches the plugin root where node_modules/\n * is installed by ensureNativeDeps.\n */\n\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { ensureNativeDeps } from '../lib/native-deps.js';\nimport { info } from '../lib/logger.js';\n\nconst pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');\n\ninfo('bootstrap', 'ensuring native deps');\nensureNativeDeps({ pluginRoot, fatal: true });\ninfo('bootstrap', 'native deps ready, loading server');\n\nawait import('./server.js');\n"],"mappings":";;;;;;;;;AAqBA,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAI9B,IAAM,aAAa,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,MAAM,IAAI;AAE3E,KAAK,aAAa,sBAAsB;AACxC,iBAAiB,EAAE,YAAY,OAAO,KAAK,CAAC;AAC5C,KAAK,aAAa,mCAAmC;AAErD,MAAM,OAAO,aAAa;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/mcp/server.js b/packages/plugin/dist/mcp/server.js deleted file mode 100755 index 81763947..00000000 --- a/packages/plugin/dist/mcp/server.js +++ /dev/null @@ -1,22465 +0,0 @@ -#!/usr/bin/env node -import { - readPrefs, - writePrefs -} from "../chunk-QFCYET5Y.js"; -import { - $ZodObject, - $ZodType, - $constructor, - CONTEXT_WINDOW_SIZE, - DomainGrowthAreaSchema, - DomainStrengthSchema, - MultitaskingPatternSchema, - STAGE_NAMES, - STAGE_SCHEMAS, - ZodOptional, - _enum, - _null, - array, - assembleCanonicalAnalysisRun, - boolean, - buildReportActivitySessions, - clearAnalysisPending, - clone, - computeDeterministicScores, - computeDeterministicType, - custom, - defineLazy, - discriminatedUnion, - external_exports, - getAnalysisLifecycleState, - getCacheDbPath, - getConfig, - getPluginDataDir, - getScanCacheDir, - intersection, - isAnalysisPending, - iso_exports, - literal, - looseObject, - markAnalysisComplete, - markAnalysisFailed, - markAnalysisPending, - markAnalysisStarted, - normalizeParams, - number, - object, - optional, - parse, - parseAsync, - preprocess, - record, - recoverStaleAnalysisState, - safeParse, - safeParseAsync, - string, - toJSONSchema, - touchAnalysisHeartbeat, - union, - unknown -} from "../chunk-SUEN2LKX.js"; -import { - __commonJS, - __require, - __toESM, - debug, - error, - info -} from "../chunk-PP5673GG.js"; - -// node_modules/ajv/dist/compile/codegen/code.js -var require_code = __commonJS({ - "node_modules/ajv/dist/compile/codegen/code.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0; - var _CodeOrName = class { - }; - exports._CodeOrName = _CodeOrName; - exports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; - var Name = class extends _CodeOrName { - constructor(s) { - super(); - if (!exports.IDENTIFIER.test(s)) - throw new Error("CodeGen: name must be a valid identifier"); - this.str = s; - } - toString() { - return this.str; - } - emptyStr() { - return false; - } - get names() { - return { [this.str]: 1 }; - } - }; - exports.Name = Name; - var _Code = class extends _CodeOrName { - constructor(code) { - super(); - this._items = typeof code === "string" ? [code] : code; - } - toString() { - return this.str; - } - emptyStr() { - if (this._items.length > 1) - return false; - const item = this._items[0]; - return item === "" || item === '""'; - } - get str() { - var _a; - return (_a = this._str) !== null && _a !== void 0 ? _a : this._str = this._items.reduce((s, c) => `${s}${c}`, ""); - } - get names() { - var _a; - return (_a = this._names) !== null && _a !== void 0 ? _a : this._names = this._items.reduce((names, c) => { - if (c instanceof Name) - names[c.str] = (names[c.str] || 0) + 1; - return names; - }, {}); - } - }; - exports._Code = _Code; - exports.nil = new _Code(""); - function _(strs, ...args) { - const code = [strs[0]]; - let i = 0; - while (i < args.length) { - addCodeArg(code, args[i]); - code.push(strs[++i]); - } - return new _Code(code); - } - exports._ = _; - var plus = new _Code("+"); - function str(strs, ...args) { - const expr = [safeStringify(strs[0])]; - let i = 0; - while (i < args.length) { - expr.push(plus); - addCodeArg(expr, args[i]); - expr.push(plus, safeStringify(strs[++i])); - } - optimize(expr); - return new _Code(expr); - } - exports.str = str; - function addCodeArg(code, arg) { - if (arg instanceof _Code) - code.push(...arg._items); - else if (arg instanceof Name) - code.push(arg); - else - code.push(interpolate(arg)); - } - exports.addCodeArg = addCodeArg; - function optimize(expr) { - let i = 1; - while (i < expr.length - 1) { - if (expr[i] === plus) { - const res = mergeExprItems(expr[i - 1], expr[i + 1]); - if (res !== void 0) { - expr.splice(i - 1, 3, res); - continue; - } - expr[i++] = "+"; - } - i++; - } - } - function mergeExprItems(a, b) { - if (b === '""') - return a; - if (a === '""') - return b; - if (typeof a == "string") { - if (b instanceof Name || a[a.length - 1] !== '"') - return; - if (typeof b != "string") - return `${a.slice(0, -1)}${b}"`; - if (b[0] === '"') - return a.slice(0, -1) + b.slice(1); - return; - } - if (typeof b == "string" && b[0] === '"' && !(a instanceof Name)) - return `"${a}${b.slice(1)}`; - return; - } - function strConcat(c1, c2) { - return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`; - } - exports.strConcat = strConcat; - function interpolate(x) { - return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x); - } - function stringify(x) { - return new _Code(safeStringify(x)); - } - exports.stringify = stringify; - function safeStringify(x) { - return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); - } - exports.safeStringify = safeStringify; - function getProperty(key) { - return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`; - } - exports.getProperty = getProperty; - function getEsmExportName(key) { - if (typeof key == "string" && exports.IDENTIFIER.test(key)) { - return new _Code(`${key}`); - } - throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`); - } - exports.getEsmExportName = getEsmExportName; - function regexpCode(rx) { - return new _Code(rx.toString()); - } - exports.regexpCode = regexpCode; - } -}); - -// node_modules/ajv/dist/compile/codegen/scope.js -var require_scope = __commonJS({ - "node_modules/ajv/dist/compile/codegen/scope.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0; - var code_1 = require_code(); - var ValueError = class extends Error { - constructor(name) { - super(`CodeGen: "code" for ${name} not defined`); - this.value = name.value; - } - }; - var UsedValueState; - (function(UsedValueState2) { - UsedValueState2[UsedValueState2["Started"] = 0] = "Started"; - UsedValueState2[UsedValueState2["Completed"] = 1] = "Completed"; - })(UsedValueState || (exports.UsedValueState = UsedValueState = {})); - exports.varKinds = { - const: new code_1.Name("const"), - let: new code_1.Name("let"), - var: new code_1.Name("var") - }; - var Scope = class { - constructor({ prefixes, parent } = {}) { - this._names = {}; - this._prefixes = prefixes; - this._parent = parent; - } - toName(nameOrPrefix) { - return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix); - } - name(prefix) { - return new code_1.Name(this._newName(prefix)); - } - _newName(prefix) { - const ng = this._names[prefix] || this._nameGroup(prefix); - return `${prefix}${ng.index++}`; - } - _nameGroup(prefix) { - var _a, _b; - if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || this._prefixes && !this._prefixes.has(prefix)) { - throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`); - } - return this._names[prefix] = { prefix, index: 0 }; - } - }; - exports.Scope = Scope; - var ValueScopeName = class extends code_1.Name { - constructor(prefix, nameStr) { - super(nameStr); - this.prefix = prefix; - } - setValue(value, { property, itemIndex }) { - this.value = value; - this.scopePath = (0, code_1._)`.${new code_1.Name(property)}[${itemIndex}]`; - } - }; - exports.ValueScopeName = ValueScopeName; - var line = (0, code_1._)`\n`; - var ValueScope = class extends Scope { - constructor(opts) { - super(opts); - this._values = {}; - this._scope = opts.scope; - this.opts = { ...opts, _n: opts.lines ? line : code_1.nil }; - } - get() { - return this._scope; - } - name(prefix) { - return new ValueScopeName(prefix, this._newName(prefix)); - } - value(nameOrPrefix, value) { - var _a; - if (value.ref === void 0) - throw new Error("CodeGen: ref must be passed in value"); - const name = this.toName(nameOrPrefix); - const { prefix } = name; - const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref; - let vs = this._values[prefix]; - if (vs) { - const _name = vs.get(valueKey); - if (_name) - return _name; - } else { - vs = this._values[prefix] = /* @__PURE__ */ new Map(); - } - vs.set(valueKey, name); - const s = this._scope[prefix] || (this._scope[prefix] = []); - const itemIndex = s.length; - s[itemIndex] = value.ref; - name.setValue(value, { property: prefix, itemIndex }); - return name; - } - getValue(prefix, keyOrRef) { - const vs = this._values[prefix]; - if (!vs) - return; - return vs.get(keyOrRef); - } - scopeRefs(scopeName, values = this._values) { - return this._reduceValues(values, (name) => { - if (name.scopePath === void 0) - throw new Error(`CodeGen: name "${name}" has no value`); - return (0, code_1._)`${scopeName}${name.scopePath}`; - }); - } - scopeCode(values = this._values, usedValues, getCode) { - return this._reduceValues(values, (name) => { - if (name.value === void 0) - throw new Error(`CodeGen: name "${name}" has no value`); - return name.value.code; - }, usedValues, getCode); - } - _reduceValues(values, valueCode, usedValues = {}, getCode) { - let code = code_1.nil; - for (const prefix in values) { - const vs = values[prefix]; - if (!vs) - continue; - const nameSet = usedValues[prefix] = usedValues[prefix] || /* @__PURE__ */ new Map(); - vs.forEach((name) => { - if (nameSet.has(name)) - return; - nameSet.set(name, UsedValueState.Started); - let c = valueCode(name); - if (c) { - const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const; - code = (0, code_1._)`${code}${def} ${name} = ${c};${this.opts._n}`; - } else if (c = getCode === null || getCode === void 0 ? void 0 : getCode(name)) { - code = (0, code_1._)`${code}${c}${this.opts._n}`; - } else { - throw new ValueError(name); - } - nameSet.set(name, UsedValueState.Completed); - }); - } - return code; - } - }; - exports.ValueScope = ValueScope; - } -}); - -// node_modules/ajv/dist/compile/codegen/index.js -var require_codegen = __commonJS({ - "node_modules/ajv/dist/compile/codegen/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0; - var code_1 = require_code(); - var scope_1 = require_scope(); - var code_2 = require_code(); - Object.defineProperty(exports, "_", { enumerable: true, get: function() { - return code_2._; - } }); - Object.defineProperty(exports, "str", { enumerable: true, get: function() { - return code_2.str; - } }); - Object.defineProperty(exports, "strConcat", { enumerable: true, get: function() { - return code_2.strConcat; - } }); - Object.defineProperty(exports, "nil", { enumerable: true, get: function() { - return code_2.nil; - } }); - Object.defineProperty(exports, "getProperty", { enumerable: true, get: function() { - return code_2.getProperty; - } }); - Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { - return code_2.stringify; - } }); - Object.defineProperty(exports, "regexpCode", { enumerable: true, get: function() { - return code_2.regexpCode; - } }); - Object.defineProperty(exports, "Name", { enumerable: true, get: function() { - return code_2.Name; - } }); - var scope_2 = require_scope(); - Object.defineProperty(exports, "Scope", { enumerable: true, get: function() { - return scope_2.Scope; - } }); - Object.defineProperty(exports, "ValueScope", { enumerable: true, get: function() { - return scope_2.ValueScope; - } }); - Object.defineProperty(exports, "ValueScopeName", { enumerable: true, get: function() { - return scope_2.ValueScopeName; - } }); - Object.defineProperty(exports, "varKinds", { enumerable: true, get: function() { - return scope_2.varKinds; - } }); - exports.operators = { - GT: new code_1._Code(">"), - GTE: new code_1._Code(">="), - LT: new code_1._Code("<"), - LTE: new code_1._Code("<="), - EQ: new code_1._Code("==="), - NEQ: new code_1._Code("!=="), - NOT: new code_1._Code("!"), - OR: new code_1._Code("||"), - AND: new code_1._Code("&&"), - ADD: new code_1._Code("+") - }; - var Node = class { - optimizeNodes() { - return this; - } - optimizeNames(_names, _constants) { - return this; - } - }; - var Def = class extends Node { - constructor(varKind, name, rhs) { - super(); - this.varKind = varKind; - this.name = name; - this.rhs = rhs; - } - render({ es5, _n }) { - const varKind = es5 ? scope_1.varKinds.var : this.varKind; - const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`; - return `${varKind} ${this.name}${rhs};` + _n; - } - optimizeNames(names, constants) { - if (!names[this.name.str]) - return; - if (this.rhs) - this.rhs = optimizeExpr(this.rhs, names, constants); - return this; - } - get names() { - return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {}; - } - }; - var Assign = class extends Node { - constructor(lhs, rhs, sideEffects) { - super(); - this.lhs = lhs; - this.rhs = rhs; - this.sideEffects = sideEffects; - } - render({ _n }) { - return `${this.lhs} = ${this.rhs};` + _n; - } - optimizeNames(names, constants) { - if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects) - return; - this.rhs = optimizeExpr(this.rhs, names, constants); - return this; - } - get names() { - const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names }; - return addExprNames(names, this.rhs); - } - }; - var AssignOp = class extends Assign { - constructor(lhs, op, rhs, sideEffects) { - super(lhs, rhs, sideEffects); - this.op = op; - } - render({ _n }) { - return `${this.lhs} ${this.op}= ${this.rhs};` + _n; - } - }; - var Label = class extends Node { - constructor(label) { - super(); - this.label = label; - this.names = {}; - } - render({ _n }) { - return `${this.label}:` + _n; - } - }; - var Break = class extends Node { - constructor(label) { - super(); - this.label = label; - this.names = {}; - } - render({ _n }) { - const label = this.label ? ` ${this.label}` : ""; - return `break${label};` + _n; - } - }; - var Throw = class extends Node { - constructor(error2) { - super(); - this.error = error2; - } - render({ _n }) { - return `throw ${this.error};` + _n; - } - get names() { - return this.error.names; - } - }; - var AnyCode = class extends Node { - constructor(code) { - super(); - this.code = code; - } - render({ _n }) { - return `${this.code};` + _n; - } - optimizeNodes() { - return `${this.code}` ? this : void 0; - } - optimizeNames(names, constants) { - this.code = optimizeExpr(this.code, names, constants); - return this; - } - get names() { - return this.code instanceof code_1._CodeOrName ? this.code.names : {}; - } - }; - var ParentNode = class extends Node { - constructor(nodes = []) { - super(); - this.nodes = nodes; - } - render(opts) { - return this.nodes.reduce((code, n) => code + n.render(opts), ""); - } - optimizeNodes() { - const { nodes } = this; - let i = nodes.length; - while (i--) { - const n = nodes[i].optimizeNodes(); - if (Array.isArray(n)) - nodes.splice(i, 1, ...n); - else if (n) - nodes[i] = n; - else - nodes.splice(i, 1); - } - return nodes.length > 0 ? this : void 0; - } - optimizeNames(names, constants) { - const { nodes } = this; - let i = nodes.length; - while (i--) { - const n = nodes[i]; - if (n.optimizeNames(names, constants)) - continue; - subtractNames(names, n.names); - nodes.splice(i, 1); - } - return nodes.length > 0 ? this : void 0; - } - get names() { - return this.nodes.reduce((names, n) => addNames(names, n.names), {}); - } - }; - var BlockNode = class extends ParentNode { - render(opts) { - return "{" + opts._n + super.render(opts) + "}" + opts._n; - } - }; - var Root = class extends ParentNode { - }; - var Else = class extends BlockNode { - }; - Else.kind = "else"; - var If = class _If extends BlockNode { - constructor(condition, nodes) { - super(nodes); - this.condition = condition; - } - render(opts) { - let code = `if(${this.condition})` + super.render(opts); - if (this.else) - code += "else " + this.else.render(opts); - return code; - } - optimizeNodes() { - super.optimizeNodes(); - const cond = this.condition; - if (cond === true) - return this.nodes; - let e = this.else; - if (e) { - const ns = e.optimizeNodes(); - e = this.else = Array.isArray(ns) ? new Else(ns) : ns; - } - if (e) { - if (cond === false) - return e instanceof _If ? e : e.nodes; - if (this.nodes.length) - return this; - return new _If(not(cond), e instanceof _If ? [e] : e.nodes); - } - if (cond === false || !this.nodes.length) - return void 0; - return this; - } - optimizeNames(names, constants) { - var _a; - this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); - if (!(super.optimizeNames(names, constants) || this.else)) - return; - this.condition = optimizeExpr(this.condition, names, constants); - return this; - } - get names() { - const names = super.names; - addExprNames(names, this.condition); - if (this.else) - addNames(names, this.else.names); - return names; - } - }; - If.kind = "if"; - var For = class extends BlockNode { - }; - For.kind = "for"; - var ForLoop = class extends For { - constructor(iteration) { - super(); - this.iteration = iteration; - } - render(opts) { - return `for(${this.iteration})` + super.render(opts); - } - optimizeNames(names, constants) { - if (!super.optimizeNames(names, constants)) - return; - this.iteration = optimizeExpr(this.iteration, names, constants); - return this; - } - get names() { - return addNames(super.names, this.iteration.names); - } - }; - var ForRange = class extends For { - constructor(varKind, name, from, to) { - super(); - this.varKind = varKind; - this.name = name; - this.from = from; - this.to = to; - } - render(opts) { - const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind; - const { name, from, to } = this; - return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts); - } - get names() { - const names = addExprNames(super.names, this.from); - return addExprNames(names, this.to); - } - }; - var ForIter = class extends For { - constructor(loop, varKind, name, iterable) { - super(); - this.loop = loop; - this.varKind = varKind; - this.name = name; - this.iterable = iterable; - } - render(opts) { - return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts); - } - optimizeNames(names, constants) { - if (!super.optimizeNames(names, constants)) - return; - this.iterable = optimizeExpr(this.iterable, names, constants); - return this; - } - get names() { - return addNames(super.names, this.iterable.names); - } - }; - var Func = class extends BlockNode { - constructor(name, args, async) { - super(); - this.name = name; - this.args = args; - this.async = async; - } - render(opts) { - const _async = this.async ? "async " : ""; - return `${_async}function ${this.name}(${this.args})` + super.render(opts); - } - }; - Func.kind = "func"; - var Return = class extends ParentNode { - render(opts) { - return "return " + super.render(opts); - } - }; - Return.kind = "return"; - var Try = class extends BlockNode { - render(opts) { - let code = "try" + super.render(opts); - if (this.catch) - code += this.catch.render(opts); - if (this.finally) - code += this.finally.render(opts); - return code; - } - optimizeNodes() { - var _a, _b; - super.optimizeNodes(); - (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes(); - (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes(); - return this; - } - optimizeNames(names, constants) { - var _a, _b; - super.optimizeNames(names, constants); - (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); - (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants); - return this; - } - get names() { - const names = super.names; - if (this.catch) - addNames(names, this.catch.names); - if (this.finally) - addNames(names, this.finally.names); - return names; - } - }; - var Catch = class extends BlockNode { - constructor(error2) { - super(); - this.error = error2; - } - render(opts) { - return `catch(${this.error})` + super.render(opts); - } - }; - Catch.kind = "catch"; - var Finally = class extends BlockNode { - render(opts) { - return "finally" + super.render(opts); - } - }; - Finally.kind = "finally"; - var CodeGen = class { - constructor(extScope, opts = {}) { - this._values = {}; - this._blockStarts = []; - this._constants = {}; - this.opts = { ...opts, _n: opts.lines ? "\n" : "" }; - this._extScope = extScope; - this._scope = new scope_1.Scope({ parent: extScope }); - this._nodes = [new Root()]; - } - toString() { - return this._root.render(this.opts); - } - // returns unique name in the internal scope - name(prefix) { - return this._scope.name(prefix); - } - // reserves unique name in the external scope - scopeName(prefix) { - return this._extScope.name(prefix); - } - // reserves unique name in the external scope and assigns value to it - scopeValue(prefixOrName, value) { - const name = this._extScope.value(prefixOrName, value); - const vs = this._values[name.prefix] || (this._values[name.prefix] = /* @__PURE__ */ new Set()); - vs.add(name); - return name; - } - getScopeValue(prefix, keyOrRef) { - return this._extScope.getValue(prefix, keyOrRef); - } - // return code that assigns values in the external scope to the names that are used internally - // (same names that were returned by gen.scopeName or gen.scopeValue) - scopeRefs(scopeName) { - return this._extScope.scopeRefs(scopeName, this._values); - } - scopeCode() { - return this._extScope.scopeCode(this._values); - } - _def(varKind, nameOrPrefix, rhs, constant) { - const name = this._scope.toName(nameOrPrefix); - if (rhs !== void 0 && constant) - this._constants[name.str] = rhs; - this._leafNode(new Def(varKind, name, rhs)); - return name; - } - // `const` declaration (`var` in es5 mode) - const(nameOrPrefix, rhs, _constant) { - return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant); - } - // `let` declaration with optional assignment (`var` in es5 mode) - let(nameOrPrefix, rhs, _constant) { - return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant); - } - // `var` declaration with optional assignment - var(nameOrPrefix, rhs, _constant) { - return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant); - } - // assignment code - assign(lhs, rhs, sideEffects) { - return this._leafNode(new Assign(lhs, rhs, sideEffects)); - } - // `+=` code - add(lhs, rhs) { - return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs)); - } - // appends passed SafeExpr to code or executes Block - code(c) { - if (typeof c == "function") - c(); - else if (c !== code_1.nil) - this._leafNode(new AnyCode(c)); - return this; - } - // returns code for object literal for the passed argument list of key-value pairs - object(...keyValues) { - const code = ["{"]; - for (const [key, value] of keyValues) { - if (code.length > 1) - code.push(","); - code.push(key); - if (key !== value || this.opts.es5) { - code.push(":"); - (0, code_1.addCodeArg)(code, value); - } - } - code.push("}"); - return new code_1._Code(code); - } - // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed) - if(condition, thenBody, elseBody) { - this._blockNode(new If(condition)); - if (thenBody && elseBody) { - this.code(thenBody).else().code(elseBody).endIf(); - } else if (thenBody) { - this.code(thenBody).endIf(); - } else if (elseBody) { - throw new Error('CodeGen: "else" body without "then" body'); - } - return this; - } - // `else if` clause - invalid without `if` or after `else` clauses - elseIf(condition) { - return this._elseNode(new If(condition)); - } - // `else` clause - only valid after `if` or `else if` clauses - else() { - return this._elseNode(new Else()); - } - // end `if` statement (needed if gen.if was used only with condition) - endIf() { - return this._endBlockNode(If, Else); - } - _for(node, forBody) { - this._blockNode(node); - if (forBody) - this.code(forBody).endFor(); - return this; - } - // a generic `for` clause (or statement if `forBody` is passed) - for(iteration, forBody) { - return this._for(new ForLoop(iteration), forBody); - } - // `for` statement for a range of values - forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) { - const name = this._scope.toName(nameOrPrefix); - return this._for(new ForRange(varKind, name, from, to), () => forBody(name)); - } - // `for-of` statement (in es5 mode replace with a normal for loop) - forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) { - const name = this._scope.toName(nameOrPrefix); - if (this.opts.es5) { - const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable); - return this.forRange("_i", 0, (0, code_1._)`${arr}.length`, (i) => { - this.var(name, (0, code_1._)`${arr}[${i}]`); - forBody(name); - }); - } - return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name)); - } - // `for-in` statement. - // With option `ownProperties` replaced with a `for-of` loop for object keys - forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) { - if (this.opts.ownProperties) { - return this.forOf(nameOrPrefix, (0, code_1._)`Object.keys(${obj})`, forBody); - } - const name = this._scope.toName(nameOrPrefix); - return this._for(new ForIter("in", varKind, name, obj), () => forBody(name)); - } - // end `for` loop - endFor() { - return this._endBlockNode(For); - } - // `label` statement - label(label) { - return this._leafNode(new Label(label)); - } - // `break` statement - break(label) { - return this._leafNode(new Break(label)); - } - // `return` statement - return(value) { - const node = new Return(); - this._blockNode(node); - this.code(value); - if (node.nodes.length !== 1) - throw new Error('CodeGen: "return" should have one node'); - return this._endBlockNode(Return); - } - // `try` statement - try(tryBody, catchCode, finallyCode) { - if (!catchCode && !finallyCode) - throw new Error('CodeGen: "try" without "catch" and "finally"'); - const node = new Try(); - this._blockNode(node); - this.code(tryBody); - if (catchCode) { - const error2 = this.name("e"); - this._currNode = node.catch = new Catch(error2); - catchCode(error2); - } - if (finallyCode) { - this._currNode = node.finally = new Finally(); - this.code(finallyCode); - } - return this._endBlockNode(Catch, Finally); - } - // `throw` statement - throw(error2) { - return this._leafNode(new Throw(error2)); - } - // start self-balancing block - block(body, nodeCount) { - this._blockStarts.push(this._nodes.length); - if (body) - this.code(body).endBlock(nodeCount); - return this; - } - // end the current self-balancing block - endBlock(nodeCount) { - const len = this._blockStarts.pop(); - if (len === void 0) - throw new Error("CodeGen: not in self-balancing block"); - const toClose = this._nodes.length - len; - if (toClose < 0 || nodeCount !== void 0 && toClose !== nodeCount) { - throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`); - } - this._nodes.length = len; - return this; - } - // `function` heading (or definition if funcBody is passed) - func(name, args = code_1.nil, async, funcBody) { - this._blockNode(new Func(name, args, async)); - if (funcBody) - this.code(funcBody).endFunc(); - return this; - } - // end function definition - endFunc() { - return this._endBlockNode(Func); - } - optimize(n = 1) { - while (n-- > 0) { - this._root.optimizeNodes(); - this._root.optimizeNames(this._root.names, this._constants); - } - } - _leafNode(node) { - this._currNode.nodes.push(node); - return this; - } - _blockNode(node) { - this._currNode.nodes.push(node); - this._nodes.push(node); - } - _endBlockNode(N1, N2) { - const n = this._currNode; - if (n instanceof N1 || N2 && n instanceof N2) { - this._nodes.pop(); - return this; - } - throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`); - } - _elseNode(node) { - const n = this._currNode; - if (!(n instanceof If)) { - throw new Error('CodeGen: "else" without "if"'); - } - this._currNode = n.else = node; - return this; - } - get _root() { - return this._nodes[0]; - } - get _currNode() { - const ns = this._nodes; - return ns[ns.length - 1]; - } - set _currNode(node) { - const ns = this._nodes; - ns[ns.length - 1] = node; - } - }; - exports.CodeGen = CodeGen; - function addNames(names, from) { - for (const n in from) - names[n] = (names[n] || 0) + (from[n] || 0); - return names; - } - function addExprNames(names, from) { - return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names; - } - function optimizeExpr(expr, names, constants) { - if (expr instanceof code_1.Name) - return replaceName(expr); - if (!canOptimize(expr)) - return expr; - return new code_1._Code(expr._items.reduce((items, c) => { - if (c instanceof code_1.Name) - c = replaceName(c); - if (c instanceof code_1._Code) - items.push(...c._items); - else - items.push(c); - return items; - }, [])); - function replaceName(n) { - const c = constants[n.str]; - if (c === void 0 || names[n.str] !== 1) - return n; - delete names[n.str]; - return c; - } - function canOptimize(e) { - return e instanceof code_1._Code && e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== void 0); - } - } - function subtractNames(names, from) { - for (const n in from) - names[n] = (names[n] || 0) - (from[n] || 0); - } - function not(x) { - return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._)`!${par(x)}`; - } - exports.not = not; - var andCode = mappend(exports.operators.AND); - function and(...args) { - return args.reduce(andCode); - } - exports.and = and; - var orCode = mappend(exports.operators.OR); - function or(...args) { - return args.reduce(orCode); - } - exports.or = or; - function mappend(op) { - return (x, y) => x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._)`${par(x)} ${op} ${par(y)}`; - } - function par(x) { - return x instanceof code_1.Name ? x : (0, code_1._)`(${x})`; - } - } -}); - -// node_modules/ajv/dist/compile/util.js -var require_util = __commonJS({ - "node_modules/ajv/dist/compile/util.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0; - var codegen_1 = require_codegen(); - var code_1 = require_code(); - function toHash(arr) { - const hash = {}; - for (const item of arr) - hash[item] = true; - return hash; - } - exports.toHash = toHash; - function alwaysValidSchema(it, schema) { - if (typeof schema == "boolean") - return schema; - if (Object.keys(schema).length === 0) - return true; - checkUnknownRules(it, schema); - return !schemaHasRules(schema, it.self.RULES.all); - } - exports.alwaysValidSchema = alwaysValidSchema; - function checkUnknownRules(it, schema = it.schema) { - const { opts, self } = it; - if (!opts.strictSchema) - return; - if (typeof schema === "boolean") - return; - const rules = self.RULES.keywords; - for (const key in schema) { - if (!rules[key]) - checkStrictMode(it, `unknown keyword: "${key}"`); - } - } - exports.checkUnknownRules = checkUnknownRules; - function schemaHasRules(schema, rules) { - if (typeof schema == "boolean") - return !schema; - for (const key in schema) - if (rules[key]) - return true; - return false; - } - exports.schemaHasRules = schemaHasRules; - function schemaHasRulesButRef(schema, RULES) { - if (typeof schema == "boolean") - return !schema; - for (const key in schema) - if (key !== "$ref" && RULES.all[key]) - return true; - return false; - } - exports.schemaHasRulesButRef = schemaHasRulesButRef; - function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) { - if (!$data) { - if (typeof schema == "number" || typeof schema == "boolean") - return schema; - if (typeof schema == "string") - return (0, codegen_1._)`${schema}`; - } - return (0, codegen_1._)`${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`; - } - exports.schemaRefOrVal = schemaRefOrVal; - function unescapeFragment(str) { - return unescapeJsonPointer(decodeURIComponent(str)); - } - exports.unescapeFragment = unescapeFragment; - function escapeFragment(str) { - return encodeURIComponent(escapeJsonPointer(str)); - } - exports.escapeFragment = escapeFragment; - function escapeJsonPointer(str) { - if (typeof str == "number") - return `${str}`; - return str.replace(/~/g, "~0").replace(/\//g, "~1"); - } - exports.escapeJsonPointer = escapeJsonPointer; - function unescapeJsonPointer(str) { - return str.replace(/~1/g, "/").replace(/~0/g, "~"); - } - exports.unescapeJsonPointer = unescapeJsonPointer; - function eachItem(xs, f) { - if (Array.isArray(xs)) { - for (const x of xs) - f(x); - } else { - f(xs); - } - } - exports.eachItem = eachItem; - function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues: mergeValues2, resultToName }) { - return (gen, from, to, toName) => { - const res = to === void 0 ? from : to instanceof codegen_1.Name ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) : from instanceof codegen_1.Name ? (mergeToName(gen, to, from), from) : mergeValues2(from, to); - return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res; - }; - } - exports.mergeEvaluated = { - props: makeMergeEvaluated({ - mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => { - gen.if((0, codegen_1._)`${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._)`${to} || {}`).code((0, codegen_1._)`Object.assign(${to}, ${from})`)); - }), - mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => { - if (from === true) { - gen.assign(to, true); - } else { - gen.assign(to, (0, codegen_1._)`${to} || {}`); - setEvaluated(gen, to, from); - } - }), - mergeValues: (from, to) => from === true ? true : { ...from, ...to }, - resultToName: evaluatedPropsToName - }), - items: makeMergeEvaluated({ - mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)), - mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._)`${to} > ${from} ? ${to} : ${from}`)), - mergeValues: (from, to) => from === true ? true : Math.max(from, to), - resultToName: (gen, items) => gen.var("items", items) - }) - }; - function evaluatedPropsToName(gen, ps) { - if (ps === true) - return gen.var("props", true); - const props = gen.var("props", (0, codegen_1._)`{}`); - if (ps !== void 0) - setEvaluated(gen, props, ps); - return props; - } - exports.evaluatedPropsToName = evaluatedPropsToName; - function setEvaluated(gen, props, ps) { - Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._)`${props}${(0, codegen_1.getProperty)(p)}`, true)); - } - exports.setEvaluated = setEvaluated; - var snippets = {}; - function useFunc(gen, f) { - return gen.scopeValue("func", { - ref: f, - code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)) - }); - } - exports.useFunc = useFunc; - var Type; - (function(Type2) { - Type2[Type2["Num"] = 0] = "Num"; - Type2[Type2["Str"] = 1] = "Str"; - })(Type || (exports.Type = Type = {})); - function getErrorPath(dataProp, dataPropType, jsPropertySyntax) { - if (dataProp instanceof codegen_1.Name) { - const isNumber = dataPropType === Type.Num; - return jsPropertySyntax ? isNumber ? (0, codegen_1._)`"[" + ${dataProp} + "]"` : (0, codegen_1._)`"['" + ${dataProp} + "']"` : isNumber ? (0, codegen_1._)`"/" + ${dataProp}` : (0, codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; - } - return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp); - } - exports.getErrorPath = getErrorPath; - function checkStrictMode(it, msg, mode = it.opts.strictSchema) { - if (!mode) - return; - msg = `strict mode: ${msg}`; - if (mode === true) - throw new Error(msg); - it.self.logger.warn(msg); - } - exports.checkStrictMode = checkStrictMode; - } -}); - -// node_modules/ajv/dist/compile/names.js -var require_names = __commonJS({ - "node_modules/ajv/dist/compile/names.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var names = { - // validation function arguments - data: new codegen_1.Name("data"), - // data passed to validation function - // args passed from referencing schema - valCxt: new codegen_1.Name("valCxt"), - // validation/data context - should not be used directly, it is destructured to the names below - instancePath: new codegen_1.Name("instancePath"), - parentData: new codegen_1.Name("parentData"), - parentDataProperty: new codegen_1.Name("parentDataProperty"), - rootData: new codegen_1.Name("rootData"), - // root data - same as the data passed to the first/top validation function - dynamicAnchors: new codegen_1.Name("dynamicAnchors"), - // used to support recursiveRef and dynamicRef - // function scoped variables - vErrors: new codegen_1.Name("vErrors"), - // null or array of validation errors - errors: new codegen_1.Name("errors"), - // counter of validation errors - this: new codegen_1.Name("this"), - // "globals" - self: new codegen_1.Name("self"), - scope: new codegen_1.Name("scope"), - // JTD serialize/parse name for JSON string and position - json: new codegen_1.Name("json"), - jsonPos: new codegen_1.Name("jsonPos"), - jsonLen: new codegen_1.Name("jsonLen"), - jsonPart: new codegen_1.Name("jsonPart") - }; - exports.default = names; - } -}); - -// node_modules/ajv/dist/compile/errors.js -var require_errors = __commonJS({ - "node_modules/ajv/dist/compile/errors.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var names_1 = require_names(); - exports.keywordError = { - message: ({ keyword }) => (0, codegen_1.str)`must pass "${keyword}" keyword validation` - }; - exports.keyword$DataError = { - message: ({ keyword, schemaType }) => schemaType ? (0, codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)` : (0, codegen_1.str)`"${keyword}" keyword is invalid ($data)` - }; - function reportError(cxt, error2 = exports.keywordError, errorPaths, overrideAllErrors) { - const { it } = cxt; - const { gen, compositeRule, allErrors } = it; - const errObj = errorObjectCode(cxt, error2, errorPaths); - if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : compositeRule || allErrors) { - addError(gen, errObj); - } else { - returnErrors(it, (0, codegen_1._)`[${errObj}]`); - } - } - exports.reportError = reportError; - function reportExtraError(cxt, error2 = exports.keywordError, errorPaths) { - const { it } = cxt; - const { gen, compositeRule, allErrors } = it; - const errObj = errorObjectCode(cxt, error2, errorPaths); - addError(gen, errObj); - if (!(compositeRule || allErrors)) { - returnErrors(it, names_1.default.vErrors); - } - } - exports.reportExtraError = reportExtraError; - function resetErrorsCount(gen, errsCount) { - gen.assign(names_1.default.errors, errsCount); - gen.if((0, codegen_1._)`${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._)`${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null))); - } - exports.resetErrorsCount = resetErrorsCount; - function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) { - if (errsCount === void 0) - throw new Error("ajv implementation error"); - const err = gen.name("err"); - gen.forRange("i", errsCount, names_1.default.errors, (i) => { - gen.const(err, (0, codegen_1._)`${names_1.default.vErrors}[${i}]`); - gen.if((0, codegen_1._)`${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._)`${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath))); - gen.assign((0, codegen_1._)`${err}.schemaPath`, (0, codegen_1.str)`${it.errSchemaPath}/${keyword}`); - if (it.opts.verbose) { - gen.assign((0, codegen_1._)`${err}.schema`, schemaValue); - gen.assign((0, codegen_1._)`${err}.data`, data); - } - }); - } - exports.extendErrors = extendErrors; - function addError(gen, errObj) { - const err = gen.const("err", errObj); - gen.if((0, codegen_1._)`${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._)`[${err}]`), (0, codegen_1._)`${names_1.default.vErrors}.push(${err})`); - gen.code((0, codegen_1._)`${names_1.default.errors}++`); - } - function returnErrors(it, errs) { - const { gen, validateName, schemaEnv } = it; - if (schemaEnv.$async) { - gen.throw((0, codegen_1._)`new ${it.ValidationError}(${errs})`); - } else { - gen.assign((0, codegen_1._)`${validateName}.errors`, errs); - gen.return(false); - } - } - var E = { - keyword: new codegen_1.Name("keyword"), - schemaPath: new codegen_1.Name("schemaPath"), - // also used in JTD errors - params: new codegen_1.Name("params"), - propertyName: new codegen_1.Name("propertyName"), - message: new codegen_1.Name("message"), - schema: new codegen_1.Name("schema"), - parentSchema: new codegen_1.Name("parentSchema") - }; - function errorObjectCode(cxt, error2, errorPaths) { - const { createErrors } = cxt.it; - if (createErrors === false) - return (0, codegen_1._)`{}`; - return errorObject(cxt, error2, errorPaths); - } - function errorObject(cxt, error2, errorPaths = {}) { - const { gen, it } = cxt; - const keyValues = [ - errorInstancePath(it, errorPaths), - errorSchemaPath(cxt, errorPaths) - ]; - extraErrorProps(cxt, error2, keyValues); - return gen.object(...keyValues); - } - function errorInstancePath({ errorPath }, { instancePath }) { - const instPath = instancePath ? (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` : errorPath; - return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)]; - } - function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) { - let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str)`${errSchemaPath}/${keyword}`; - if (schemaPath) { - schPath = (0, codegen_1.str)`${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`; - } - return [E.schemaPath, schPath]; - } - function extraErrorProps(cxt, { params, message }, keyValues) { - const { keyword, data, schemaValue, it } = cxt; - const { opts, propertyName, topSchemaRef, schemaPath } = it; - keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._)`{}`]); - if (opts.messages) { - keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]); - } - if (opts.verbose) { - keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._)`${topSchemaRef}${schemaPath}`], [names_1.default.data, data]); - } - if (propertyName) - keyValues.push([E.propertyName, propertyName]); - } - } -}); - -// node_modules/ajv/dist/compile/validate/boolSchema.js -var require_boolSchema = __commonJS({ - "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0; - var errors_1 = require_errors(); - var codegen_1 = require_codegen(); - var names_1 = require_names(); - var boolError = { - message: "boolean schema is false" - }; - function topBoolOrEmptySchema(it) { - const { gen, schema, validateName } = it; - if (schema === false) { - falseSchemaError(it, false); - } else if (typeof schema == "object" && schema.$async === true) { - gen.return(names_1.default.data); - } else { - gen.assign((0, codegen_1._)`${validateName}.errors`, null); - gen.return(true); - } - } - exports.topBoolOrEmptySchema = topBoolOrEmptySchema; - function boolOrEmptySchema(it, valid) { - const { gen, schema } = it; - if (schema === false) { - gen.var(valid, false); - falseSchemaError(it); - } else { - gen.var(valid, true); - } - } - exports.boolOrEmptySchema = boolOrEmptySchema; - function falseSchemaError(it, overrideAllErrors) { - const { gen, data } = it; - const cxt = { - gen, - keyword: "false schema", - data, - schema: false, - schemaCode: false, - schemaValue: false, - params: {}, - it - }; - (0, errors_1.reportError)(cxt, boolError, void 0, overrideAllErrors); - } - } -}); - -// node_modules/ajv/dist/compile/rules.js -var require_rules = __commonJS({ - "node_modules/ajv/dist/compile/rules.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getRules = exports.isJSONType = void 0; - var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"]; - var jsonTypes = new Set(_jsonTypes); - function isJSONType(x) { - return typeof x == "string" && jsonTypes.has(x); - } - exports.isJSONType = isJSONType; - function getRules() { - const groups = { - number: { type: "number", rules: [] }, - string: { type: "string", rules: [] }, - array: { type: "array", rules: [] }, - object: { type: "object", rules: [] } - }; - return { - types: { ...groups, integer: true, boolean: true, null: true }, - rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object], - post: { rules: [] }, - all: {}, - keywords: {} - }; - } - exports.getRules = getRules; - } -}); - -// node_modules/ajv/dist/compile/validate/applicability.js -var require_applicability = __commonJS({ - "node_modules/ajv/dist/compile/validate/applicability.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0; - function schemaHasRulesForType({ schema, self }, type) { - const group = self.RULES.types[type]; - return group && group !== true && shouldUseGroup(schema, group); - } - exports.schemaHasRulesForType = schemaHasRulesForType; - function shouldUseGroup(schema, group) { - return group.rules.some((rule) => shouldUseRule(schema, rule)); - } - exports.shouldUseGroup = shouldUseGroup; - function shouldUseRule(schema, rule) { - var _a; - return schema[rule.keyword] !== void 0 || ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== void 0)); - } - exports.shouldUseRule = shouldUseRule; - } -}); - -// node_modules/ajv/dist/compile/validate/dataType.js -var require_dataType = __commonJS({ - "node_modules/ajv/dist/compile/validate/dataType.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0; - var rules_1 = require_rules(); - var applicability_1 = require_applicability(); - var errors_1 = require_errors(); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var DataType; - (function(DataType2) { - DataType2[DataType2["Correct"] = 0] = "Correct"; - DataType2[DataType2["Wrong"] = 1] = "Wrong"; - })(DataType || (exports.DataType = DataType = {})); - function getSchemaTypes(schema) { - const types = getJSONTypes(schema.type); - const hasNull = types.includes("null"); - if (hasNull) { - if (schema.nullable === false) - throw new Error("type: null contradicts nullable: false"); - } else { - if (!types.length && schema.nullable !== void 0) { - throw new Error('"nullable" cannot be used without "type"'); - } - if (schema.nullable === true) - types.push("null"); - } - return types; - } - exports.getSchemaTypes = getSchemaTypes; - function getJSONTypes(ts) { - const types = Array.isArray(ts) ? ts : ts ? [ts] : []; - if (types.every(rules_1.isJSONType)) - return types; - throw new Error("type must be JSONType or JSONType[]: " + types.join(",")); - } - exports.getJSONTypes = getJSONTypes; - function coerceAndCheckDataType(it, types) { - const { gen, data, opts } = it; - const coerceTo = coerceToTypes(types, opts.coerceTypes); - const checkTypes = types.length > 0 && !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0])); - if (checkTypes) { - const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong); - gen.if(wrongType, () => { - if (coerceTo.length) - coerceData(it, types, coerceTo); - else - reportTypeError(it); - }); - } - return checkTypes; - } - exports.coerceAndCheckDataType = coerceAndCheckDataType; - var COERCIBLE = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]); - function coerceToTypes(types, coerceTypes) { - return coerceTypes ? types.filter((t) => COERCIBLE.has(t) || coerceTypes === "array" && t === "array") : []; - } - function coerceData(it, types, coerceTo) { - const { gen, data, opts } = it; - const dataType = gen.let("dataType", (0, codegen_1._)`typeof ${data}`); - const coerced = gen.let("coerced", (0, codegen_1._)`undefined`); - if (opts.coerceTypes === "array") { - gen.if((0, codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen.assign(data, (0, codegen_1._)`${data}[0]`).assign(dataType, (0, codegen_1._)`typeof ${data}`).if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))); - } - gen.if((0, codegen_1._)`${coerced} !== undefined`); - for (const t of coerceTo) { - if (COERCIBLE.has(t) || t === "array" && opts.coerceTypes === "array") { - coerceSpecificType(t); - } - } - gen.else(); - reportTypeError(it); - gen.endIf(); - gen.if((0, codegen_1._)`${coerced} !== undefined`, () => { - gen.assign(data, coerced); - assignParentData(it, coerced); - }); - function coerceSpecificType(t) { - switch (t) { - case "string": - gen.elseIf((0, codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced, (0, codegen_1._)`"" + ${data}`).elseIf((0, codegen_1._)`${data} === null`).assign(coerced, (0, codegen_1._)`""`); - return; - case "number": - gen.elseIf((0, codegen_1._)`${dataType} == "boolean" || ${data} === null - || (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced, (0, codegen_1._)`+${data}`); - return; - case "integer": - gen.elseIf((0, codegen_1._)`${dataType} === "boolean" || ${data} === null - || (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced, (0, codegen_1._)`+${data}`); - return; - case "boolean": - gen.elseIf((0, codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced, false).elseIf((0, codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced, true); - return; - case "null": - gen.elseIf((0, codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`); - gen.assign(coerced, null); - return; - case "array": - gen.elseIf((0, codegen_1._)`${dataType} === "string" || ${dataType} === "number" - || ${dataType} === "boolean" || ${data} === null`).assign(coerced, (0, codegen_1._)`[${data}]`); - } - } - } - function assignParentData({ gen, parentData, parentDataProperty }, expr) { - gen.if((0, codegen_1._)`${parentData} !== undefined`, () => gen.assign((0, codegen_1._)`${parentData}[${parentDataProperty}]`, expr)); - } - function checkDataType(dataType, data, strictNums, correct = DataType.Correct) { - const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ; - let cond; - switch (dataType) { - case "null": - return (0, codegen_1._)`${data} ${EQ} null`; - case "array": - cond = (0, codegen_1._)`Array.isArray(${data})`; - break; - case "object": - cond = (0, codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`; - break; - case "integer": - cond = numCond((0, codegen_1._)`!(${data} % 1) && !isNaN(${data})`); - break; - case "number": - cond = numCond(); - break; - default: - return (0, codegen_1._)`typeof ${data} ${EQ} ${dataType}`; - } - return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond); - function numCond(_cond = codegen_1.nil) { - return (0, codegen_1.and)((0, codegen_1._)`typeof ${data} == "number"`, _cond, strictNums ? (0, codegen_1._)`isFinite(${data})` : codegen_1.nil); - } - } - exports.checkDataType = checkDataType; - function checkDataTypes(dataTypes, data, strictNums, correct) { - if (dataTypes.length === 1) { - return checkDataType(dataTypes[0], data, strictNums, correct); - } - let cond; - const types = (0, util_1.toHash)(dataTypes); - if (types.array && types.object) { - const notObj = (0, codegen_1._)`typeof ${data} != "object"`; - cond = types.null ? notObj : (0, codegen_1._)`!${data} || ${notObj}`; - delete types.null; - delete types.array; - delete types.object; - } else { - cond = codegen_1.nil; - } - if (types.number) - delete types.integer; - for (const t in types) - cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct)); - return cond; - } - exports.checkDataTypes = checkDataTypes; - var typeError = { - message: ({ schema }) => `must be ${schema}`, - params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._)`{type: ${schema}}` : (0, codegen_1._)`{type: ${schemaValue}}` - }; - function reportTypeError(it) { - const cxt = getTypeErrorContext(it); - (0, errors_1.reportError)(cxt, typeError); - } - exports.reportTypeError = reportTypeError; - function getTypeErrorContext(it) { - const { gen, data, schema } = it; - const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type"); - return { - gen, - keyword: "type", - data, - schema: schema.type, - schemaCode, - schemaValue: schemaCode, - parentSchema: schema, - params: {}, - it - }; - } - } -}); - -// node_modules/ajv/dist/compile/validate/defaults.js -var require_defaults = __commonJS({ - "node_modules/ajv/dist/compile/validate/defaults.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.assignDefaults = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - function assignDefaults(it, ty) { - const { properties, items } = it.schema; - if (ty === "object" && properties) { - for (const key in properties) { - assignDefault(it, key, properties[key].default); - } - } else if (ty === "array" && Array.isArray(items)) { - items.forEach((sch, i) => assignDefault(it, i, sch.default)); - } - } - exports.assignDefaults = assignDefaults; - function assignDefault(it, prop, defaultValue) { - const { gen, compositeRule, data, opts } = it; - if (defaultValue === void 0) - return; - const childData = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(prop)}`; - if (compositeRule) { - (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`); - return; - } - let condition = (0, codegen_1._)`${childData} === undefined`; - if (opts.useDefaults === "empty") { - condition = (0, codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`; - } - gen.if(condition, (0, codegen_1._)`${childData} = ${(0, codegen_1.stringify)(defaultValue)}`); - } - } -}); - -// node_modules/ajv/dist/vocabularies/code.js -var require_code2 = __commonJS({ - "node_modules/ajv/dist/vocabularies/code.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var names_1 = require_names(); - var util_2 = require_util(); - function checkReportMissingProp(cxt, prop) { - const { gen, data, it } = cxt; - gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => { - cxt.setParams({ missingProperty: (0, codegen_1._)`${prop}` }, true); - cxt.error(); - }); - } - exports.checkReportMissingProp = checkReportMissingProp; - function checkMissingProp({ gen, data, it: { opts } }, properties, missing) { - return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._)`${missing} = ${prop}`))); - } - exports.checkMissingProp = checkMissingProp; - function reportMissingProp(cxt, missing) { - cxt.setParams({ missingProperty: missing }, true); - cxt.error(); - } - exports.reportMissingProp = reportMissingProp; - function hasPropFunc(gen) { - return gen.scopeValue("func", { - // eslint-disable-next-line @typescript-eslint/unbound-method - ref: Object.prototype.hasOwnProperty, - code: (0, codegen_1._)`Object.prototype.hasOwnProperty` - }); - } - exports.hasPropFunc = hasPropFunc; - function isOwnProperty(gen, data, property) { - return (0, codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`; - } - exports.isOwnProperty = isOwnProperty; - function propertyInData(gen, data, property, ownProperties) { - const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} !== undefined`; - return ownProperties ? (0, codegen_1._)`${cond} && ${isOwnProperty(gen, data, property)}` : cond; - } - exports.propertyInData = propertyInData; - function noPropertyInData(gen, data, property, ownProperties) { - const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} === undefined`; - return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond; - } - exports.noPropertyInData = noPropertyInData; - function allSchemaProperties(schemaMap) { - return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : []; - } - exports.allSchemaProperties = allSchemaProperties; - function schemaProperties(it, schemaMap) { - return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p])); - } - exports.schemaProperties = schemaProperties; - function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) { - const dataAndSchema = passSchema ? (0, codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data; - const valCxt = [ - [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)], - [names_1.default.parentData, it.parentData], - [names_1.default.parentDataProperty, it.parentDataProperty], - [names_1.default.rootData, names_1.default.rootData] - ]; - if (it.opts.dynamicRef) - valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]); - const args = (0, codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`; - return context !== codegen_1.nil ? (0, codegen_1._)`${func}.call(${context}, ${args})` : (0, codegen_1._)`${func}(${args})`; - } - exports.callValidateCode = callValidateCode; - var newRegExp = (0, codegen_1._)`new RegExp`; - function usePattern({ gen, it: { opts } }, pattern) { - const u = opts.unicodeRegExp ? "u" : ""; - const { regExp } = opts.code; - const rx = regExp(pattern, u); - return gen.scopeValue("pattern", { - key: rx.toString(), - ref: rx, - code: (0, codegen_1._)`${regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})` - }); - } - exports.usePattern = usePattern; - function validateArray(cxt) { - const { gen, data, keyword, it } = cxt; - const valid = gen.name("valid"); - if (it.allErrors) { - const validArr = gen.let("valid", true); - validateItems(() => gen.assign(validArr, false)); - return validArr; - } - gen.var(valid, true); - validateItems(() => gen.break()); - return valid; - function validateItems(notValid) { - const len = gen.const("len", (0, codegen_1._)`${data}.length`); - gen.forRange("i", 0, len, (i) => { - cxt.subschema({ - keyword, - dataProp: i, - dataPropType: util_1.Type.Num - }, valid); - gen.if((0, codegen_1.not)(valid), notValid); - }); - } - } - exports.validateArray = validateArray; - function validateUnion(cxt) { - const { gen, schema, keyword, it } = cxt; - if (!Array.isArray(schema)) - throw new Error("ajv implementation error"); - const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch)); - if (alwaysValid && !it.opts.unevaluated) - return; - const valid = gen.let("valid", false); - const schValid = gen.name("_valid"); - gen.block(() => schema.forEach((_sch, i) => { - const schCxt = cxt.subschema({ - keyword, - schemaProp: i, - compositeRule: true - }, schValid); - gen.assign(valid, (0, codegen_1._)`${valid} || ${schValid}`); - const merged = cxt.mergeValidEvaluated(schCxt, schValid); - if (!merged) - gen.if((0, codegen_1.not)(valid)); - })); - cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); - } - exports.validateUnion = validateUnion; - } -}); - -// node_modules/ajv/dist/compile/validate/keyword.js -var require_keyword = __commonJS({ - "node_modules/ajv/dist/compile/validate/keyword.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0; - var codegen_1 = require_codegen(); - var names_1 = require_names(); - var code_1 = require_code2(); - var errors_1 = require_errors(); - function macroKeywordCode(cxt, def) { - const { gen, keyword, schema, parentSchema, it } = cxt; - const macroSchema = def.macro.call(it.self, schema, parentSchema, it); - const schemaRef = useKeyword(gen, keyword, macroSchema); - if (it.opts.validateSchema !== false) - it.self.validateSchema(macroSchema, true); - const valid = gen.name("valid"); - cxt.subschema({ - schema: macroSchema, - schemaPath: codegen_1.nil, - errSchemaPath: `${it.errSchemaPath}/${keyword}`, - topSchemaRef: schemaRef, - compositeRule: true - }, valid); - cxt.pass(valid, () => cxt.error(true)); - } - exports.macroKeywordCode = macroKeywordCode; - function funcKeywordCode(cxt, def) { - var _a; - const { gen, keyword, schema, parentSchema, $data, it } = cxt; - checkAsyncKeyword(it, def); - const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate; - const validateRef = useKeyword(gen, keyword, validate); - const valid = gen.let("valid"); - cxt.block$data(valid, validateKeyword); - cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid); - function validateKeyword() { - if (def.errors === false) { - assignValid(); - if (def.modifying) - modifyData(cxt); - reportErrs(() => cxt.error()); - } else { - const ruleErrs = def.async ? validateAsync() : validateSync(); - if (def.modifying) - modifyData(cxt); - reportErrs(() => addErrs(cxt, ruleErrs)); - } - } - function validateAsync() { - const ruleErrs = gen.let("ruleErrs", null); - gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`${e}.errors`), () => gen.throw(e))); - return ruleErrs; - } - function validateSync() { - const validateErrs = (0, codegen_1._)`${validateRef}.errors`; - gen.assign(validateErrs, null); - assignValid(codegen_1.nil); - return validateErrs; - } - function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) { - const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self; - const passSchema = !("compile" in def && !$data || def.schema === false); - gen.assign(valid, (0, codegen_1._)`${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying); - } - function reportErrs(errors) { - var _a2; - gen.if((0, codegen_1.not)((_a2 = def.valid) !== null && _a2 !== void 0 ? _a2 : valid), errors); - } - } - exports.funcKeywordCode = funcKeywordCode; - function modifyData(cxt) { - const { gen, data, it } = cxt; - gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`${it.parentData}[${it.parentDataProperty}]`)); - } - function addErrs(cxt, errs) { - const { gen } = cxt; - gen.if((0, codegen_1._)`Array.isArray(${errs})`, () => { - gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`); - (0, errors_1.extendErrors)(cxt); - }, () => cxt.error()); - } - function checkAsyncKeyword({ schemaEnv }, def) { - if (def.async && !schemaEnv.$async) - throw new Error("async keyword in sync schema"); - } - function useKeyword(gen, keyword, result) { - if (result === void 0) - throw new Error(`keyword "${keyword}" failed to compile`); - return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) }); - } - function validSchemaType(schema, schemaType, allowUndefined = false) { - return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined"); - } - exports.validSchemaType = validSchemaType; - function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) { - if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) { - throw new Error("ajv implementation error"); - } - const deps = def.dependencies; - if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) { - throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`); - } - if (def.validateSchema) { - const valid = def.validateSchema(schema[keyword]); - if (!valid) { - const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + self.errorsText(def.validateSchema.errors); - if (opts.validateSchema === "log") - self.logger.error(msg); - else - throw new Error(msg); - } - } - } - exports.validateKeywordUsage = validateKeywordUsage; - } -}); - -// node_modules/ajv/dist/compile/validate/subschema.js -var require_subschema = __commonJS({ - "node_modules/ajv/dist/compile/validate/subschema.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) { - if (keyword !== void 0 && schema !== void 0) { - throw new Error('both "keyword" and "schema" passed, only one allowed'); - } - if (keyword !== void 0) { - const sch = it.schema[keyword]; - return schemaProp === void 0 ? { - schema: sch, - schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`, - errSchemaPath: `${it.errSchemaPath}/${keyword}` - } : { - schema: sch[schemaProp], - schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`, - errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}` - }; - } - if (schema !== void 0) { - if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) { - throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"'); - } - return { - schema, - schemaPath, - topSchemaRef, - errSchemaPath - }; - } - throw new Error('either "keyword" or "schema" must be passed'); - } - exports.getSubschema = getSubschema; - function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) { - if (data !== void 0 && dataProp !== void 0) { - throw new Error('both "data" and "dataProp" passed, only one allowed'); - } - const { gen } = it; - if (dataProp !== void 0) { - const { errorPath, dataPathArr, opts } = it; - const nextData = gen.let("data", (0, codegen_1._)`${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true); - dataContextProps(nextData); - subschema.errorPath = (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`; - subschema.parentDataProperty = (0, codegen_1._)`${dataProp}`; - subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]; - } - if (data !== void 0) { - const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true); - dataContextProps(nextData); - if (propertyName !== void 0) - subschema.propertyName = propertyName; - } - if (dataTypes) - subschema.dataTypes = dataTypes; - function dataContextProps(_nextData) { - subschema.data = _nextData; - subschema.dataLevel = it.dataLevel + 1; - subschema.dataTypes = []; - it.definedProperties = /* @__PURE__ */ new Set(); - subschema.parentData = it.data; - subschema.dataNames = [...it.dataNames, _nextData]; - } - } - exports.extendSubschemaData = extendSubschemaData; - function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) { - if (compositeRule !== void 0) - subschema.compositeRule = compositeRule; - if (createErrors !== void 0) - subschema.createErrors = createErrors; - if (allErrors !== void 0) - subschema.allErrors = allErrors; - subschema.jtdDiscriminator = jtdDiscriminator; - subschema.jtdMetadata = jtdMetadata; - } - exports.extendSubschemaMode = extendSubschemaMode; - } -}); - -// node_modules/fast-deep-equal/index.js -var require_fast_deep_equal = __commonJS({ - "node_modules/fast-deep-equal/index.js"(exports, module) { - "use strict"; - module.exports = function equal(a, b) { - if (a === b) return true; - if (a && b && typeof a == "object" && typeof b == "object") { - if (a.constructor !== b.constructor) return false; - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0; ) - if (!equal(a[i], b[i])) return false; - return true; - } - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - for (i = length; i-- !== 0; ) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - for (i = length; i-- !== 0; ) { - var key = keys[i]; - if (!equal(a[key], b[key])) return false; - } - return true; - } - return a !== a && b !== b; - }; - } -}); - -// node_modules/json-schema-traverse/index.js -var require_json_schema_traverse = __commonJS({ - "node_modules/json-schema-traverse/index.js"(exports, module) { - "use strict"; - var traverse = module.exports = function(schema, opts, cb) { - if (typeof opts == "function") { - cb = opts; - opts = {}; - } - cb = opts.cb || cb; - var pre = typeof cb == "function" ? cb : cb.pre || function() { - }; - var post = cb.post || function() { - }; - _traverse(opts, pre, post, schema, "", schema); - }; - traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true, - if: true, - then: true, - else: true - }; - traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true - }; - traverse.propsKeywords = { - $defs: true, - definitions: true, - properties: true, - patternProperties: true, - dependencies: true - }; - traverse.skipKeywords = { - default: true, - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true - }; - function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == "object" && !Array.isArray(schema)) { - pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i = 0; i < sch.length; i++) - _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i); - } - } else if (key in traverse.propsKeywords) { - if (sch && typeof sch == "object") { - for (var prop in sch) - _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop); - } - } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) { - _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema); - } - } - post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - } - } - function escapeJsonPtr(str) { - return str.replace(/~/g, "~0").replace(/\//g, "~1"); - } - } -}); - -// node_modules/ajv/dist/compile/resolve.js -var require_resolve = __commonJS({ - "node_modules/ajv/dist/compile/resolve.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0; - var util_1 = require_util(); - var equal = require_fast_deep_equal(); - var traverse = require_json_schema_traverse(); - var SIMPLE_INLINED = /* @__PURE__ */ new Set([ - "type", - "format", - "pattern", - "maxLength", - "minLength", - "maxProperties", - "minProperties", - "maxItems", - "minItems", - "maximum", - "minimum", - "uniqueItems", - "multipleOf", - "required", - "enum", - "const" - ]); - function inlineRef(schema, limit = true) { - if (typeof schema == "boolean") - return true; - if (limit === true) - return !hasRef(schema); - if (!limit) - return false; - return countKeys(schema) <= limit; - } - exports.inlineRef = inlineRef; - var REF_KEYWORDS = /* @__PURE__ */ new Set([ - "$ref", - "$recursiveRef", - "$recursiveAnchor", - "$dynamicRef", - "$dynamicAnchor" - ]); - function hasRef(schema) { - for (const key in schema) { - if (REF_KEYWORDS.has(key)) - return true; - const sch = schema[key]; - if (Array.isArray(sch) && sch.some(hasRef)) - return true; - if (typeof sch == "object" && hasRef(sch)) - return true; - } - return false; - } - function countKeys(schema) { - let count = 0; - for (const key in schema) { - if (key === "$ref") - return Infinity; - count++; - if (SIMPLE_INLINED.has(key)) - continue; - if (typeof schema[key] == "object") { - (0, util_1.eachItem)(schema[key], (sch) => count += countKeys(sch)); - } - if (count === Infinity) - return Infinity; - } - return count; - } - function getFullPath(resolver, id = "", normalize) { - if (normalize !== false) - id = normalizeId(id); - const p = resolver.parse(id); - return _getFullPath(resolver, p); - } - exports.getFullPath = getFullPath; - function _getFullPath(resolver, p) { - const serialized = resolver.serialize(p); - return serialized.split("#")[0] + "#"; - } - exports._getFullPath = _getFullPath; - var TRAILING_SLASH_HASH = /#\/?$/; - function normalizeId(id) { - return id ? id.replace(TRAILING_SLASH_HASH, "") : ""; - } - exports.normalizeId = normalizeId; - function resolveUrl(resolver, baseId, id) { - id = normalizeId(id); - return resolver.resolve(baseId, id); - } - exports.resolveUrl = resolveUrl; - var ANCHOR = /^[a-z_][-a-z0-9._]*$/i; - function getSchemaRefs(schema, baseId) { - if (typeof schema == "boolean") - return {}; - const { schemaId, uriResolver } = this.opts; - const schId = normalizeId(schema[schemaId] || baseId); - const baseIds = { "": schId }; - const pathPrefix = getFullPath(uriResolver, schId, false); - const localRefs = {}; - const schemaRefs = /* @__PURE__ */ new Set(); - traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => { - if (parentJsonPtr === void 0) - return; - const fullPath = pathPrefix + jsonPtr; - let innerBaseId = baseIds[parentJsonPtr]; - if (typeof sch[schemaId] == "string") - innerBaseId = addRef.call(this, sch[schemaId]); - addAnchor.call(this, sch.$anchor); - addAnchor.call(this, sch.$dynamicAnchor); - baseIds[jsonPtr] = innerBaseId; - function addRef(ref) { - const _resolve = this.opts.uriResolver.resolve; - ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref); - if (schemaRefs.has(ref)) - throw ambiguos(ref); - schemaRefs.add(ref); - let schOrRef = this.refs[ref]; - if (typeof schOrRef == "string") - schOrRef = this.refs[schOrRef]; - if (typeof schOrRef == "object") { - checkAmbiguosRef(sch, schOrRef.schema, ref); - } else if (ref !== normalizeId(fullPath)) { - if (ref[0] === "#") { - checkAmbiguosRef(sch, localRefs[ref], ref); - localRefs[ref] = sch; - } else { - this.refs[ref] = fullPath; - } - } - return ref; - } - function addAnchor(anchor) { - if (typeof anchor == "string") { - if (!ANCHOR.test(anchor)) - throw new Error(`invalid anchor "${anchor}"`); - addRef.call(this, `#${anchor}`); - } - } - }); - return localRefs; - function checkAmbiguosRef(sch1, sch2, ref) { - if (sch2 !== void 0 && !equal(sch1, sch2)) - throw ambiguos(ref); - } - function ambiguos(ref) { - return new Error(`reference "${ref}" resolves to more than one schema`); - } - } - exports.getSchemaRefs = getSchemaRefs; - } -}); - -// node_modules/ajv/dist/compile/validate/index.js -var require_validate = __commonJS({ - "node_modules/ajv/dist/compile/validate/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0; - var boolSchema_1 = require_boolSchema(); - var dataType_1 = require_dataType(); - var applicability_1 = require_applicability(); - var dataType_2 = require_dataType(); - var defaults_1 = require_defaults(); - var keyword_1 = require_keyword(); - var subschema_1 = require_subschema(); - var codegen_1 = require_codegen(); - var names_1 = require_names(); - var resolve_1 = require_resolve(); - var util_1 = require_util(); - var errors_1 = require_errors(); - function validateFunctionCode(it) { - if (isSchemaObj(it)) { - checkKeywords(it); - if (schemaCxtHasRules(it)) { - topSchemaObjCode(it); - return; - } - } - validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it)); - } - exports.validateFunctionCode = validateFunctionCode; - function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) { - if (opts.code.es5) { - gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => { - gen.code((0, codegen_1._)`"use strict"; ${funcSourceUrl(schema, opts)}`); - destructureValCxtES5(gen, opts); - gen.code(body); - }); - } else { - gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body)); - } - } - function destructureValCxt(opts) { - return (0, codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._)`, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`; - } - function destructureValCxtES5(gen, opts) { - gen.if(names_1.default.valCxt, () => { - gen.var(names_1.default.instancePath, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`); - gen.var(names_1.default.parentData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`); - gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`); - gen.var(names_1.default.rootData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`); - if (opts.dynamicRef) - gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`); - }, () => { - gen.var(names_1.default.instancePath, (0, codegen_1._)`""`); - gen.var(names_1.default.parentData, (0, codegen_1._)`undefined`); - gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`undefined`); - gen.var(names_1.default.rootData, names_1.default.data); - if (opts.dynamicRef) - gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`{}`); - }); - } - function topSchemaObjCode(it) { - const { schema, opts, gen } = it; - validateFunction(it, () => { - if (opts.$comment && schema.$comment) - commentKeyword(it); - checkNoDefault(it); - gen.let(names_1.default.vErrors, null); - gen.let(names_1.default.errors, 0); - if (opts.unevaluated) - resetEvaluated(it); - typeAndKeywords(it); - returnResults(it); - }); - return; - } - function resetEvaluated(it) { - const { gen, validateName } = it; - it.evaluated = gen.const("evaluated", (0, codegen_1._)`${validateName}.evaluated`); - gen.if((0, codegen_1._)`${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._)`${it.evaluated}.props`, (0, codegen_1._)`undefined`)); - gen.if((0, codegen_1._)`${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._)`${it.evaluated}.items`, (0, codegen_1._)`undefined`)); - } - function funcSourceUrl(schema, opts) { - const schId = typeof schema == "object" && schema[opts.schemaId]; - return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._)`/*# sourceURL=${schId} */` : codegen_1.nil; - } - function subschemaCode(it, valid) { - if (isSchemaObj(it)) { - checkKeywords(it); - if (schemaCxtHasRules(it)) { - subSchemaObjCode(it, valid); - return; - } - } - (0, boolSchema_1.boolOrEmptySchema)(it, valid); - } - function schemaCxtHasRules({ schema, self }) { - if (typeof schema == "boolean") - return !schema; - for (const key in schema) - if (self.RULES.all[key]) - return true; - return false; - } - function isSchemaObj(it) { - return typeof it.schema != "boolean"; - } - function subSchemaObjCode(it, valid) { - const { schema, gen, opts } = it; - if (opts.$comment && schema.$comment) - commentKeyword(it); - updateContext(it); - checkAsyncSchema(it); - const errsCount = gen.const("_errs", names_1.default.errors); - typeAndKeywords(it, errsCount); - gen.var(valid, (0, codegen_1._)`${errsCount} === ${names_1.default.errors}`); - } - function checkKeywords(it) { - (0, util_1.checkUnknownRules)(it); - checkRefsAndKeywords(it); - } - function typeAndKeywords(it, errsCount) { - if (it.opts.jtd) - return schemaKeywords(it, [], false, errsCount); - const types = (0, dataType_1.getSchemaTypes)(it.schema); - const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types); - schemaKeywords(it, types, !checkedTypes, errsCount); - } - function checkRefsAndKeywords(it) { - const { schema, errSchemaPath, opts, self } = it; - if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) { - self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`); - } - } - function checkNoDefault(it) { - const { schema, opts } = it; - if (schema.default !== void 0 && opts.useDefaults && opts.strictSchema) { - (0, util_1.checkStrictMode)(it, "default is ignored in the schema root"); - } - } - function updateContext(it) { - const schId = it.schema[it.opts.schemaId]; - if (schId) - it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId); - } - function checkAsyncSchema(it) { - if (it.schema.$async && !it.schemaEnv.$async) - throw new Error("async schema in sync schema"); - } - function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) { - const msg = schema.$comment; - if (opts.$comment === true) { - gen.code((0, codegen_1._)`${names_1.default.self}.logger.log(${msg})`); - } else if (typeof opts.$comment == "function") { - const schemaPath = (0, codegen_1.str)`${errSchemaPath}/$comment`; - const rootName = gen.scopeValue("root", { ref: schemaEnv.root }); - gen.code((0, codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`); - } - } - function returnResults(it) { - const { gen, schemaEnv, validateName, ValidationError, opts } = it; - if (schemaEnv.$async) { - gen.if((0, codegen_1._)`${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._)`new ${ValidationError}(${names_1.default.vErrors})`)); - } else { - gen.assign((0, codegen_1._)`${validateName}.errors`, names_1.default.vErrors); - if (opts.unevaluated) - assignEvaluated(it); - gen.return((0, codegen_1._)`${names_1.default.errors} === 0`); - } - } - function assignEvaluated({ gen, evaluated, props, items }) { - if (props instanceof codegen_1.Name) - gen.assign((0, codegen_1._)`${evaluated}.props`, props); - if (items instanceof codegen_1.Name) - gen.assign((0, codegen_1._)`${evaluated}.items`, items); - } - function schemaKeywords(it, types, typeErrors, errsCount) { - const { gen, schema, data, allErrors, opts, self } = it; - const { RULES } = self; - if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) { - gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition)); - return; - } - if (!opts.jtd) - checkStrictTypes(it, types); - gen.block(() => { - for (const group of RULES.rules) - groupKeywords(group); - groupKeywords(RULES.post); - }); - function groupKeywords(group) { - if (!(0, applicability_1.shouldUseGroup)(schema, group)) - return; - if (group.type) { - gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers)); - iterateKeywords(it, group); - if (types.length === 1 && types[0] === group.type && typeErrors) { - gen.else(); - (0, dataType_2.reportTypeError)(it); - } - gen.endIf(); - } else { - iterateKeywords(it, group); - } - if (!allErrors) - gen.if((0, codegen_1._)`${names_1.default.errors} === ${errsCount || 0}`); - } - } - function iterateKeywords(it, group) { - const { gen, schema, opts: { useDefaults } } = it; - if (useDefaults) - (0, defaults_1.assignDefaults)(it, group.type); - gen.block(() => { - for (const rule of group.rules) { - if ((0, applicability_1.shouldUseRule)(schema, rule)) { - keywordCode(it, rule.keyword, rule.definition, group.type); - } - } - }); - } - function checkStrictTypes(it, types) { - if (it.schemaEnv.meta || !it.opts.strictTypes) - return; - checkContextTypes(it, types); - if (!it.opts.allowUnionTypes) - checkMultipleTypes(it, types); - checkKeywordTypes(it, it.dataTypes); - } - function checkContextTypes(it, types) { - if (!types.length) - return; - if (!it.dataTypes.length) { - it.dataTypes = types; - return; - } - types.forEach((t) => { - if (!includesType(it.dataTypes, t)) { - strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`); - } - }); - narrowSchemaTypes(it, types); - } - function checkMultipleTypes(it, ts) { - if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) { - strictTypesError(it, "use allowUnionTypes to allow union type keyword"); - } - } - function checkKeywordTypes(it, ts) { - const rules = it.self.RULES.all; - for (const keyword in rules) { - const rule = rules[keyword]; - if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) { - const { type } = rule.definition; - if (type.length && !type.some((t) => hasApplicableType(ts, t))) { - strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`); - } - } - } - } - function hasApplicableType(schTs, kwdT) { - return schTs.includes(kwdT) || kwdT === "number" && schTs.includes("integer"); - } - function includesType(ts, t) { - return ts.includes(t) || t === "integer" && ts.includes("number"); - } - function narrowSchemaTypes(it, withTypes) { - const ts = []; - for (const t of it.dataTypes) { - if (includesType(withTypes, t)) - ts.push(t); - else if (withTypes.includes("integer") && t === "number") - ts.push("integer"); - } - it.dataTypes = ts; - } - function strictTypesError(it, msg) { - const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; - msg += ` at "${schemaPath}" (strictTypes)`; - (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes); - } - var KeywordCxt = class { - constructor(it, def, keyword) { - (0, keyword_1.validateKeywordUsage)(it, def, keyword); - this.gen = it.gen; - this.allErrors = it.allErrors; - this.keyword = keyword; - this.data = it.data; - this.schema = it.schema[keyword]; - this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data; - this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data); - this.schemaType = def.schemaType; - this.parentSchema = it.schema; - this.params = {}; - this.it = it; - this.def = def; - if (this.$data) { - this.schemaCode = it.gen.const("vSchema", getData(this.$data, it)); - } else { - this.schemaCode = this.schemaValue; - if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) { - throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`); - } - } - if ("code" in def ? def.trackErrors : def.errors !== false) { - this.errsCount = it.gen.const("_errs", names_1.default.errors); - } - } - result(condition, successAction, failAction) { - this.failResult((0, codegen_1.not)(condition), successAction, failAction); - } - failResult(condition, successAction, failAction) { - this.gen.if(condition); - if (failAction) - failAction(); - else - this.error(); - if (successAction) { - this.gen.else(); - successAction(); - if (this.allErrors) - this.gen.endIf(); - } else { - if (this.allErrors) - this.gen.endIf(); - else - this.gen.else(); - } - } - pass(condition, failAction) { - this.failResult((0, codegen_1.not)(condition), void 0, failAction); - } - fail(condition) { - if (condition === void 0) { - this.error(); - if (!this.allErrors) - this.gen.if(false); - return; - } - this.gen.if(condition); - this.error(); - if (this.allErrors) - this.gen.endIf(); - else - this.gen.else(); - } - fail$data(condition) { - if (!this.$data) - return this.fail(condition); - const { schemaCode } = this; - this.fail((0, codegen_1._)`${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`); - } - error(append, errorParams, errorPaths) { - if (errorParams) { - this.setParams(errorParams); - this._error(append, errorPaths); - this.setParams({}); - return; - } - this._error(append, errorPaths); - } - _error(append, errorPaths) { - ; - (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths); - } - $dataError() { - (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError); - } - reset() { - if (this.errsCount === void 0) - throw new Error('add "trackErrors" to keyword definition'); - (0, errors_1.resetErrorsCount)(this.gen, this.errsCount); - } - ok(cond) { - if (!this.allErrors) - this.gen.if(cond); - } - setParams(obj, assign) { - if (assign) - Object.assign(this.params, obj); - else - this.params = obj; - } - block$data(valid, codeBlock, $dataValid = codegen_1.nil) { - this.gen.block(() => { - this.check$data(valid, $dataValid); - codeBlock(); - }); - } - check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) { - if (!this.$data) - return; - const { gen, schemaCode, schemaType, def } = this; - gen.if((0, codegen_1.or)((0, codegen_1._)`${schemaCode} === undefined`, $dataValid)); - if (valid !== codegen_1.nil) - gen.assign(valid, true); - if (schemaType.length || def.validateSchema) { - gen.elseIf(this.invalid$data()); - this.$dataError(); - if (valid !== codegen_1.nil) - gen.assign(valid, false); - } - gen.else(); - } - invalid$data() { - const { gen, schemaCode, schemaType, def, it } = this; - return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema()); - function wrong$DataType() { - if (schemaType.length) { - if (!(schemaCode instanceof codegen_1.Name)) - throw new Error("ajv implementation error"); - const st = Array.isArray(schemaType) ? schemaType : [schemaType]; - return (0, codegen_1._)`${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`; - } - return codegen_1.nil; - } - function invalid$DataSchema() { - if (def.validateSchema) { - const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); - return (0, codegen_1._)`!${validateSchemaRef}(${schemaCode})`; - } - return codegen_1.nil; - } - } - subschema(appl, valid) { - const subschema = (0, subschema_1.getSubschema)(this.it, appl); - (0, subschema_1.extendSubschemaData)(subschema, this.it, appl); - (0, subschema_1.extendSubschemaMode)(subschema, appl); - const nextContext = { ...this.it, ...subschema, items: void 0, props: void 0 }; - subschemaCode(nextContext, valid); - return nextContext; - } - mergeEvaluated(schemaCxt, toName) { - const { it, gen } = this; - if (!it.opts.unevaluated) - return; - if (it.props !== true && schemaCxt.props !== void 0) { - it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName); - } - if (it.items !== true && schemaCxt.items !== void 0) { - it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName); - } - } - mergeValidEvaluated(schemaCxt, valid) { - const { it, gen } = this; - if (it.opts.unevaluated && (it.props !== true || it.items !== true)) { - gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name)); - return true; - } - } - }; - exports.KeywordCxt = KeywordCxt; - function keywordCode(it, keyword, def, ruleType) { - const cxt = new KeywordCxt(it, def, keyword); - if ("code" in def) { - def.code(cxt, ruleType); - } else if (cxt.$data && def.validate) { - (0, keyword_1.funcKeywordCode)(cxt, def); - } else if ("macro" in def) { - (0, keyword_1.macroKeywordCode)(cxt, def); - } else if (def.compile || def.validate) { - (0, keyword_1.funcKeywordCode)(cxt, def); - } - } - var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; - var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; - function getData($data, { dataLevel, dataNames, dataPathArr }) { - let jsonPointer; - let data; - if ($data === "") - return names_1.default.rootData; - if ($data[0] === "/") { - if (!JSON_POINTER.test($data)) - throw new Error(`Invalid JSON-pointer: ${$data}`); - jsonPointer = $data; - data = names_1.default.rootData; - } else { - const matches = RELATIVE_JSON_POINTER.exec($data); - if (!matches) - throw new Error(`Invalid JSON-pointer: ${$data}`); - const up = +matches[1]; - jsonPointer = matches[2]; - if (jsonPointer === "#") { - if (up >= dataLevel) - throw new Error(errorMsg("property/index", up)); - return dataPathArr[dataLevel - up]; - } - if (up > dataLevel) - throw new Error(errorMsg("data", up)); - data = dataNames[dataLevel - up]; - if (!jsonPointer) - return data; - } - let expr = data; - const segments = jsonPointer.split("/"); - for (const segment of segments) { - if (segment) { - data = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`; - expr = (0, codegen_1._)`${expr} && ${data}`; - } - } - return expr; - function errorMsg(pointerType, up) { - return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`; - } - } - exports.getData = getData; - } -}); - -// node_modules/ajv/dist/runtime/validation_error.js -var require_validation_error = __commonJS({ - "node_modules/ajv/dist/runtime/validation_error.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ValidationError = class extends Error { - constructor(errors) { - super("validation failed"); - this.errors = errors; - this.ajv = this.validation = true; - } - }; - exports.default = ValidationError; - } -}); - -// node_modules/ajv/dist/compile/ref_error.js -var require_ref_error = __commonJS({ - "node_modules/ajv/dist/compile/ref_error.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var resolve_1 = require_resolve(); - var MissingRefError = class extends Error { - constructor(resolver, baseId, ref, msg) { - super(msg || `can't resolve reference ${ref} from id ${baseId}`); - this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref); - this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef)); - } - }; - exports.default = MissingRefError; - } -}); - -// node_modules/ajv/dist/compile/index.js -var require_compile = __commonJS({ - "node_modules/ajv/dist/compile/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0; - var codegen_1 = require_codegen(); - var validation_error_1 = require_validation_error(); - var names_1 = require_names(); - var resolve_1 = require_resolve(); - var util_1 = require_util(); - var validate_1 = require_validate(); - var SchemaEnv = class { - constructor(env) { - var _a; - this.refs = {}; - this.dynamicAnchors = {}; - let schema; - if (typeof env.schema == "object") - schema = env.schema; - this.schema = env.schema; - this.schemaId = env.schemaId; - this.root = env.root || this; - this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]); - this.schemaPath = env.schemaPath; - this.localRefs = env.localRefs; - this.meta = env.meta; - this.$async = schema === null || schema === void 0 ? void 0 : schema.$async; - this.refs = {}; - } - }; - exports.SchemaEnv = SchemaEnv; - function compileSchema(sch) { - const _sch = getCompilingSchema.call(this, sch); - if (_sch) - return _sch; - const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); - const { es5, lines } = this.opts.code; - const { ownProperties } = this.opts; - const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties }); - let _ValidationError; - if (sch.$async) { - _ValidationError = gen.scopeValue("Error", { - ref: validation_error_1.default, - code: (0, codegen_1._)`require("ajv/dist/runtime/validation_error").default` - }); - } - const validateName = gen.scopeName("validate"); - sch.validateName = validateName; - const schemaCxt = { - gen, - allErrors: this.opts.allErrors, - data: names_1.default.data, - parentData: names_1.default.parentData, - parentDataProperty: names_1.default.parentDataProperty, - dataNames: [names_1.default.data], - dataPathArr: [codegen_1.nil], - // TODO can its length be used as dataLevel if nil is removed? - dataLevel: 0, - dataTypes: [], - definedProperties: /* @__PURE__ */ new Set(), - topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } : { ref: sch.schema }), - validateName, - ValidationError: _ValidationError, - schema: sch.schema, - schemaEnv: sch, - rootId, - baseId: sch.baseId || rootId, - schemaPath: codegen_1.nil, - errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"), - errorPath: (0, codegen_1._)`""`, - opts: this.opts, - self: this - }; - let sourceCode; - try { - this._compilations.add(sch); - (0, validate_1.validateFunctionCode)(schemaCxt); - gen.optimize(this.opts.code.optimize); - const validateCode = gen.toString(); - sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`; - if (this.opts.code.process) - sourceCode = this.opts.code.process(sourceCode, sch); - const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode); - const validate = makeValidate(this, this.scope.get()); - this.scope.value(validateName, { ref: validate }); - validate.errors = null; - validate.schema = sch.schema; - validate.schemaEnv = sch; - if (sch.$async) - validate.$async = true; - if (this.opts.code.source === true) { - validate.source = { validateName, validateCode, scopeValues: gen._values }; - } - if (this.opts.unevaluated) { - const { props, items } = schemaCxt; - validate.evaluated = { - props: props instanceof codegen_1.Name ? void 0 : props, - items: items instanceof codegen_1.Name ? void 0 : items, - dynamicProps: props instanceof codegen_1.Name, - dynamicItems: items instanceof codegen_1.Name - }; - if (validate.source) - validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated); - } - sch.validate = validate; - return sch; - } catch (e) { - delete sch.validate; - delete sch.validateName; - if (sourceCode) - this.logger.error("Error compiling schema, function code:", sourceCode); - throw e; - } finally { - this._compilations.delete(sch); - } - } - exports.compileSchema = compileSchema; - function resolveRef(root, baseId, ref) { - var _a; - ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref); - const schOrFunc = root.refs[ref]; - if (schOrFunc) - return schOrFunc; - let _sch = resolve.call(this, root, ref); - if (_sch === void 0) { - const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; - const { schemaId } = this.opts; - if (schema) - _sch = new SchemaEnv({ schema, schemaId, root, baseId }); - } - if (_sch === void 0) - return; - return root.refs[ref] = inlineOrCompile.call(this, _sch); - } - exports.resolveRef = resolveRef; - function inlineOrCompile(sch) { - if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs)) - return sch.schema; - return sch.validate ? sch : compileSchema.call(this, sch); - } - function getCompilingSchema(schEnv) { - for (const sch of this._compilations) { - if (sameSchemaEnv(sch, schEnv)) - return sch; - } - } - exports.getCompilingSchema = getCompilingSchema; - function sameSchemaEnv(s1, s2) { - return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId; - } - function resolve(root, ref) { - let sch; - while (typeof (sch = this.refs[ref]) == "string") - ref = sch; - return sch || this.schemas[ref] || resolveSchema.call(this, root, ref); - } - function resolveSchema(root, ref) { - const p = this.opts.uriResolver.parse(ref); - const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p); - let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, void 0); - if (Object.keys(root.schema).length > 0 && refPath === baseId) { - return getJsonPointer.call(this, p, root); - } - const id = (0, resolve_1.normalizeId)(refPath); - const schOrRef = this.refs[id] || this.schemas[id]; - if (typeof schOrRef == "string") { - const sch = resolveSchema.call(this, root, schOrRef); - if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object") - return; - return getJsonPointer.call(this, p, sch); - } - if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object") - return; - if (!schOrRef.validate) - compileSchema.call(this, schOrRef); - if (id === (0, resolve_1.normalizeId)(ref)) { - const { schema } = schOrRef; - const { schemaId } = this.opts; - const schId = schema[schemaId]; - if (schId) - baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); - return new SchemaEnv({ schema, schemaId, root, baseId }); - } - return getJsonPointer.call(this, p, schOrRef); - } - exports.resolveSchema = resolveSchema; - var PREVENT_SCOPE_CHANGE = /* @__PURE__ */ new Set([ - "properties", - "patternProperties", - "enum", - "dependencies", - "definitions" - ]); - function getJsonPointer(parsedRef, { baseId, schema, root }) { - var _a; - if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== "/") - return; - for (const part of parsedRef.fragment.slice(1).split("/")) { - if (typeof schema === "boolean") - return; - const partSchema = schema[(0, util_1.unescapeFragment)(part)]; - if (partSchema === void 0) - return; - schema = partSchema; - const schId = typeof schema === "object" && schema[this.opts.schemaId]; - if (!PREVENT_SCOPE_CHANGE.has(part) && schId) { - baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); - } - } - let env; - if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) { - const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref); - env = resolveSchema.call(this, root, $ref); - } - const { schemaId } = this.opts; - env = env || new SchemaEnv({ schema, schemaId, root, baseId }); - if (env.schema !== env.root.schema) - return env; - return void 0; - } - } -}); - -// node_modules/ajv/dist/refs/data.json -var require_data = __commonJS({ - "node_modules/ajv/dist/refs/data.json"(exports, module) { - module.exports = { - $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", - description: "Meta-schema for $data reference (JSON AnySchema extension proposal)", - type: "object", - required: ["$data"], - properties: { - $data: { - type: "string", - anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }] - } - }, - additionalProperties: false - }; - } -}); - -// node_modules/fast-uri/lib/utils.js -var require_utils = __commonJS({ - "node_modules/fast-uri/lib/utils.js"(exports, module) { - "use strict"; - var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu); - var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u); - function stringArrayToHexStripped(input) { - let acc = ""; - let code = 0; - let i = 0; - for (i = 0; i < input.length; i++) { - code = input[i].charCodeAt(0); - if (code === 48) { - continue; - } - if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) { - return ""; - } - acc += input[i]; - break; - } - for (i += 1; i < input.length; i++) { - code = input[i].charCodeAt(0); - if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) { - return ""; - } - acc += input[i]; - } - return acc; - } - var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u); - function consumeIsZone(buffer) { - buffer.length = 0; - return true; - } - function consumeHextets(buffer, address, output) { - if (buffer.length) { - const hex = stringArrayToHexStripped(buffer); - if (hex !== "") { - address.push(hex); - } else { - output.error = true; - return false; - } - buffer.length = 0; - } - return true; - } - function getIPV6(input) { - let tokenCount = 0; - const output = { error: false, address: "", zone: "" }; - const address = []; - const buffer = []; - let endipv6Encountered = false; - let endIpv6 = false; - let consume = consumeHextets; - for (let i = 0; i < input.length; i++) { - const cursor = input[i]; - if (cursor === "[" || cursor === "]") { - continue; - } - if (cursor === ":") { - if (endipv6Encountered === true) { - endIpv6 = true; - } - if (!consume(buffer, address, output)) { - break; - } - if (++tokenCount > 7) { - output.error = true; - break; - } - if (i > 0 && input[i - 1] === ":") { - endipv6Encountered = true; - } - address.push(":"); - continue; - } else if (cursor === "%") { - if (!consume(buffer, address, output)) { - break; - } - consume = consumeIsZone; - } else { - buffer.push(cursor); - continue; - } - } - if (buffer.length) { - if (consume === consumeIsZone) { - output.zone = buffer.join(""); - } else if (endIpv6) { - address.push(buffer.join("")); - } else { - address.push(stringArrayToHexStripped(buffer)); - } - } - output.address = address.join(""); - return output; - } - function normalizeIPv6(host) { - if (findToken(host, ":") < 2) { - return { host, isIPV6: false }; - } - const ipv6 = getIPV6(host); - if (!ipv6.error) { - let newHost = ipv6.address; - let escapedHost = ipv6.address; - if (ipv6.zone) { - newHost += "%" + ipv6.zone; - escapedHost += "%25" + ipv6.zone; - } - return { host: newHost, isIPV6: true, escapedHost }; - } else { - return { host, isIPV6: false }; - } - } - function findToken(str, token) { - let ind = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === token) ind++; - } - return ind; - } - function removeDotSegments(path) { - let input = path; - const output = []; - let nextSlash = -1; - let len = 0; - while (len = input.length) { - if (len === 1) { - if (input === ".") { - break; - } else if (input === "/") { - output.push("/"); - break; - } else { - output.push(input); - break; - } - } else if (len === 2) { - if (input[0] === ".") { - if (input[1] === ".") { - break; - } else if (input[1] === "/") { - input = input.slice(2); - continue; - } - } else if (input[0] === "/") { - if (input[1] === "." || input[1] === "/") { - output.push("/"); - break; - } - } - } else if (len === 3) { - if (input === "/..") { - if (output.length !== 0) { - output.pop(); - } - output.push("/"); - break; - } - } - if (input[0] === ".") { - if (input[1] === ".") { - if (input[2] === "/") { - input = input.slice(3); - continue; - } - } else if (input[1] === "/") { - input = input.slice(2); - continue; - } - } else if (input[0] === "/") { - if (input[1] === ".") { - if (input[2] === "/") { - input = input.slice(2); - continue; - } else if (input[2] === ".") { - if (input[3] === "/") { - input = input.slice(3); - if (output.length !== 0) { - output.pop(); - } - continue; - } - } - } - } - if ((nextSlash = input.indexOf("/", 1)) === -1) { - output.push(input); - break; - } else { - output.push(input.slice(0, nextSlash)); - input = input.slice(nextSlash); - } - } - return output.join(""); - } - function normalizeComponentEncoding(component, esc) { - const func = esc !== true ? escape : unescape; - if (component.scheme !== void 0) { - component.scheme = func(component.scheme); - } - if (component.userinfo !== void 0) { - component.userinfo = func(component.userinfo); - } - if (component.host !== void 0) { - component.host = func(component.host); - } - if (component.path !== void 0) { - component.path = func(component.path); - } - if (component.query !== void 0) { - component.query = func(component.query); - } - if (component.fragment !== void 0) { - component.fragment = func(component.fragment); - } - return component; - } - function recomposeAuthority(component) { - const uriTokens = []; - if (component.userinfo !== void 0) { - uriTokens.push(component.userinfo); - uriTokens.push("@"); - } - if (component.host !== void 0) { - let host = unescape(component.host); - if (!isIPv4(host)) { - const ipV6res = normalizeIPv6(host); - if (ipV6res.isIPV6 === true) { - host = `[${ipV6res.escapedHost}]`; - } else { - host = component.host; - } - } - uriTokens.push(host); - } - if (typeof component.port === "number" || typeof component.port === "string") { - uriTokens.push(":"); - uriTokens.push(String(component.port)); - } - return uriTokens.length ? uriTokens.join("") : void 0; - } - module.exports = { - nonSimpleDomain, - recomposeAuthority, - normalizeComponentEncoding, - removeDotSegments, - isIPv4, - isUUID, - normalizeIPv6, - stringArrayToHexStripped - }; - } -}); - -// node_modules/fast-uri/lib/schemes.js -var require_schemes = __commonJS({ - "node_modules/fast-uri/lib/schemes.js"(exports, module) { - "use strict"; - var { isUUID } = require_utils(); - var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; - var supportedSchemeNames = ( - /** @type {const} */ - [ - "http", - "https", - "ws", - "wss", - "urn", - "urn:uuid" - ] - ); - function isValidSchemeName(name) { - return supportedSchemeNames.indexOf( - /** @type {*} */ - name - ) !== -1; - } - function wsIsSecure(wsComponent) { - if (wsComponent.secure === true) { - return true; - } else if (wsComponent.secure === false) { - return false; - } else if (wsComponent.scheme) { - return wsComponent.scheme.length === 3 && (wsComponent.scheme[0] === "w" || wsComponent.scheme[0] === "W") && (wsComponent.scheme[1] === "s" || wsComponent.scheme[1] === "S") && (wsComponent.scheme[2] === "s" || wsComponent.scheme[2] === "S"); - } else { - return false; - } - } - function httpParse(component) { - if (!component.host) { - component.error = component.error || "HTTP URIs must have a host."; - } - return component; - } - function httpSerialize(component) { - const secure = String(component.scheme).toLowerCase() === "https"; - if (component.port === (secure ? 443 : 80) || component.port === "") { - component.port = void 0; - } - if (!component.path) { - component.path = "/"; - } - return component; - } - function wsParse(wsComponent) { - wsComponent.secure = wsIsSecure(wsComponent); - wsComponent.resourceName = (wsComponent.path || "/") + (wsComponent.query ? "?" + wsComponent.query : ""); - wsComponent.path = void 0; - wsComponent.query = void 0; - return wsComponent; - } - function wsSerialize(wsComponent) { - if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === "") { - wsComponent.port = void 0; - } - if (typeof wsComponent.secure === "boolean") { - wsComponent.scheme = wsComponent.secure ? "wss" : "ws"; - wsComponent.secure = void 0; - } - if (wsComponent.resourceName) { - const [path, query] = wsComponent.resourceName.split("?"); - wsComponent.path = path && path !== "/" ? path : void 0; - wsComponent.query = query; - wsComponent.resourceName = void 0; - } - wsComponent.fragment = void 0; - return wsComponent; - } - function urnParse(urnComponent, options) { - if (!urnComponent.path) { - urnComponent.error = "URN can not be parsed"; - return urnComponent; - } - const matches = urnComponent.path.match(URN_REG); - if (matches) { - const scheme = options.scheme || urnComponent.scheme || "urn"; - urnComponent.nid = matches[1].toLowerCase(); - urnComponent.nss = matches[2]; - const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`; - const schemeHandler = getSchemeHandler(urnScheme); - urnComponent.path = void 0; - if (schemeHandler) { - urnComponent = schemeHandler.parse(urnComponent, options); - } - } else { - urnComponent.error = urnComponent.error || "URN can not be parsed."; - } - return urnComponent; - } - function urnSerialize(urnComponent, options) { - if (urnComponent.nid === void 0) { - throw new Error("URN without nid cannot be serialized"); - } - const scheme = options.scheme || urnComponent.scheme || "urn"; - const nid = urnComponent.nid.toLowerCase(); - const urnScheme = `${scheme}:${options.nid || nid}`; - const schemeHandler = getSchemeHandler(urnScheme); - if (schemeHandler) { - urnComponent = schemeHandler.serialize(urnComponent, options); - } - const uriComponent = urnComponent; - const nss = urnComponent.nss; - uriComponent.path = `${nid || options.nid}:${nss}`; - options.skipEscape = true; - return uriComponent; - } - function urnuuidParse(urnComponent, options) { - const uuidComponent = urnComponent; - uuidComponent.uuid = uuidComponent.nss; - uuidComponent.nss = void 0; - if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) { - uuidComponent.error = uuidComponent.error || "UUID is not valid."; - } - return uuidComponent; - } - function urnuuidSerialize(uuidComponent) { - const urnComponent = uuidComponent; - urnComponent.nss = (uuidComponent.uuid || "").toLowerCase(); - return urnComponent; - } - var http = ( - /** @type {SchemeHandler} */ - { - scheme: "http", - domainHost: true, - parse: httpParse, - serialize: httpSerialize - } - ); - var https = ( - /** @type {SchemeHandler} */ - { - scheme: "https", - domainHost: http.domainHost, - parse: httpParse, - serialize: httpSerialize - } - ); - var ws = ( - /** @type {SchemeHandler} */ - { - scheme: "ws", - domainHost: true, - parse: wsParse, - serialize: wsSerialize - } - ); - var wss = ( - /** @type {SchemeHandler} */ - { - scheme: "wss", - domainHost: ws.domainHost, - parse: ws.parse, - serialize: ws.serialize - } - ); - var urn = ( - /** @type {SchemeHandler} */ - { - scheme: "urn", - parse: urnParse, - serialize: urnSerialize, - skipNormalize: true - } - ); - var urnuuid = ( - /** @type {SchemeHandler} */ - { - scheme: "urn:uuid", - parse: urnuuidParse, - serialize: urnuuidSerialize, - skipNormalize: true - } - ); - var SCHEMES = ( - /** @type {Record} */ - { - http, - https, - ws, - wss, - urn, - "urn:uuid": urnuuid - } - ); - Object.setPrototypeOf(SCHEMES, null); - function getSchemeHandler(scheme) { - return scheme && (SCHEMES[ - /** @type {SchemeName} */ - scheme - ] || SCHEMES[ - /** @type {SchemeName} */ - scheme.toLowerCase() - ]) || void 0; - } - module.exports = { - wsIsSecure, - SCHEMES, - isValidSchemeName, - getSchemeHandler - }; - } -}); - -// node_modules/fast-uri/index.js -var require_fast_uri = __commonJS({ - "node_modules/fast-uri/index.js"(exports, module) { - "use strict"; - var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils(); - var { SCHEMES, getSchemeHandler } = require_schemes(); - function normalize(uri, options) { - if (typeof uri === "string") { - uri = /** @type {T} */ - serialize(parse2(uri, options), options); - } else if (typeof uri === "object") { - uri = /** @type {T} */ - parse2(serialize(uri, options), options); - } - return uri; - } - function resolve(baseURI, relativeURI, options) { - const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" }; - const resolved = resolveComponent(parse2(baseURI, schemelessOptions), parse2(relativeURI, schemelessOptions), schemelessOptions, true); - schemelessOptions.skipEscape = true; - return serialize(resolved, schemelessOptions); - } - function resolveComponent(base, relative, options, skipNormalization) { - const target = {}; - if (!skipNormalization) { - base = parse2(serialize(base, options), options); - relative = parse2(serialize(relative, options), options); - } - options = options || {}; - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (relative.userinfo !== void 0 || relative.host !== void 0 || relative.port !== void 0) { - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== void 0) { - target.query = relative.query; - } else { - target.query = base.query; - } - } else { - if (relative.path[0] === "/") { - target.path = removeDotSegments(relative.path); - } else { - if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) { - target.path = "/" + relative.path; - } else if (!base.path) { - target.path = relative.path; - } else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - target.fragment = relative.fragment; - return target; - } - function equal(uriA, uriB, options) { - if (typeof uriA === "string") { - uriA = unescape(uriA); - uriA = serialize(normalizeComponentEncoding(parse2(uriA, options), true), { ...options, skipEscape: true }); - } else if (typeof uriA === "object") { - uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true }); - } - if (typeof uriB === "string") { - uriB = unescape(uriB); - uriB = serialize(normalizeComponentEncoding(parse2(uriB, options), true), { ...options, skipEscape: true }); - } else if (typeof uriB === "object") { - uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true }); - } - return uriA.toLowerCase() === uriB.toLowerCase(); - } - function serialize(cmpts, opts) { - const component = { - host: cmpts.host, - scheme: cmpts.scheme, - userinfo: cmpts.userinfo, - port: cmpts.port, - path: cmpts.path, - query: cmpts.query, - nid: cmpts.nid, - nss: cmpts.nss, - uuid: cmpts.uuid, - fragment: cmpts.fragment, - reference: cmpts.reference, - resourceName: cmpts.resourceName, - secure: cmpts.secure, - error: "" - }; - const options = Object.assign({}, opts); - const uriTokens = []; - const schemeHandler = getSchemeHandler(options.scheme || component.scheme); - if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options); - if (component.path !== void 0) { - if (!options.skipEscape) { - component.path = escape(component.path); - if (component.scheme !== void 0) { - component.path = component.path.split("%3A").join(":"); - } - } else { - component.path = unescape(component.path); - } - } - if (options.reference !== "suffix" && component.scheme) { - uriTokens.push(component.scheme, ":"); - } - const authority = recomposeAuthority(component); - if (authority !== void 0) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - uriTokens.push(authority); - if (component.path && component.path[0] !== "/") { - uriTokens.push("/"); - } - } - if (component.path !== void 0) { - let s = component.path; - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - if (authority === void 0 && s[0] === "/" && s[1] === "/") { - s = "/%2F" + s.slice(2); - } - uriTokens.push(s); - } - if (component.query !== void 0) { - uriTokens.push("?", component.query); - } - if (component.fragment !== void 0) { - uriTokens.push("#", component.fragment); - } - return uriTokens.join(""); - } - var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u; - function parse2(uri, opts) { - const options = Object.assign({}, opts); - const parsed = { - scheme: void 0, - userinfo: void 0, - host: "", - port: void 0, - path: "", - query: void 0, - fragment: void 0 - }; - let isIP = false; - if (options.reference === "suffix") { - if (options.scheme) { - uri = options.scheme + ":" + uri; - } else { - uri = "//" + uri; - } - } - const matches = uri.match(URI_PARSE); - if (matches) { - parsed.scheme = matches[1]; - parsed.userinfo = matches[3]; - parsed.host = matches[4]; - parsed.port = parseInt(matches[5], 10); - parsed.path = matches[6] || ""; - parsed.query = matches[7]; - parsed.fragment = matches[8]; - if (isNaN(parsed.port)) { - parsed.port = matches[5]; - } - if (parsed.host) { - const ipv4result = isIPv4(parsed.host); - if (ipv4result === false) { - const ipv6result = normalizeIPv6(parsed.host); - parsed.host = ipv6result.host.toLowerCase(); - isIP = ipv6result.isIPV6; - } else { - isIP = true; - } - } - if (parsed.scheme === void 0 && parsed.userinfo === void 0 && parsed.host === void 0 && parsed.port === void 0 && parsed.query === void 0 && !parsed.path) { - parsed.reference = "same-document"; - } else if (parsed.scheme === void 0) { - parsed.reference = "relative"; - } else if (parsed.fragment === void 0) { - parsed.reference = "absolute"; - } else { - parsed.reference = "uri"; - } - if (options.reference && options.reference !== "suffix" && options.reference !== parsed.reference) { - parsed.error = parsed.error || "URI is not a " + options.reference + " reference."; - } - const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme); - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) { - try { - parsed.host = URL.domainToASCII(parsed.host.toLowerCase()); - } catch (e) { - parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e; - } - } - } - if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) { - if (uri.indexOf("%") !== -1) { - if (parsed.scheme !== void 0) { - parsed.scheme = unescape(parsed.scheme); - } - if (parsed.host !== void 0) { - parsed.host = unescape(parsed.host); - } - } - if (parsed.path) { - parsed.path = escape(unescape(parsed.path)); - } - if (parsed.fragment) { - parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment)); - } - } - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(parsed, options); - } - } else { - parsed.error = parsed.error || "URI can not be parsed."; - } - return parsed; - } - var fastUri = { - SCHEMES, - normalize, - resolve, - resolveComponent, - equal, - serialize, - parse: parse2 - }; - module.exports = fastUri; - module.exports.default = fastUri; - module.exports.fastUri = fastUri; - } -}); - -// node_modules/ajv/dist/runtime/uri.js -var require_uri = __commonJS({ - "node_modules/ajv/dist/runtime/uri.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var uri = require_fast_uri(); - uri.code = 'require("ajv/dist/runtime/uri").default'; - exports.default = uri; - } -}); - -// node_modules/ajv/dist/core.js -var require_core = __commonJS({ - "node_modules/ajv/dist/core.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; - var validate_1 = require_validate(); - Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function() { - return validate_1.KeywordCxt; - } }); - var codegen_1 = require_codegen(); - Object.defineProperty(exports, "_", { enumerable: true, get: function() { - return codegen_1._; - } }); - Object.defineProperty(exports, "str", { enumerable: true, get: function() { - return codegen_1.str; - } }); - Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { - return codegen_1.stringify; - } }); - Object.defineProperty(exports, "nil", { enumerable: true, get: function() { - return codegen_1.nil; - } }); - Object.defineProperty(exports, "Name", { enumerable: true, get: function() { - return codegen_1.Name; - } }); - Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function() { - return codegen_1.CodeGen; - } }); - var validation_error_1 = require_validation_error(); - var ref_error_1 = require_ref_error(); - var rules_1 = require_rules(); - var compile_1 = require_compile(); - var codegen_2 = require_codegen(); - var resolve_1 = require_resolve(); - var dataType_1 = require_dataType(); - var util_1 = require_util(); - var $dataRefSchema = require_data(); - var uri_1 = require_uri(); - var defaultRegExp = (str, flags) => new RegExp(str, flags); - defaultRegExp.code = "new RegExp"; - var META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"]; - var EXT_SCOPE_NAMES = /* @__PURE__ */ new Set([ - "validate", - "serialize", - "parse", - "wrapper", - "root", - "schema", - "keyword", - "pattern", - "formats", - "validate$data", - "func", - "obj", - "Error" - ]); - var removedOptions = { - errorDataPath: "", - format: "`validateFormats: false` can be used instead.", - nullable: '"nullable" keyword is supported by default.', - jsonPointers: "Deprecated jsPropertySyntax can be used instead.", - extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.", - missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.", - processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`", - sourceCode: "Use option `code: {source: true}`", - strictDefaults: "It is default now, see option `strict`.", - strictKeywords: "It is default now, see option `strict`.", - uniqueItems: '"uniqueItems" keyword is always validated.', - unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).", - cache: "Map is used as cache, schema object as key.", - serialize: "Map is used as cache, schema object as key.", - ajvErrors: "It is default now." - }; - var deprecatedOptions = { - ignoreKeywordsWithRef: "", - jsPropertySyntax: "", - unicode: '"minLength"/"maxLength" account for unicode characters by default.' - }; - var MAX_EXPRESSION = 200; - function requiredOptions(o) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0; - const s = o.strict; - const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize; - const optimize = _optz === true || _optz === void 0 ? 1 : _optz || 0; - const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp; - const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default; - return { - strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true, - strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true, - strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : "log", - strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : "log", - strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false, - code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp }, - loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION, - loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION, - meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true, - messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true, - inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true, - schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : "$id", - addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true, - validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true, - validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true, - unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true, - int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true, - uriResolver - }; - } - var Ajv2 = class { - constructor(opts = {}) { - this.schemas = {}; - this.refs = {}; - this.formats = {}; - this._compilations = /* @__PURE__ */ new Set(); - this._loading = {}; - this._cache = /* @__PURE__ */ new Map(); - opts = this.opts = { ...opts, ...requiredOptions(opts) }; - const { es5, lines } = this.opts.code; - this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines }); - this.logger = getLogger(opts.logger); - const formatOpt = opts.validateFormats; - opts.validateFormats = false; - this.RULES = (0, rules_1.getRules)(); - checkOptions.call(this, removedOptions, opts, "NOT SUPPORTED"); - checkOptions.call(this, deprecatedOptions, opts, "DEPRECATED", "warn"); - this._metaOpts = getMetaSchemaOptions.call(this); - if (opts.formats) - addInitialFormats.call(this); - this._addVocabularies(); - this._addDefaultMetaSchema(); - if (opts.keywords) - addInitialKeywords.call(this, opts.keywords); - if (typeof opts.meta == "object") - this.addMetaSchema(opts.meta); - addInitialSchemas.call(this); - opts.validateFormats = formatOpt; - } - _addVocabularies() { - this.addKeyword("$async"); - } - _addDefaultMetaSchema() { - const { $data, meta: meta2, schemaId } = this.opts; - let _dataRefSchema = $dataRefSchema; - if (schemaId === "id") { - _dataRefSchema = { ...$dataRefSchema }; - _dataRefSchema.id = _dataRefSchema.$id; - delete _dataRefSchema.$id; - } - if (meta2 && $data) - this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false); - } - defaultMeta() { - const { meta: meta2, schemaId } = this.opts; - return this.opts.defaultMeta = typeof meta2 == "object" ? meta2[schemaId] || meta2 : void 0; - } - validate(schemaKeyRef, data) { - let v; - if (typeof schemaKeyRef == "string") { - v = this.getSchema(schemaKeyRef); - if (!v) - throw new Error(`no schema with key or ref "${schemaKeyRef}"`); - } else { - v = this.compile(schemaKeyRef); - } - const valid = v(data); - if (!("$async" in v)) - this.errors = v.errors; - return valid; - } - compile(schema, _meta) { - const sch = this._addSchema(schema, _meta); - return sch.validate || this._compileSchemaEnv(sch); - } - compileAsync(schema, meta2) { - if (typeof this.opts.loadSchema != "function") { - throw new Error("options.loadSchema should be a function"); - } - const { loadSchema } = this.opts; - return runCompileAsync.call(this, schema, meta2); - async function runCompileAsync(_schema, _meta) { - await loadMetaSchema.call(this, _schema.$schema); - const sch = this._addSchema(_schema, _meta); - return sch.validate || _compileAsync.call(this, sch); - } - async function loadMetaSchema($ref) { - if ($ref && !this.getSchema($ref)) { - await runCompileAsync.call(this, { $ref }, true); - } - } - async function _compileAsync(sch) { - try { - return this._compileSchemaEnv(sch); - } catch (e) { - if (!(e instanceof ref_error_1.default)) - throw e; - checkLoaded.call(this, e); - await loadMissingSchema.call(this, e.missingSchema); - return _compileAsync.call(this, sch); - } - } - function checkLoaded({ missingSchema: ref, missingRef }) { - if (this.refs[ref]) { - throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`); - } - } - async function loadMissingSchema(ref) { - const _schema = await _loadSchema.call(this, ref); - if (!this.refs[ref]) - await loadMetaSchema.call(this, _schema.$schema); - if (!this.refs[ref]) - this.addSchema(_schema, ref, meta2); - } - async function _loadSchema(ref) { - const p = this._loading[ref]; - if (p) - return p; - try { - return await (this._loading[ref] = loadSchema(ref)); - } finally { - delete this._loading[ref]; - } - } - } - // Adds schema to the instance - addSchema(schema, key, _meta, _validateSchema = this.opts.validateSchema) { - if (Array.isArray(schema)) { - for (const sch of schema) - this.addSchema(sch, void 0, _meta, _validateSchema); - return this; - } - let id; - if (typeof schema === "object") { - const { schemaId } = this.opts; - id = schema[schemaId]; - if (id !== void 0 && typeof id != "string") { - throw new Error(`schema ${schemaId} must be string`); - } - } - key = (0, resolve_1.normalizeId)(key || id); - this._checkUnique(key); - this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true); - return this; - } - // Add schema that will be used to validate other schemas - // options in META_IGNORE_OPTIONS are alway set to false - addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) { - this.addSchema(schema, key, true, _validateSchema); - return this; - } - // Validate schema against its meta-schema - validateSchema(schema, throwOrLogError) { - if (typeof schema == "boolean") - return true; - let $schema; - $schema = schema.$schema; - if ($schema !== void 0 && typeof $schema != "string") { - throw new Error("$schema must be a string"); - } - $schema = $schema || this.opts.defaultMeta || this.defaultMeta(); - if (!$schema) { - this.logger.warn("meta-schema not available"); - this.errors = null; - return true; - } - const valid = this.validate($schema, schema); - if (!valid && throwOrLogError) { - const message = "schema is invalid: " + this.errorsText(); - if (this.opts.validateSchema === "log") - this.logger.error(message); - else - throw new Error(message); - } - return valid; - } - // Get compiled schema by `key` or `ref`. - // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id) - getSchema(keyRef) { - let sch; - while (typeof (sch = getSchEnv.call(this, keyRef)) == "string") - keyRef = sch; - if (sch === void 0) { - const { schemaId } = this.opts; - const root = new compile_1.SchemaEnv({ schema: {}, schemaId }); - sch = compile_1.resolveSchema.call(this, root, keyRef); - if (!sch) - return; - this.refs[keyRef] = sch; - } - return sch.validate || this._compileSchemaEnv(sch); - } - // Remove cached schema(s). - // If no parameter is passed all schemas but meta-schemas are removed. - // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. - // Even if schema is referenced by other schemas it still can be removed as other schemas have local references. - removeSchema(schemaKeyRef) { - if (schemaKeyRef instanceof RegExp) { - this._removeAllSchemas(this.schemas, schemaKeyRef); - this._removeAllSchemas(this.refs, schemaKeyRef); - return this; - } - switch (typeof schemaKeyRef) { - case "undefined": - this._removeAllSchemas(this.schemas); - this._removeAllSchemas(this.refs); - this._cache.clear(); - return this; - case "string": { - const sch = getSchEnv.call(this, schemaKeyRef); - if (typeof sch == "object") - this._cache.delete(sch.schema); - delete this.schemas[schemaKeyRef]; - delete this.refs[schemaKeyRef]; - return this; - } - case "object": { - const cacheKey = schemaKeyRef; - this._cache.delete(cacheKey); - let id = schemaKeyRef[this.opts.schemaId]; - if (id) { - id = (0, resolve_1.normalizeId)(id); - delete this.schemas[id]; - delete this.refs[id]; - } - return this; - } - default: - throw new Error("ajv.removeSchema: invalid parameter"); - } - } - // add "vocabulary" - a collection of keywords - addVocabulary(definitions) { - for (const def of definitions) - this.addKeyword(def); - return this; - } - addKeyword(kwdOrDef, def) { - let keyword; - if (typeof kwdOrDef == "string") { - keyword = kwdOrDef; - if (typeof def == "object") { - this.logger.warn("these parameters are deprecated, see docs for addKeyword"); - def.keyword = keyword; - } - } else if (typeof kwdOrDef == "object" && def === void 0) { - def = kwdOrDef; - keyword = def.keyword; - if (Array.isArray(keyword) && !keyword.length) { - throw new Error("addKeywords: keyword must be string or non-empty array"); - } - } else { - throw new Error("invalid addKeywords parameters"); - } - checkKeyword.call(this, keyword, def); - if (!def) { - (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd)); - return this; - } - keywordMetaschema.call(this, def); - const definition18 = { - ...def, - type: (0, dataType_1.getJSONTypes)(def.type), - schemaType: (0, dataType_1.getJSONTypes)(def.schemaType) - }; - (0, util_1.eachItem)(keyword, definition18.type.length === 0 ? (k) => addRule.call(this, k, definition18) : (k) => definition18.type.forEach((t) => addRule.call(this, k, definition18, t))); - return this; - } - getKeyword(keyword) { - const rule = this.RULES.all[keyword]; - return typeof rule == "object" ? rule.definition : !!rule; - } - // Remove keyword - removeKeyword(keyword) { - const { RULES } = this; - delete RULES.keywords[keyword]; - delete RULES.all[keyword]; - for (const group of RULES.rules) { - const i = group.rules.findIndex((rule) => rule.keyword === keyword); - if (i >= 0) - group.rules.splice(i, 1); - } - return this; - } - // Add format - addFormat(name, format) { - if (typeof format == "string") - format = new RegExp(format); - this.formats[name] = format; - return this; - } - errorsText(errors = this.errors, { separator = ", ", dataVar = "data" } = {}) { - if (!errors || errors.length === 0) - return "No errors"; - return errors.map((e) => `${dataVar}${e.instancePath} ${e.message}`).reduce((text, msg) => text + separator + msg); - } - $dataMetaSchema(metaSchema, keywordsJsonPointers) { - const rules = this.RULES.all; - metaSchema = JSON.parse(JSON.stringify(metaSchema)); - for (const jsonPointer of keywordsJsonPointers) { - const segments = jsonPointer.split("/").slice(1); - let keywords = metaSchema; - for (const seg of segments) - keywords = keywords[seg]; - for (const key in rules) { - const rule = rules[key]; - if (typeof rule != "object") - continue; - const { $data } = rule.definition; - const schema = keywords[key]; - if ($data && schema) - keywords[key] = schemaOrData(schema); - } - } - return metaSchema; - } - _removeAllSchemas(schemas, regex) { - for (const keyRef in schemas) { - const sch = schemas[keyRef]; - if (!regex || regex.test(keyRef)) { - if (typeof sch == "string") { - delete schemas[keyRef]; - } else if (sch && !sch.meta) { - this._cache.delete(sch.schema); - delete schemas[keyRef]; - } - } - } - } - _addSchema(schema, meta2, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) { - let id; - const { schemaId } = this.opts; - if (typeof schema == "object") { - id = schema[schemaId]; - } else { - if (this.opts.jtd) - throw new Error("schema must be object"); - else if (typeof schema != "boolean") - throw new Error("schema must be object or boolean"); - } - let sch = this._cache.get(schema); - if (sch !== void 0) - return sch; - baseId = (0, resolve_1.normalizeId)(id || baseId); - const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId); - sch = new compile_1.SchemaEnv({ schema, schemaId, meta: meta2, baseId, localRefs }); - this._cache.set(sch.schema, sch); - if (addSchema && !baseId.startsWith("#")) { - if (baseId) - this._checkUnique(baseId); - this.refs[baseId] = sch; - } - if (validateSchema) - this.validateSchema(schema, true); - return sch; - } - _checkUnique(id) { - if (this.schemas[id] || this.refs[id]) { - throw new Error(`schema with key or id "${id}" already exists`); - } - } - _compileSchemaEnv(sch) { - if (sch.meta) - this._compileMetaSchema(sch); - else - compile_1.compileSchema.call(this, sch); - if (!sch.validate) - throw new Error("ajv implementation error"); - return sch.validate; - } - _compileMetaSchema(sch) { - const currentOpts = this.opts; - this.opts = this._metaOpts; - try { - compile_1.compileSchema.call(this, sch); - } finally { - this.opts = currentOpts; - } - } - }; - Ajv2.ValidationError = validation_error_1.default; - Ajv2.MissingRefError = ref_error_1.default; - exports.default = Ajv2; - function checkOptions(checkOpts, options, msg, log = "error") { - for (const key in checkOpts) { - const opt = key; - if (opt in options) - this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`); - } - } - function getSchEnv(keyRef) { - keyRef = (0, resolve_1.normalizeId)(keyRef); - return this.schemas[keyRef] || this.refs[keyRef]; - } - function addInitialSchemas() { - const optsSchemas = this.opts.schemas; - if (!optsSchemas) - return; - if (Array.isArray(optsSchemas)) - this.addSchema(optsSchemas); - else - for (const key in optsSchemas) - this.addSchema(optsSchemas[key], key); - } - function addInitialFormats() { - for (const name in this.opts.formats) { - const format = this.opts.formats[name]; - if (format) - this.addFormat(name, format); - } - } - function addInitialKeywords(defs) { - if (Array.isArray(defs)) { - this.addVocabulary(defs); - return; - } - this.logger.warn("keywords option as map is deprecated, pass array"); - for (const keyword in defs) { - const def = defs[keyword]; - if (!def.keyword) - def.keyword = keyword; - this.addKeyword(def); - } - } - function getMetaSchemaOptions() { - const metaOpts = { ...this.opts }; - for (const opt of META_IGNORE_OPTIONS) - delete metaOpts[opt]; - return metaOpts; - } - var noLogs = { log() { - }, warn() { - }, error() { - } }; - function getLogger(logger) { - if (logger === false) - return noLogs; - if (logger === void 0) - return console; - if (logger.log && logger.warn && logger.error) - return logger; - throw new Error("logger must implement log, warn and error methods"); - } - var KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i; - function checkKeyword(keyword, def) { - const { RULES } = this; - (0, util_1.eachItem)(keyword, (kwd) => { - if (RULES.keywords[kwd]) - throw new Error(`Keyword ${kwd} is already defined`); - if (!KEYWORD_NAME.test(kwd)) - throw new Error(`Keyword ${kwd} has invalid name`); - }); - if (!def) - return; - if (def.$data && !("code" in def || "validate" in def)) { - throw new Error('$data keyword must have "code" or "validate" function'); - } - } - function addRule(keyword, definition18, dataType) { - var _a; - const post = definition18 === null || definition18 === void 0 ? void 0 : definition18.post; - if (dataType && post) - throw new Error('keyword with "post" flag cannot have "type"'); - const { RULES } = this; - let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType); - if (!ruleGroup) { - ruleGroup = { type: dataType, rules: [] }; - RULES.rules.push(ruleGroup); - } - RULES.keywords[keyword] = true; - if (!definition18) - return; - const rule = { - keyword, - definition: { - ...definition18, - type: (0, dataType_1.getJSONTypes)(definition18.type), - schemaType: (0, dataType_1.getJSONTypes)(definition18.schemaType) - } - }; - if (definition18.before) - addBeforeRule.call(this, ruleGroup, rule, definition18.before); - else - ruleGroup.rules.push(rule); - RULES.all[keyword] = rule; - (_a = definition18.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd)); - } - function addBeforeRule(ruleGroup, rule, before) { - const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before); - if (i >= 0) { - ruleGroup.rules.splice(i, 0, rule); - } else { - ruleGroup.rules.push(rule); - this.logger.warn(`rule ${before} is not defined`); - } - } - function keywordMetaschema(def) { - let { metaSchema } = def; - if (metaSchema === void 0) - return; - if (def.$data && this.opts.$data) - metaSchema = schemaOrData(metaSchema); - def.validateSchema = this.compile(metaSchema, true); - } - var $dataRef = { - $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" - }; - function schemaOrData(schema) { - return { anyOf: [schema, $dataRef] }; - } - } -}); - -// node_modules/ajv/dist/vocabularies/core/id.js -var require_id = __commonJS({ - "node_modules/ajv/dist/vocabularies/core/id.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var def = { - keyword: "id", - code() { - throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID'); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/core/ref.js -var require_ref = __commonJS({ - "node_modules/ajv/dist/vocabularies/core/ref.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.callRef = exports.getValidate = void 0; - var ref_error_1 = require_ref_error(); - var code_1 = require_code2(); - var codegen_1 = require_codegen(); - var names_1 = require_names(); - var compile_1 = require_compile(); - var util_1 = require_util(); - var def = { - keyword: "$ref", - schemaType: "string", - code(cxt) { - const { gen, schema: $ref, it } = cxt; - const { baseId, schemaEnv: env, validateName, opts, self } = it; - const { root } = env; - if (($ref === "#" || $ref === "#/") && baseId === root.baseId) - return callRootRef(); - const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref); - if (schOrEnv === void 0) - throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref); - if (schOrEnv instanceof compile_1.SchemaEnv) - return callValidate(schOrEnv); - return inlineRefSchema(schOrEnv); - function callRootRef() { - if (env === root) - return callRef(cxt, validateName, env, env.$async); - const rootName = gen.scopeValue("root", { ref: root }); - return callRef(cxt, (0, codegen_1._)`${rootName}.validate`, root, root.$async); - } - function callValidate(sch) { - const v = getValidate(cxt, sch); - callRef(cxt, v, sch, sch.$async); - } - function inlineRefSchema(sch) { - const schName = gen.scopeValue("schema", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch }); - const valid = gen.name("valid"); - const schCxt = cxt.subschema({ - schema: sch, - dataTypes: [], - schemaPath: codegen_1.nil, - topSchemaRef: schName, - errSchemaPath: $ref - }, valid); - cxt.mergeEvaluated(schCxt); - cxt.ok(valid); - } - } - }; - function getValidate(cxt, sch) { - const { gen } = cxt; - return sch.validate ? gen.scopeValue("validate", { ref: sch.validate }) : (0, codegen_1._)`${gen.scopeValue("wrapper", { ref: sch })}.validate`; - } - exports.getValidate = getValidate; - function callRef(cxt, v, sch, $async) { - const { gen, it } = cxt; - const { allErrors, schemaEnv: env, opts } = it; - const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil; - if ($async) - callAsyncRef(); - else - callSyncRef(); - function callAsyncRef() { - if (!env.$async) - throw new Error("async schema referenced by sync schema"); - const valid = gen.let("valid"); - gen.try(() => { - gen.code((0, codegen_1._)`await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`); - addEvaluatedFrom(v); - if (!allErrors) - gen.assign(valid, true); - }, (e) => { - gen.if((0, codegen_1._)`!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e)); - addErrorsFrom(e); - if (!allErrors) - gen.assign(valid, false); - }); - cxt.ok(valid); - } - function callSyncRef() { - cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v)); - } - function addErrorsFrom(source) { - const errs = (0, codegen_1._)`${source}.errors`; - gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); - gen.assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`); - } - function addEvaluatedFrom(source) { - var _a; - if (!it.opts.unevaluated) - return; - const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated; - if (it.props !== true) { - if (schEvaluated && !schEvaluated.dynamicProps) { - if (schEvaluated.props !== void 0) { - it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props); - } - } else { - const props = gen.var("props", (0, codegen_1._)`${source}.evaluated.props`); - it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name); - } - } - if (it.items !== true) { - if (schEvaluated && !schEvaluated.dynamicItems) { - if (schEvaluated.items !== void 0) { - it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items); - } - } else { - const items = gen.var("items", (0, codegen_1._)`${source}.evaluated.items`); - it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name); - } - } - } - } - exports.callRef = callRef; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/core/index.js -var require_core2 = __commonJS({ - "node_modules/ajv/dist/vocabularies/core/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var id_1 = require_id(); - var ref_1 = require_ref(); - var core = [ - "$schema", - "$id", - "$defs", - "$vocabulary", - { keyword: "$comment" }, - "definitions", - id_1.default, - ref_1.default - ]; - exports.default = core; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/limitNumber.js -var require_limitNumber = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var ops = codegen_1.operators; - var KWDs = { - maximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, - minimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, - exclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, - exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } - }; - var error2 = { - message: ({ keyword, schemaCode }) => (0, codegen_1.str)`must be ${KWDs[keyword].okStr} ${schemaCode}`, - params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}` - }; - var def = { - keyword: Object.keys(KWDs), - type: "number", - schemaType: "number", - $data: true, - error: error2, - code(cxt) { - const { keyword, data, schemaCode } = cxt; - cxt.fail$data((0, codegen_1._)`${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/multipleOf.js -var require_multipleOf = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var error2 = { - message: ({ schemaCode }) => (0, codegen_1.str)`must be multiple of ${schemaCode}`, - params: ({ schemaCode }) => (0, codegen_1._)`{multipleOf: ${schemaCode}}` - }; - var def = { - keyword: "multipleOf", - type: "number", - schemaType: "number", - $data: true, - error: error2, - code(cxt) { - const { gen, data, schemaCode, it } = cxt; - const prec = it.opts.multipleOfPrecision; - const res = gen.let("res"); - const invalid = prec ? (0, codegen_1._)`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}` : (0, codegen_1._)`${res} !== parseInt(${res})`; - cxt.fail$data((0, codegen_1._)`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/runtime/ucs2length.js -var require_ucs2length = __commonJS({ - "node_modules/ajv/dist/runtime/ucs2length.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function ucs2length(str) { - const len = str.length; - let length = 0; - let pos = 0; - let value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 55296 && value <= 56319 && pos < len) { - value = str.charCodeAt(pos); - if ((value & 64512) === 56320) - pos++; - } - } - return length; - } - exports.default = ucs2length; - ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/limitLength.js -var require_limitLength = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var ucs2length_1 = require_ucs2length(); - var error2 = { - message({ keyword, schemaCode }) { - const comp = keyword === "maxLength" ? "more" : "fewer"; - return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} characters`; - }, - params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` - }; - var def = { - keyword: ["maxLength", "minLength"], - type: "string", - schemaType: "number", - $data: true, - error: error2, - code(cxt) { - const { keyword, data, schemaCode, it } = cxt; - const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT; - const len = it.opts.unicode === false ? (0, codegen_1._)`${data}.length` : (0, codegen_1._)`${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`; - cxt.fail$data((0, codegen_1._)`${len} ${op} ${schemaCode}`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/pattern.js -var require_pattern = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var code_1 = require_code2(); - var util_1 = require_util(); - var codegen_1 = require_codegen(); - var error2 = { - message: ({ schemaCode }) => (0, codegen_1.str)`must match pattern "${schemaCode}"`, - params: ({ schemaCode }) => (0, codegen_1._)`{pattern: ${schemaCode}}` - }; - var def = { - keyword: "pattern", - type: "string", - schemaType: "string", - $data: true, - error: error2, - code(cxt) { - const { gen, data, $data, schema, schemaCode, it } = cxt; - const u = it.opts.unicodeRegExp ? "u" : ""; - if ($data) { - const { regExp } = it.opts.code; - const regExpCode = regExp.code === "new RegExp" ? (0, codegen_1._)`new RegExp` : (0, util_1.useFunc)(gen, regExp); - const valid = gen.let("valid"); - gen.try(() => gen.assign(valid, (0, codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false)); - cxt.fail$data((0, codegen_1._)`!${valid}`); - } else { - const regExp = (0, code_1.usePattern)(cxt, schema); - cxt.fail$data((0, codegen_1._)`!${regExp}.test(${data})`); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/limitProperties.js -var require_limitProperties = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var error2 = { - message({ keyword, schemaCode }) { - const comp = keyword === "maxProperties" ? "more" : "fewer"; - return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} properties`; - }, - params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` - }; - var def = { - keyword: ["maxProperties", "minProperties"], - type: "object", - schemaType: "number", - $data: true, - error: error2, - code(cxt) { - const { keyword, data, schemaCode } = cxt; - const op = keyword === "maxProperties" ? codegen_1.operators.GT : codegen_1.operators.LT; - cxt.fail$data((0, codegen_1._)`Object.keys(${data}).length ${op} ${schemaCode}`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/required.js -var require_required = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/required.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var code_1 = require_code2(); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: ({ params: { missingProperty } }) => (0, codegen_1.str)`must have required property '${missingProperty}'`, - params: ({ params: { missingProperty } }) => (0, codegen_1._)`{missingProperty: ${missingProperty}}` - }; - var def = { - keyword: "required", - type: "object", - schemaType: "array", - $data: true, - error: error2, - code(cxt) { - const { gen, schema, schemaCode, data, $data, it } = cxt; - const { opts } = it; - if (!$data && schema.length === 0) - return; - const useLoop = schema.length >= opts.loopRequired; - if (it.allErrors) - allErrorsMode(); - else - exitOnErrorMode(); - if (opts.strictRequired) { - const props = cxt.parentSchema.properties; - const { definedProperties } = cxt.it; - for (const requiredKey of schema) { - if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === void 0 && !definedProperties.has(requiredKey)) { - const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; - const msg = `required property "${requiredKey}" is not defined at "${schemaPath}" (strictRequired)`; - (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired); - } - } - } - function allErrorsMode() { - if (useLoop || $data) { - cxt.block$data(codegen_1.nil, loopAllRequired); - } else { - for (const prop of schema) { - (0, code_1.checkReportMissingProp)(cxt, prop); - } - } - } - function exitOnErrorMode() { - const missing = gen.let("missing"); - if (useLoop || $data) { - const valid = gen.let("valid", true); - cxt.block$data(valid, () => loopUntilMissing(missing, valid)); - cxt.ok(valid); - } else { - gen.if((0, code_1.checkMissingProp)(cxt, schema, missing)); - (0, code_1.reportMissingProp)(cxt, missing); - gen.else(); - } - } - function loopAllRequired() { - gen.forOf("prop", schemaCode, (prop) => { - cxt.setParams({ missingProperty: prop }); - gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error()); - }); - } - function loopUntilMissing(missing, valid) { - cxt.setParams({ missingProperty: missing }); - gen.forOf(missing, schemaCode, () => { - gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties)); - gen.if((0, codegen_1.not)(valid), () => { - cxt.error(); - gen.break(); - }); - }, codegen_1.nil); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/limitItems.js -var require_limitItems = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var error2 = { - message({ keyword, schemaCode }) { - const comp = keyword === "maxItems" ? "more" : "fewer"; - return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} items`; - }, - params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` - }; - var def = { - keyword: ["maxItems", "minItems"], - type: "array", - schemaType: "number", - $data: true, - error: error2, - code(cxt) { - const { keyword, data, schemaCode } = cxt; - const op = keyword === "maxItems" ? codegen_1.operators.GT : codegen_1.operators.LT; - cxt.fail$data((0, codegen_1._)`${data}.length ${op} ${schemaCode}`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/runtime/equal.js -var require_equal = __commonJS({ - "node_modules/ajv/dist/runtime/equal.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var equal = require_fast_deep_equal(); - equal.code = 'require("ajv/dist/runtime/equal").default'; - exports.default = equal; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/uniqueItems.js -var require_uniqueItems = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var dataType_1 = require_dataType(); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var equal_1 = require_equal(); - var error2 = { - message: ({ params: { i, j } }) => (0, codegen_1.str)`must NOT have duplicate items (items ## ${j} and ${i} are identical)`, - params: ({ params: { i, j } }) => (0, codegen_1._)`{i: ${i}, j: ${j}}` - }; - var def = { - keyword: "uniqueItems", - type: "array", - schemaType: "boolean", - $data: true, - error: error2, - code(cxt) { - const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt; - if (!$data && !schema) - return; - const valid = gen.let("valid"); - const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : []; - cxt.block$data(valid, validateUniqueItems, (0, codegen_1._)`${schemaCode} === false`); - cxt.ok(valid); - function validateUniqueItems() { - const i = gen.let("i", (0, codegen_1._)`${data}.length`); - const j = gen.let("j"); - cxt.setParams({ i, j }); - gen.assign(valid, true); - gen.if((0, codegen_1._)`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j)); - } - function canOptimize() { - return itemTypes.length > 0 && !itemTypes.some((t) => t === "object" || t === "array"); - } - function loopN(i, j) { - const item = gen.name("item"); - const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong); - const indices = gen.const("indices", (0, codegen_1._)`{}`); - gen.for((0, codegen_1._)`;${i}--;`, () => { - gen.let(item, (0, codegen_1._)`${data}[${i}]`); - gen.if(wrongType, (0, codegen_1._)`continue`); - if (itemTypes.length > 1) - gen.if((0, codegen_1._)`typeof ${item} == "string"`, (0, codegen_1._)`${item} += "_"`); - gen.if((0, codegen_1._)`typeof ${indices}[${item}] == "number"`, () => { - gen.assign(j, (0, codegen_1._)`${indices}[${item}]`); - cxt.error(); - gen.assign(valid, false).break(); - }).code((0, codegen_1._)`${indices}[${item}] = ${i}`); - }); - } - function loopN2(i, j) { - const eql = (0, util_1.useFunc)(gen, equal_1.default); - const outer = gen.name("outer"); - gen.label(outer).for((0, codegen_1._)`;${i}--;`, () => gen.for((0, codegen_1._)`${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._)`${eql}(${data}[${i}], ${data}[${j}])`, () => { - cxt.error(); - gen.assign(valid, false).break(outer); - }))); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/const.js -var require_const = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/const.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var equal_1 = require_equal(); - var error2 = { - message: "must be equal to constant", - params: ({ schemaCode }) => (0, codegen_1._)`{allowedValue: ${schemaCode}}` - }; - var def = { - keyword: "const", - $data: true, - error: error2, - code(cxt) { - const { gen, data, $data, schemaCode, schema } = cxt; - if ($data || schema && typeof schema == "object") { - cxt.fail$data((0, codegen_1._)`!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`); - } else { - cxt.fail((0, codegen_1._)`${schema} !== ${data}`); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/enum.js -var require_enum = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/enum.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var equal_1 = require_equal(); - var error2 = { - message: "must be equal to one of the allowed values", - params: ({ schemaCode }) => (0, codegen_1._)`{allowedValues: ${schemaCode}}` - }; - var def = { - keyword: "enum", - schemaType: "array", - $data: true, - error: error2, - code(cxt) { - const { gen, data, $data, schema, schemaCode, it } = cxt; - if (!$data && schema.length === 0) - throw new Error("enum must have non-empty array"); - const useLoop = schema.length >= it.opts.loopEnum; - let eql; - const getEql = () => eql !== null && eql !== void 0 ? eql : eql = (0, util_1.useFunc)(gen, equal_1.default); - let valid; - if (useLoop || $data) { - valid = gen.let("valid"); - cxt.block$data(valid, loopEnum); - } else { - if (!Array.isArray(schema)) - throw new Error("ajv implementation error"); - const vSchema = gen.const("vSchema", schemaCode); - valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i))); - } - cxt.pass(valid); - function loopEnum() { - gen.assign(valid, false); - gen.forOf("v", schemaCode, (v) => gen.if((0, codegen_1._)`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())); - } - function equalCode(vSchema, i) { - const sch = schema[i]; - return typeof sch === "object" && sch !== null ? (0, codegen_1._)`${getEql()}(${data}, ${vSchema}[${i}])` : (0, codegen_1._)`${data} === ${sch}`; - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/validation/index.js -var require_validation = __commonJS({ - "node_modules/ajv/dist/vocabularies/validation/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var limitNumber_1 = require_limitNumber(); - var multipleOf_1 = require_multipleOf(); - var limitLength_1 = require_limitLength(); - var pattern_1 = require_pattern(); - var limitProperties_1 = require_limitProperties(); - var required_1 = require_required(); - var limitItems_1 = require_limitItems(); - var uniqueItems_1 = require_uniqueItems(); - var const_1 = require_const(); - var enum_1 = require_enum(); - var validation = [ - // number - limitNumber_1.default, - multipleOf_1.default, - // string - limitLength_1.default, - pattern_1.default, - // object - limitProperties_1.default, - required_1.default, - // array - limitItems_1.default, - uniqueItems_1.default, - // any - { keyword: "type", schemaType: ["string", "array"] }, - { keyword: "nullable", schemaType: "boolean" }, - const_1.default, - enum_1.default - ]; - exports.default = validation; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/additionalItems.js -var require_additionalItems = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.validateAdditionalItems = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`, - params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}` - }; - var def = { - keyword: "additionalItems", - type: "array", - schemaType: ["boolean", "object"], - before: "uniqueItems", - error: error2, - code(cxt) { - const { parentSchema, it } = cxt; - const { items } = parentSchema; - if (!Array.isArray(items)) { - (0, util_1.checkStrictMode)(it, '"additionalItems" is ignored when "items" is not an array of schemas'); - return; - } - validateAdditionalItems(cxt, items); - } - }; - function validateAdditionalItems(cxt, items) { - const { gen, schema, data, keyword, it } = cxt; - it.items = true; - const len = gen.const("len", (0, codegen_1._)`${data}.length`); - if (schema === false) { - cxt.setParams({ len: items.length }); - cxt.pass((0, codegen_1._)`${len} <= ${items.length}`); - } else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { - const valid = gen.var("valid", (0, codegen_1._)`${len} <= ${items.length}`); - gen.if((0, codegen_1.not)(valid), () => validateItems(valid)); - cxt.ok(valid); - } - function validateItems(valid) { - gen.forRange("i", items.length, len, (i) => { - cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid); - if (!it.allErrors) - gen.if((0, codegen_1.not)(valid), () => gen.break()); - }); - } - } - exports.validateAdditionalItems = validateAdditionalItems; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/items.js -var require_items = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/items.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.validateTuple = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var code_1 = require_code2(); - var def = { - keyword: "items", - type: "array", - schemaType: ["object", "array", "boolean"], - before: "uniqueItems", - code(cxt) { - const { schema, it } = cxt; - if (Array.isArray(schema)) - return validateTuple(cxt, "additionalItems", schema); - it.items = true; - if ((0, util_1.alwaysValidSchema)(it, schema)) - return; - cxt.ok((0, code_1.validateArray)(cxt)); - } - }; - function validateTuple(cxt, extraItems, schArr = cxt.schema) { - const { gen, parentSchema, data, keyword, it } = cxt; - checkStrictTuple(parentSchema); - if (it.opts.unevaluated && schArr.length && it.items !== true) { - it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items); - } - const valid = gen.name("valid"); - const len = gen.const("len", (0, codegen_1._)`${data}.length`); - schArr.forEach((sch, i) => { - if ((0, util_1.alwaysValidSchema)(it, sch)) - return; - gen.if((0, codegen_1._)`${len} > ${i}`, () => cxt.subschema({ - keyword, - schemaProp: i, - dataProp: i - }, valid)); - cxt.ok(valid); - }); - function checkStrictTuple(sch) { - const { opts, errSchemaPath } = it; - const l = schArr.length; - const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false); - if (opts.strictTuples && !fullTuple) { - const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`; - (0, util_1.checkStrictMode)(it, msg, opts.strictTuples); - } - } - } - exports.validateTuple = validateTuple; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/prefixItems.js -var require_prefixItems = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var items_1 = require_items(); - var def = { - keyword: "prefixItems", - type: "array", - schemaType: ["array"], - before: "uniqueItems", - code: (cxt) => (0, items_1.validateTuple)(cxt, "items") - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/items2020.js -var require_items2020 = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var code_1 = require_code2(); - var additionalItems_1 = require_additionalItems(); - var error2 = { - message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`, - params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}` - }; - var def = { - keyword: "items", - type: "array", - schemaType: ["object", "boolean"], - before: "uniqueItems", - error: error2, - code(cxt) { - const { schema, parentSchema, it } = cxt; - const { prefixItems } = parentSchema; - it.items = true; - if ((0, util_1.alwaysValidSchema)(it, schema)) - return; - if (prefixItems) - (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems); - else - cxt.ok((0, code_1.validateArray)(cxt)); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/contains.js -var require_contains = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1.str)`must contain at least ${min} valid item(s)` : (0, codegen_1.str)`must contain at least ${min} and no more than ${max} valid item(s)`, - params: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1._)`{minContains: ${min}}` : (0, codegen_1._)`{minContains: ${min}, maxContains: ${max}}` - }; - var def = { - keyword: "contains", - type: "array", - schemaType: ["object", "boolean"], - before: "uniqueItems", - trackErrors: true, - error: error2, - code(cxt) { - const { gen, schema, parentSchema, data, it } = cxt; - let min; - let max; - const { minContains, maxContains } = parentSchema; - if (it.opts.next) { - min = minContains === void 0 ? 1 : minContains; - max = maxContains; - } else { - min = 1; - } - const len = gen.const("len", (0, codegen_1._)`${data}.length`); - cxt.setParams({ min, max }); - if (max === void 0 && min === 0) { - (0, util_1.checkStrictMode)(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`); - return; - } - if (max !== void 0 && min > max) { - (0, util_1.checkStrictMode)(it, `"minContains" > "maxContains" is always invalid`); - cxt.fail(); - return; - } - if ((0, util_1.alwaysValidSchema)(it, schema)) { - let cond = (0, codegen_1._)`${len} >= ${min}`; - if (max !== void 0) - cond = (0, codegen_1._)`${cond} && ${len} <= ${max}`; - cxt.pass(cond); - return; - } - it.items = true; - const valid = gen.name("valid"); - if (max === void 0 && min === 1) { - validateItems(valid, () => gen.if(valid, () => gen.break())); - } else if (min === 0) { - gen.let(valid, true); - if (max !== void 0) - gen.if((0, codegen_1._)`${data}.length > 0`, validateItemsWithCount); - } else { - gen.let(valid, false); - validateItemsWithCount(); - } - cxt.result(valid, () => cxt.reset()); - function validateItemsWithCount() { - const schValid = gen.name("_valid"); - const count = gen.let("count", 0); - validateItems(schValid, () => gen.if(schValid, () => checkLimits(count))); - } - function validateItems(_valid, block) { - gen.forRange("i", 0, len, (i) => { - cxt.subschema({ - keyword: "contains", - dataProp: i, - dataPropType: util_1.Type.Num, - compositeRule: true - }, _valid); - block(); - }); - } - function checkLimits(count) { - gen.code((0, codegen_1._)`${count}++`); - if (max === void 0) { - gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true).break()); - } else { - gen.if((0, codegen_1._)`${count} > ${max}`, () => gen.assign(valid, false).break()); - if (min === 1) - gen.assign(valid, true); - else - gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true)); - } - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/dependencies.js -var require_dependencies = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0; - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var code_1 = require_code2(); - exports.error = { - message: ({ params: { property, depsCount, deps } }) => { - const property_ies = depsCount === 1 ? "property" : "properties"; - return (0, codegen_1.str)`must have ${property_ies} ${deps} when property ${property} is present`; - }, - params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._)`{property: ${property}, - missingProperty: ${missingProperty}, - depsCount: ${depsCount}, - deps: ${deps}}` - // TODO change to reference - }; - var def = { - keyword: "dependencies", - type: "object", - schemaType: "object", - error: exports.error, - code(cxt) { - const [propDeps, schDeps] = splitDependencies(cxt); - validatePropertyDeps(cxt, propDeps); - validateSchemaDeps(cxt, schDeps); - } - }; - function splitDependencies({ schema }) { - const propertyDeps = {}; - const schemaDeps = {}; - for (const key in schema) { - if (key === "__proto__") - continue; - const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps; - deps[key] = schema[key]; - } - return [propertyDeps, schemaDeps]; - } - function validatePropertyDeps(cxt, propertyDeps = cxt.schema) { - const { gen, data, it } = cxt; - if (Object.keys(propertyDeps).length === 0) - return; - const missing = gen.let("missing"); - for (const prop in propertyDeps) { - const deps = propertyDeps[prop]; - if (deps.length === 0) - continue; - const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties); - cxt.setParams({ - property: prop, - depsCount: deps.length, - deps: deps.join(", ") - }); - if (it.allErrors) { - gen.if(hasProperty, () => { - for (const depProp of deps) { - (0, code_1.checkReportMissingProp)(cxt, depProp); - } - }); - } else { - gen.if((0, codegen_1._)`${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`); - (0, code_1.reportMissingProp)(cxt, missing); - gen.else(); - } - } - } - exports.validatePropertyDeps = validatePropertyDeps; - function validateSchemaDeps(cxt, schemaDeps = cxt.schema) { - const { gen, data, keyword, it } = cxt; - const valid = gen.name("valid"); - for (const prop in schemaDeps) { - if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop])) - continue; - gen.if( - (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), - () => { - const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid); - cxt.mergeValidEvaluated(schCxt, valid); - }, - () => gen.var(valid, true) - // TODO var - ); - cxt.ok(valid); - } - } - exports.validateSchemaDeps = validateSchemaDeps; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/propertyNames.js -var require_propertyNames = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: "property name must be valid", - params: ({ params }) => (0, codegen_1._)`{propertyName: ${params.propertyName}}` - }; - var def = { - keyword: "propertyNames", - type: "object", - schemaType: ["object", "boolean"], - error: error2, - code(cxt) { - const { gen, schema, data, it } = cxt; - if ((0, util_1.alwaysValidSchema)(it, schema)) - return; - const valid = gen.name("valid"); - gen.forIn("key", data, (key) => { - cxt.setParams({ propertyName: key }); - cxt.subschema({ - keyword: "propertyNames", - data: key, - dataTypes: ["string"], - propertyName: key, - compositeRule: true - }, valid); - gen.if((0, codegen_1.not)(valid), () => { - cxt.error(true); - if (!it.allErrors) - gen.break(); - }); - }); - cxt.ok(valid); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js -var require_additionalProperties = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var code_1 = require_code2(); - var codegen_1 = require_codegen(); - var names_1 = require_names(); - var util_1 = require_util(); - var error2 = { - message: "must NOT have additional properties", - params: ({ params }) => (0, codegen_1._)`{additionalProperty: ${params.additionalProperty}}` - }; - var def = { - keyword: "additionalProperties", - type: ["object"], - schemaType: ["boolean", "object"], - allowUndefined: true, - trackErrors: true, - error: error2, - code(cxt) { - const { gen, schema, parentSchema, data, errsCount, it } = cxt; - if (!errsCount) - throw new Error("ajv implementation error"); - const { allErrors, opts } = it; - it.props = true; - if (opts.removeAdditional !== "all" && (0, util_1.alwaysValidSchema)(it, schema)) - return; - const props = (0, code_1.allSchemaProperties)(parentSchema.properties); - const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties); - checkAdditionalProperties(); - cxt.ok((0, codegen_1._)`${errsCount} === ${names_1.default.errors}`); - function checkAdditionalProperties() { - gen.forIn("key", data, (key) => { - if (!props.length && !patProps.length) - additionalPropertyCode(key); - else - gen.if(isAdditional(key), () => additionalPropertyCode(key)); - }); - } - function isAdditional(key) { - let definedProp; - if (props.length > 8) { - const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, "properties"); - definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key); - } else if (props.length) { - definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._)`${key} === ${p}`)); - } else { - definedProp = codegen_1.nil; - } - if (patProps.length) { - definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._)`${(0, code_1.usePattern)(cxt, p)}.test(${key})`)); - } - return (0, codegen_1.not)(definedProp); - } - function deleteAdditional(key) { - gen.code((0, codegen_1._)`delete ${data}[${key}]`); - } - function additionalPropertyCode(key) { - if (opts.removeAdditional === "all" || opts.removeAdditional && schema === false) { - deleteAdditional(key); - return; - } - if (schema === false) { - cxt.setParams({ additionalProperty: key }); - cxt.error(); - if (!allErrors) - gen.break(); - return; - } - if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { - const valid = gen.name("valid"); - if (opts.removeAdditional === "failing") { - applyAdditionalSchema(key, valid, false); - gen.if((0, codegen_1.not)(valid), () => { - cxt.reset(); - deleteAdditional(key); - }); - } else { - applyAdditionalSchema(key, valid); - if (!allErrors) - gen.if((0, codegen_1.not)(valid), () => gen.break()); - } - } - } - function applyAdditionalSchema(key, valid, errors) { - const subschema = { - keyword: "additionalProperties", - dataProp: key, - dataPropType: util_1.Type.Str - }; - if (errors === false) { - Object.assign(subschema, { - compositeRule: true, - createErrors: false, - allErrors: false - }); - } - cxt.subschema(subschema, valid); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/properties.js -var require_properties = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var validate_1 = require_validate(); - var code_1 = require_code2(); - var util_1 = require_util(); - var additionalProperties_1 = require_additionalProperties(); - var def = { - keyword: "properties", - type: "object", - schemaType: "object", - code(cxt) { - const { gen, schema, parentSchema, data, it } = cxt; - if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === void 0) { - additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties")); - } - const allProps = (0, code_1.allSchemaProperties)(schema); - for (const prop of allProps) { - it.definedProperties.add(prop); - } - if (it.opts.unevaluated && allProps.length && it.props !== true) { - it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props); - } - const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p])); - if (properties.length === 0) - return; - const valid = gen.name("valid"); - for (const prop of properties) { - if (hasDefault(prop)) { - applyPropertySchema(prop); - } else { - gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties)); - applyPropertySchema(prop); - if (!it.allErrors) - gen.else().var(valid, true); - gen.endIf(); - } - cxt.it.definedProperties.add(prop); - cxt.ok(valid); - } - function hasDefault(prop) { - return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== void 0; - } - function applyPropertySchema(prop) { - cxt.subschema({ - keyword: "properties", - schemaProp: prop, - dataProp: prop - }, valid); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/patternProperties.js -var require_patternProperties = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var code_1 = require_code2(); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var util_2 = require_util(); - var def = { - keyword: "patternProperties", - type: "object", - schemaType: "object", - code(cxt) { - const { gen, schema, data, parentSchema, it } = cxt; - const { opts } = it; - const patterns = (0, code_1.allSchemaProperties)(schema); - const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p])); - if (patterns.length === 0 || alwaysValidPatterns.length === patterns.length && (!it.opts.unevaluated || it.props === true)) { - return; - } - const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties; - const valid = gen.name("valid"); - if (it.props !== true && !(it.props instanceof codegen_1.Name)) { - it.props = (0, util_2.evaluatedPropsToName)(gen, it.props); - } - const { props } = it; - validatePatternProperties(); - function validatePatternProperties() { - for (const pat of patterns) { - if (checkProperties) - checkMatchingProperties(pat); - if (it.allErrors) { - validateProperties(pat); - } else { - gen.var(valid, true); - validateProperties(pat); - gen.if(valid); - } - } - } - function checkMatchingProperties(pat) { - for (const prop in checkProperties) { - if (new RegExp(pat).test(prop)) { - (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`); - } - } - } - function validateProperties(pat) { - gen.forIn("key", data, (key) => { - gen.if((0, codegen_1._)`${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => { - const alwaysValid = alwaysValidPatterns.includes(pat); - if (!alwaysValid) { - cxt.subschema({ - keyword: "patternProperties", - schemaProp: pat, - dataProp: key, - dataPropType: util_2.Type.Str - }, valid); - } - if (it.opts.unevaluated && props !== true) { - gen.assign((0, codegen_1._)`${props}[${key}]`, true); - } else if (!alwaysValid && !it.allErrors) { - gen.if((0, codegen_1.not)(valid), () => gen.break()); - } - }); - }); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/not.js -var require_not = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/not.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var util_1 = require_util(); - var def = { - keyword: "not", - schemaType: ["object", "boolean"], - trackErrors: true, - code(cxt) { - const { gen, schema, it } = cxt; - if ((0, util_1.alwaysValidSchema)(it, schema)) { - cxt.fail(); - return; - } - const valid = gen.name("valid"); - cxt.subschema({ - keyword: "not", - compositeRule: true, - createErrors: false, - allErrors: false - }, valid); - cxt.failResult(valid, () => cxt.reset(), () => cxt.error()); - }, - error: { message: "must NOT be valid" } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/anyOf.js -var require_anyOf = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var code_1 = require_code2(); - var def = { - keyword: "anyOf", - schemaType: "array", - trackErrors: true, - code: code_1.validateUnion, - error: { message: "must match a schema in anyOf" } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/oneOf.js -var require_oneOf = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: "must match exactly one schema in oneOf", - params: ({ params }) => (0, codegen_1._)`{passingSchemas: ${params.passing}}` - }; - var def = { - keyword: "oneOf", - schemaType: "array", - trackErrors: true, - error: error2, - code(cxt) { - const { gen, schema, parentSchema, it } = cxt; - if (!Array.isArray(schema)) - throw new Error("ajv implementation error"); - if (it.opts.discriminator && parentSchema.discriminator) - return; - const schArr = schema; - const valid = gen.let("valid", false); - const passing = gen.let("passing", null); - const schValid = gen.name("_valid"); - cxt.setParams({ passing }); - gen.block(validateOneOf); - cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); - function validateOneOf() { - schArr.forEach((sch, i) => { - let schCxt; - if ((0, util_1.alwaysValidSchema)(it, sch)) { - gen.var(schValid, true); - } else { - schCxt = cxt.subschema({ - keyword: "oneOf", - schemaProp: i, - compositeRule: true - }, schValid); - } - if (i > 0) { - gen.if((0, codegen_1._)`${schValid} && ${valid}`).assign(valid, false).assign(passing, (0, codegen_1._)`[${passing}, ${i}]`).else(); - } - gen.if(schValid, () => { - gen.assign(valid, true); - gen.assign(passing, i); - if (schCxt) - cxt.mergeEvaluated(schCxt, codegen_1.Name); - }); - }); - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/allOf.js -var require_allOf = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var util_1 = require_util(); - var def = { - keyword: "allOf", - schemaType: "array", - code(cxt) { - const { gen, schema, it } = cxt; - if (!Array.isArray(schema)) - throw new Error("ajv implementation error"); - const valid = gen.name("valid"); - schema.forEach((sch, i) => { - if ((0, util_1.alwaysValidSchema)(it, sch)) - return; - const schCxt = cxt.subschema({ keyword: "allOf", schemaProp: i }, valid); - cxt.ok(valid); - cxt.mergeEvaluated(schCxt); - }); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/if.js -var require_if = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/if.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var util_1 = require_util(); - var error2 = { - message: ({ params }) => (0, codegen_1.str)`must match "${params.ifClause}" schema`, - params: ({ params }) => (0, codegen_1._)`{failingKeyword: ${params.ifClause}}` - }; - var def = { - keyword: "if", - schemaType: ["object", "boolean"], - trackErrors: true, - error: error2, - code(cxt) { - const { gen, parentSchema, it } = cxt; - if (parentSchema.then === void 0 && parentSchema.else === void 0) { - (0, util_1.checkStrictMode)(it, '"if" without "then" and "else" is ignored'); - } - const hasThen = hasSchema(it, "then"); - const hasElse = hasSchema(it, "else"); - if (!hasThen && !hasElse) - return; - const valid = gen.let("valid", true); - const schValid = gen.name("_valid"); - validateIf(); - cxt.reset(); - if (hasThen && hasElse) { - const ifClause = gen.let("ifClause"); - cxt.setParams({ ifClause }); - gen.if(schValid, validateClause("then", ifClause), validateClause("else", ifClause)); - } else if (hasThen) { - gen.if(schValid, validateClause("then")); - } else { - gen.if((0, codegen_1.not)(schValid), validateClause("else")); - } - cxt.pass(valid, () => cxt.error(true)); - function validateIf() { - const schCxt = cxt.subschema({ - keyword: "if", - compositeRule: true, - createErrors: false, - allErrors: false - }, schValid); - cxt.mergeEvaluated(schCxt); - } - function validateClause(keyword, ifClause) { - return () => { - const schCxt = cxt.subschema({ keyword }, schValid); - gen.assign(valid, schValid); - cxt.mergeValidEvaluated(schCxt, valid); - if (ifClause) - gen.assign(ifClause, (0, codegen_1._)`${keyword}`); - else - cxt.setParams({ ifClause: keyword }); - }; - } - } - }; - function hasSchema(it, keyword) { - const schema = it.schema[keyword]; - return schema !== void 0 && !(0, util_1.alwaysValidSchema)(it, schema); - } - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/thenElse.js -var require_thenElse = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var util_1 = require_util(); - var def = { - keyword: ["then", "else"], - schemaType: ["object", "boolean"], - code({ keyword, parentSchema, it }) { - if (parentSchema.if === void 0) - (0, util_1.checkStrictMode)(it, `"${keyword}" without "if" is ignored`); - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/applicator/index.js -var require_applicator = __commonJS({ - "node_modules/ajv/dist/vocabularies/applicator/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var additionalItems_1 = require_additionalItems(); - var prefixItems_1 = require_prefixItems(); - var items_1 = require_items(); - var items2020_1 = require_items2020(); - var contains_1 = require_contains(); - var dependencies_1 = require_dependencies(); - var propertyNames_1 = require_propertyNames(); - var additionalProperties_1 = require_additionalProperties(); - var properties_1 = require_properties(); - var patternProperties_1 = require_patternProperties(); - var not_1 = require_not(); - var anyOf_1 = require_anyOf(); - var oneOf_1 = require_oneOf(); - var allOf_1 = require_allOf(); - var if_1 = require_if(); - var thenElse_1 = require_thenElse(); - function getApplicator(draft2020 = false) { - const applicator = [ - // any - not_1.default, - anyOf_1.default, - oneOf_1.default, - allOf_1.default, - if_1.default, - thenElse_1.default, - // object - propertyNames_1.default, - additionalProperties_1.default, - dependencies_1.default, - properties_1.default, - patternProperties_1.default - ]; - if (draft2020) - applicator.push(prefixItems_1.default, items2020_1.default); - else - applicator.push(additionalItems_1.default, items_1.default); - applicator.push(contains_1.default); - return applicator; - } - exports.default = getApplicator; - } -}); - -// node_modules/ajv/dist/vocabularies/format/format.js -var require_format = __commonJS({ - "node_modules/ajv/dist/vocabularies/format/format.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var error2 = { - message: ({ schemaCode }) => (0, codegen_1.str)`must match format "${schemaCode}"`, - params: ({ schemaCode }) => (0, codegen_1._)`{format: ${schemaCode}}` - }; - var def = { - keyword: "format", - type: ["number", "string"], - schemaType: "string", - $data: true, - error: error2, - code(cxt, ruleType) { - const { gen, data, $data, schema, schemaCode, it } = cxt; - const { opts, errSchemaPath, schemaEnv, self } = it; - if (!opts.validateFormats) - return; - if ($data) - validate$DataFormat(); - else - validateFormat(); - function validate$DataFormat() { - const fmts = gen.scopeValue("formats", { - ref: self.formats, - code: opts.code.formats - }); - const fDef = gen.const("fDef", (0, codegen_1._)`${fmts}[${schemaCode}]`); - const fType = gen.let("fType"); - const format = gen.let("format"); - gen.if((0, codegen_1._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._)`${fDef}.type || "string"`).assign(format, (0, codegen_1._)`${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._)`"string"`).assign(format, fDef)); - cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt())); - function unknownFmt() { - if (opts.strictSchema === false) - return codegen_1.nil; - return (0, codegen_1._)`${schemaCode} && !${format}`; - } - function invalidFmt() { - const callFormat = schemaEnv.$async ? (0, codegen_1._)`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))` : (0, codegen_1._)`${format}(${data})`; - const validData = (0, codegen_1._)`(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`; - return (0, codegen_1._)`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`; - } - } - function validateFormat() { - const formatDef = self.formats[schema]; - if (!formatDef) { - unknownFormat(); - return; - } - if (formatDef === true) - return; - const [fmtType, format, fmtRef] = getFormat(formatDef); - if (fmtType === ruleType) - cxt.pass(validCondition()); - function unknownFormat() { - if (opts.strictSchema === false) { - self.logger.warn(unknownMsg()); - return; - } - throw new Error(unknownMsg()); - function unknownMsg() { - return `unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`; - } - } - function getFormat(fmtDef) { - const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : void 0; - const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code }); - if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) { - return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`]; - } - return ["string", fmtDef, fmt]; - } - function validCondition() { - if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) { - if (!schemaEnv.$async) - throw new Error("async format in sync schema"); - return (0, codegen_1._)`await ${fmtRef}(${data})`; - } - return typeof format == "function" ? (0, codegen_1._)`${fmtRef}(${data})` : (0, codegen_1._)`${fmtRef}.test(${data})`; - } - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/vocabularies/format/index.js -var require_format2 = __commonJS({ - "node_modules/ajv/dist/vocabularies/format/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var format_1 = require_format(); - var format = [format_1.default]; - exports.default = format; - } -}); - -// node_modules/ajv/dist/vocabularies/metadata.js -var require_metadata = __commonJS({ - "node_modules/ajv/dist/vocabularies/metadata.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.contentVocabulary = exports.metadataVocabulary = void 0; - exports.metadataVocabulary = [ - "title", - "description", - "default", - "deprecated", - "readOnly", - "writeOnly", - "examples" - ]; - exports.contentVocabulary = [ - "contentMediaType", - "contentEncoding", - "contentSchema" - ]; - } -}); - -// node_modules/ajv/dist/vocabularies/draft7.js -var require_draft7 = __commonJS({ - "node_modules/ajv/dist/vocabularies/draft7.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var core_1 = require_core2(); - var validation_1 = require_validation(); - var applicator_1 = require_applicator(); - var format_1 = require_format2(); - var metadata_1 = require_metadata(); - var draft7Vocabularies = [ - core_1.default, - validation_1.default, - (0, applicator_1.default)(), - format_1.default, - metadata_1.metadataVocabulary, - metadata_1.contentVocabulary - ]; - exports.default = draft7Vocabularies; - } -}); - -// node_modules/ajv/dist/vocabularies/discriminator/types.js -var require_types = __commonJS({ - "node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.DiscrError = void 0; - var DiscrError; - (function(DiscrError2) { - DiscrError2["Tag"] = "tag"; - DiscrError2["Mapping"] = "mapping"; - })(DiscrError || (exports.DiscrError = DiscrError = {})); - } -}); - -// node_modules/ajv/dist/vocabularies/discriminator/index.js -var require_discriminator = __commonJS({ - "node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var codegen_1 = require_codegen(); - var types_1 = require_types(); - var compile_1 = require_compile(); - var ref_error_1 = require_ref_error(); - var util_1 = require_util(); - var error2 = { - message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag ? `tag "${tagName}" must be string` : `value of tag "${tagName}" must be in oneOf`, - params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._)`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}` - }; - var def = { - keyword: "discriminator", - type: "object", - schemaType: "object", - error: error2, - code(cxt) { - const { gen, data, schema, parentSchema, it } = cxt; - const { oneOf } = parentSchema; - if (!it.opts.discriminator) { - throw new Error("discriminator: requires discriminator option"); - } - const tagName = schema.propertyName; - if (typeof tagName != "string") - throw new Error("discriminator: requires propertyName"); - if (schema.mapping) - throw new Error("discriminator: mapping is not supported"); - if (!oneOf) - throw new Error("discriminator: requires oneOf keyword"); - const valid = gen.let("valid", false); - const tag = gen.const("tag", (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(tagName)}`); - gen.if((0, codegen_1._)`typeof ${tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName })); - cxt.ok(valid); - function validateMapping() { - const mapping = getMapping(); - gen.if(false); - for (const tagValue in mapping) { - gen.elseIf((0, codegen_1._)`${tag} === ${tagValue}`); - gen.assign(valid, applyTagSchema(mapping[tagValue])); - } - gen.else(); - cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName }); - gen.endIf(); - } - function applyTagSchema(schemaProp) { - const _valid = gen.name("valid"); - const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid); - cxt.mergeEvaluated(schCxt, codegen_1.Name); - return _valid; - } - function getMapping() { - var _a; - const oneOfMapping = {}; - const topRequired = hasRequired(parentSchema); - let tagRequired = true; - for (let i = 0; i < oneOf.length; i++) { - let sch = oneOf[i]; - if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) { - const ref = sch.$ref; - sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref); - if (sch instanceof compile_1.SchemaEnv) - sch = sch.schema; - if (sch === void 0) - throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref); - } - const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName]; - if (typeof propSch != "object") { - throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${tagName}"`); - } - tagRequired = tagRequired && (topRequired || hasRequired(sch)); - addMappings(propSch, i); - } - if (!tagRequired) - throw new Error(`discriminator: "${tagName}" must be required`); - return oneOfMapping; - function hasRequired({ required: required2 }) { - return Array.isArray(required2) && required2.includes(tagName); - } - function addMappings(sch, i) { - if (sch.const) { - addMapping(sch.const, i); - } else if (sch.enum) { - for (const tagValue of sch.enum) { - addMapping(tagValue, i); - } - } else { - throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`); - } - } - function addMapping(tagValue, i) { - if (typeof tagValue != "string" || tagValue in oneOfMapping) { - throw new Error(`discriminator: "${tagName}" values must be unique strings`); - } - oneOfMapping[tagValue] = i; - } - } - } - }; - exports.default = def; - } -}); - -// node_modules/ajv/dist/refs/json-schema-draft-07.json -var require_json_schema_draft_07 = __commonJS({ - "node_modules/ajv/dist/refs/json-schema-draft-07.json"(exports, module) { - module.exports = { - $schema: "http://json-schema.org/draft-07/schema#", - $id: "http://json-schema.org/draft-07/schema#", - title: "Core schema meta-schema", - definitions: { - schemaArray: { - type: "array", - minItems: 1, - items: { $ref: "#" } - }, - nonNegativeInteger: { - type: "integer", - minimum: 0 - }, - nonNegativeIntegerDefault0: { - allOf: [{ $ref: "#/definitions/nonNegativeInteger" }, { default: 0 }] - }, - simpleTypes: { - enum: ["array", "boolean", "integer", "null", "number", "object", "string"] - }, - stringArray: { - type: "array", - items: { type: "string" }, - uniqueItems: true, - default: [] - } - }, - type: ["object", "boolean"], - properties: { - $id: { - type: "string", - format: "uri-reference" - }, - $schema: { - type: "string", - format: "uri" - }, - $ref: { - type: "string", - format: "uri-reference" - }, - $comment: { - type: "string" - }, - title: { - type: "string" - }, - description: { - type: "string" - }, - default: true, - readOnly: { - type: "boolean", - default: false - }, - examples: { - type: "array", - items: true - }, - multipleOf: { - type: "number", - exclusiveMinimum: 0 - }, - maximum: { - type: "number" - }, - exclusiveMaximum: { - type: "number" - }, - minimum: { - type: "number" - }, - exclusiveMinimum: { - type: "number" - }, - maxLength: { $ref: "#/definitions/nonNegativeInteger" }, - minLength: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, - pattern: { - type: "string", - format: "regex" - }, - additionalItems: { $ref: "#" }, - items: { - anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }], - default: true - }, - maxItems: { $ref: "#/definitions/nonNegativeInteger" }, - minItems: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, - uniqueItems: { - type: "boolean", - default: false - }, - contains: { $ref: "#" }, - maxProperties: { $ref: "#/definitions/nonNegativeInteger" }, - minProperties: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, - required: { $ref: "#/definitions/stringArray" }, - additionalProperties: { $ref: "#" }, - definitions: { - type: "object", - additionalProperties: { $ref: "#" }, - default: {} - }, - properties: { - type: "object", - additionalProperties: { $ref: "#" }, - default: {} - }, - patternProperties: { - type: "object", - additionalProperties: { $ref: "#" }, - propertyNames: { format: "regex" }, - default: {} - }, - dependencies: { - type: "object", - additionalProperties: { - anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }] - } - }, - propertyNames: { $ref: "#" }, - const: true, - enum: { - type: "array", - items: true, - minItems: 1, - uniqueItems: true - }, - type: { - anyOf: [ - { $ref: "#/definitions/simpleTypes" }, - { - type: "array", - items: { $ref: "#/definitions/simpleTypes" }, - minItems: 1, - uniqueItems: true - } - ] - }, - format: { type: "string" }, - contentMediaType: { type: "string" }, - contentEncoding: { type: "string" }, - if: { $ref: "#" }, - then: { $ref: "#" }, - else: { $ref: "#" }, - allOf: { $ref: "#/definitions/schemaArray" }, - anyOf: { $ref: "#/definitions/schemaArray" }, - oneOf: { $ref: "#/definitions/schemaArray" }, - not: { $ref: "#" } - }, - default: true - }; - } -}); - -// node_modules/ajv/dist/ajv.js -var require_ajv = __commonJS({ - "node_modules/ajv/dist/ajv.js"(exports, module) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0; - var core_1 = require_core(); - var draft7_1 = require_draft7(); - var discriminator_1 = require_discriminator(); - var draft7MetaSchema = require_json_schema_draft_07(); - var META_SUPPORT_DATA = ["/properties"]; - var META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"; - var Ajv2 = class extends core_1.default { - _addVocabularies() { - super._addVocabularies(); - draft7_1.default.forEach((v) => this.addVocabulary(v)); - if (this.opts.discriminator) - this.addKeyword(discriminator_1.default); - } - _addDefaultMetaSchema() { - super._addDefaultMetaSchema(); - if (!this.opts.meta) - return; - const metaSchema = this.opts.$data ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA) : draft7MetaSchema; - this.addMetaSchema(metaSchema, META_SCHEMA_ID, false); - this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID; - } - defaultMeta() { - return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : void 0); - } - }; - exports.Ajv = Ajv2; - module.exports = exports = Ajv2; - module.exports.Ajv = Ajv2; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = Ajv2; - var validate_1 = require_validate(); - Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function() { - return validate_1.KeywordCxt; - } }); - var codegen_1 = require_codegen(); - Object.defineProperty(exports, "_", { enumerable: true, get: function() { - return codegen_1._; - } }); - Object.defineProperty(exports, "str", { enumerable: true, get: function() { - return codegen_1.str; - } }); - Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { - return codegen_1.stringify; - } }); - Object.defineProperty(exports, "nil", { enumerable: true, get: function() { - return codegen_1.nil; - } }); - Object.defineProperty(exports, "Name", { enumerable: true, get: function() { - return codegen_1.Name; - } }); - Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function() { - return codegen_1.CodeGen; - } }); - var validation_error_1 = require_validation_error(); - Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function() { - return validation_error_1.default; - } }); - var ref_error_1 = require_ref_error(); - Object.defineProperty(exports, "MissingRefError", { enumerable: true, get: function() { - return ref_error_1.default; - } }); - } -}); - -// node_modules/ajv-formats/dist/formats.js -var require_formats = __commonJS({ - "node_modules/ajv-formats/dist/formats.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.formatNames = exports.fastFormats = exports.fullFormats = void 0; - function fmtDef(validate, compare) { - return { validate, compare }; - } - exports.fullFormats = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: fmtDef(date, compareDate), - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: fmtDef(getTime(true), compareTime), - "date-time": fmtDef(getDateTime(true), compareDateTime), - "iso-time": fmtDef(getTime(), compareIsoTime), - "iso-date-time": fmtDef(getDateTime(), compareIsoDateTime), - // duration: https://tools.ietf.org/html/rfc3339#appendix-A - duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/, - uri, - "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i, - // uri-template: https://tools.ietf.org/html/rfc6570 - "uri-template": /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i, - // For the source: https://gist.github.com/dperini/729294 - // For test cases: https://mathiasbynens.be/demo/url-regex - url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/, - ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i, - regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - "json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/, - "json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - "relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, - // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types - // byte: https://github.com/miguelmota/is-base64 - byte, - // signed 32 bit integer - int32: { type: "number", validate: validateInt32 }, - // signed 64 bit integer - int64: { type: "number", validate: validateInt64 }, - // C-type float - float: { type: "number", validate: validateNumber }, - // C-type double - double: { type: "number", validate: validateNumber }, - // hint to the UI to hide input strings - password: true, - // unchecked string payload - binary: true - }; - exports.fastFormats = { - ...exports.fullFormats, - date: fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, compareDate), - time: fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareTime), - "date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareDateTime), - "iso-time": fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoTime), - "iso-date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoDateTime), - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, - "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i - }; - exports.formatNames = Object.keys(exports.fullFormats); - function isLeapYear(year) { - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); - } - var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; - var DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function date(str) { - const matches = DATE.exec(str); - if (!matches) - return false; - const year = +matches[1]; - const month = +matches[2]; - const day = +matches[3]; - return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]); - } - function compareDate(d1, d2) { - if (!(d1 && d2)) - return void 0; - if (d1 > d2) - return 1; - if (d1 < d2) - return -1; - return 0; - } - var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i; - function getTime(strictTimeZone) { - return function time(str) { - const matches = TIME.exec(str); - if (!matches) - return false; - const hr = +matches[1]; - const min = +matches[2]; - const sec = +matches[3]; - const tz = matches[4]; - const tzSign = matches[5] === "-" ? -1 : 1; - const tzH = +(matches[6] || 0); - const tzM = +(matches[7] || 0); - if (tzH > 23 || tzM > 59 || strictTimeZone && !tz) - return false; - if (hr <= 23 && min <= 59 && sec < 60) - return true; - const utcMin = min - tzM * tzSign; - const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0); - return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61; - }; - } - function compareTime(s1, s2) { - if (!(s1 && s2)) - return void 0; - const t1 = (/* @__PURE__ */ new Date("2020-01-01T" + s1)).valueOf(); - const t2 = (/* @__PURE__ */ new Date("2020-01-01T" + s2)).valueOf(); - if (!(t1 && t2)) - return void 0; - return t1 - t2; - } - function compareIsoTime(t1, t2) { - if (!(t1 && t2)) - return void 0; - const a1 = TIME.exec(t1); - const a2 = TIME.exec(t2); - if (!(a1 && a2)) - return void 0; - t1 = a1[1] + a1[2] + a1[3]; - t2 = a2[1] + a2[2] + a2[3]; - if (t1 > t2) - return 1; - if (t1 < t2) - return -1; - return 0; - } - var DATE_TIME_SEPARATOR = /t|\s/i; - function getDateTime(strictTimeZone) { - const time = getTime(strictTimeZone); - return function date_time(str) { - const dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1]); - }; - } - function compareDateTime(dt1, dt2) { - if (!(dt1 && dt2)) - return void 0; - const d1 = new Date(dt1).valueOf(); - const d2 = new Date(dt2).valueOf(); - if (!(d1 && d2)) - return void 0; - return d1 - d2; - } - function compareIsoDateTime(dt1, dt2) { - if (!(dt1 && dt2)) - return void 0; - const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR); - const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR); - const res = compareDate(d1, d2); - if (res === void 0) - return void 0; - return res || compareTime(t1, t2); - } - var NOT_URI_FRAGMENT = /\/|:/; - var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; - function uri(str) { - return NOT_URI_FRAGMENT.test(str) && URI.test(str); - } - var BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm; - function byte(str) { - BYTE.lastIndex = 0; - return BYTE.test(str); - } - var MIN_INT32 = -(2 ** 31); - var MAX_INT32 = 2 ** 31 - 1; - function validateInt32(value) { - return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32; - } - function validateInt64(value) { - return Number.isInteger(value); - } - function validateNumber() { - return true; - } - var Z_ANCHOR = /[^\\]\\Z/; - function regex(str) { - if (Z_ANCHOR.test(str)) - return false; - try { - new RegExp(str); - return true; - } catch (e) { - return false; - } - } - } -}); - -// node_modules/ajv-formats/dist/limit.js -var require_limit = __commonJS({ - "node_modules/ajv-formats/dist/limit.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.formatLimitDefinition = void 0; - var ajv_1 = require_ajv(); - var codegen_1 = require_codegen(); - var ops = codegen_1.operators; - var KWDs = { - formatMaximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, - formatMinimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, - formatExclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, - formatExclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } - }; - var error2 = { - message: ({ keyword, schemaCode }) => (0, codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`, - params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}` - }; - exports.formatLimitDefinition = { - keyword: Object.keys(KWDs), - type: "string", - schemaType: "string", - $data: true, - error: error2, - code(cxt) { - const { gen, data, schemaCode, keyword, it } = cxt; - const { opts, self } = it; - if (!opts.validateFormats) - return; - const fCxt = new ajv_1.KeywordCxt(it, self.RULES.all.format.definition, "format"); - if (fCxt.$data) - validate$DataFormat(); - else - validateFormat(); - function validate$DataFormat() { - const fmts = gen.scopeValue("formats", { - ref: self.formats, - code: opts.code.formats - }); - const fmt = gen.const("fmt", (0, codegen_1._)`${fmts}[${fCxt.schemaCode}]`); - cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof ${fmt} != "object"`, (0, codegen_1._)`${fmt} instanceof RegExp`, (0, codegen_1._)`typeof ${fmt}.compare != "function"`, compareCode(fmt))); - } - function validateFormat() { - const format = fCxt.schema; - const fmtDef = self.formats[format]; - if (!fmtDef || fmtDef === true) - return; - if (typeof fmtDef != "object" || fmtDef instanceof RegExp || typeof fmtDef.compare != "function") { - throw new Error(`"${keyword}": format "${format}" does not define "compare" function`); - } - const fmt = gen.scopeValue("formats", { - key: format, - ref: fmtDef, - code: opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(format)}` : void 0 - }); - cxt.fail$data(compareCode(fmt)); - } - function compareCode(fmt) { - return (0, codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`; - } - }, - dependencies: ["format"] - }; - var formatLimitPlugin = (ajv) => { - ajv.addKeyword(exports.formatLimitDefinition); - return ajv; - }; - exports.default = formatLimitPlugin; - } -}); - -// node_modules/ajv-formats/dist/index.js -var require_dist = __commonJS({ - "node_modules/ajv-formats/dist/index.js"(exports, module) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var formats_1 = require_formats(); - var limit_1 = require_limit(); - var codegen_1 = require_codegen(); - var fullName = new codegen_1.Name("fullFormats"); - var fastName = new codegen_1.Name("fastFormats"); - var formatsPlugin = (ajv, opts = { keywords: true }) => { - if (Array.isArray(opts)) { - addFormats(ajv, opts, formats_1.fullFormats, fullName); - return ajv; - } - const [formats, exportName] = opts.mode === "fast" ? [formats_1.fastFormats, fastName] : [formats_1.fullFormats, fullName]; - const list = opts.formats || formats_1.formatNames; - addFormats(ajv, list, formats, exportName); - if (opts.keywords) - (0, limit_1.default)(ajv); - return ajv; - }; - formatsPlugin.get = (name, mode = "full") => { - const formats = mode === "fast" ? formats_1.fastFormats : formats_1.fullFormats; - const f = formats[name]; - if (!f) - throw new Error(`Unknown format "${name}"`); - return f; - }; - function addFormats(ajv, list, fs, exportName) { - var _a; - var _b; - (_a = (_b = ajv.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`; - for (const f of list) - ajv.addFormat(f, fs[f]); - } - module.exports = exports = formatsPlugin; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = formatsPlugin; - } -}); - -// node_modules/zod/v3/helpers/util.js -var util; -(function(util2) { - util2.assertEqual = (_) => { - }; - function assertIs(_arg) { - } - util2.assertIs = assertIs; - function assertNever(_x) { - throw new Error(); - } - util2.assertNever = assertNever; - util2.arrayToEnum = (items) => { - const obj = {}; - for (const item of items) { - obj[item] = item; - } - return obj; - }; - util2.getValidEnumValues = (obj) => { - const validKeys = util2.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); - const filtered = {}; - for (const k of validKeys) { - filtered[k] = obj[k]; - } - return util2.objectValues(filtered); - }; - util2.objectValues = (obj) => { - return util2.objectKeys(obj).map(function(e) { - return obj[e]; - }); - }; - util2.objectKeys = typeof Object.keys === "function" ? (obj) => Object.keys(obj) : (object3) => { - const keys = []; - for (const key in object3) { - if (Object.prototype.hasOwnProperty.call(object3, key)) { - keys.push(key); - } - } - return keys; - }; - util2.find = (arr, checker) => { - for (const item of arr) { - if (checker(item)) - return item; - } - return void 0; - }; - util2.isInteger = typeof Number.isInteger === "function" ? (val) => Number.isInteger(val) : (val) => typeof val === "number" && Number.isFinite(val) && Math.floor(val) === val; - function joinValues(array2, separator = " | ") { - return array2.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator); - } - util2.joinValues = joinValues; - util2.jsonStringifyReplacer = (_, value) => { - if (typeof value === "bigint") { - return value.toString(); - } - return value; - }; -})(util || (util = {})); -var objectUtil; -(function(objectUtil2) { - objectUtil2.mergeShapes = (first, second) => { - return { - ...first, - ...second - // second overwrites first - }; - }; -})(objectUtil || (objectUtil = {})); -var ZodParsedType = util.arrayToEnum([ - "string", - "nan", - "number", - "integer", - "float", - "boolean", - "date", - "bigint", - "symbol", - "function", - "undefined", - "null", - "array", - "object", - "unknown", - "promise", - "void", - "never", - "map", - "set" -]); -var getParsedType = (data) => { - const t = typeof data; - switch (t) { - case "undefined": - return ZodParsedType.undefined; - case "string": - return ZodParsedType.string; - case "number": - return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; - case "boolean": - return ZodParsedType.boolean; - case "function": - return ZodParsedType.function; - case "bigint": - return ZodParsedType.bigint; - case "symbol": - return ZodParsedType.symbol; - case "object": - if (Array.isArray(data)) { - return ZodParsedType.array; - } - if (data === null) { - return ZodParsedType.null; - } - if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { - return ZodParsedType.promise; - } - if (typeof Map !== "undefined" && data instanceof Map) { - return ZodParsedType.map; - } - if (typeof Set !== "undefined" && data instanceof Set) { - return ZodParsedType.set; - } - if (typeof Date !== "undefined" && data instanceof Date) { - return ZodParsedType.date; - } - return ZodParsedType.object; - default: - return ZodParsedType.unknown; - } -}; - -// node_modules/zod/v3/ZodError.js -var ZodIssueCode = util.arrayToEnum([ - "invalid_type", - "invalid_literal", - "custom", - "invalid_union", - "invalid_union_discriminator", - "invalid_enum_value", - "unrecognized_keys", - "invalid_arguments", - "invalid_return_type", - "invalid_date", - "invalid_string", - "too_small", - "too_big", - "invalid_intersection_types", - "not_multiple_of", - "not_finite" -]); -var ZodError = class _ZodError extends Error { - get errors() { - return this.issues; - } - constructor(issues) { - super(); - this.issues = []; - this.addIssue = (sub) => { - this.issues = [...this.issues, sub]; - }; - this.addIssues = (subs = []) => { - this.issues = [...this.issues, ...subs]; - }; - const actualProto = new.target.prototype; - if (Object.setPrototypeOf) { - Object.setPrototypeOf(this, actualProto); - } else { - this.__proto__ = actualProto; - } - this.name = "ZodError"; - this.issues = issues; - } - format(_mapper) { - const mapper = _mapper || function(issue) { - return issue.message; - }; - const fieldErrors = { _errors: [] }; - const processError = (error2) => { - for (const issue of error2.issues) { - if (issue.code === "invalid_union") { - issue.unionErrors.map(processError); - } else if (issue.code === "invalid_return_type") { - processError(issue.returnTypeError); - } else if (issue.code === "invalid_arguments") { - processError(issue.argumentsError); - } else if (issue.path.length === 0) { - fieldErrors._errors.push(mapper(issue)); - } else { - let curr = fieldErrors; - let i = 0; - while (i < issue.path.length) { - const el = issue.path[i]; - const terminal = i === issue.path.length - 1; - if (!terminal) { - curr[el] = curr[el] || { _errors: [] }; - } else { - curr[el] = curr[el] || { _errors: [] }; - curr[el]._errors.push(mapper(issue)); - } - curr = curr[el]; - i++; - } - } - } - }; - processError(this); - return fieldErrors; - } - static assert(value) { - if (!(value instanceof _ZodError)) { - throw new Error(`Not a ZodError: ${value}`); - } - } - toString() { - return this.message; - } - get message() { - return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); - } - get isEmpty() { - return this.issues.length === 0; - } - flatten(mapper = (issue) => issue.message) { - const fieldErrors = /* @__PURE__ */ Object.create(null); - const formErrors = []; - for (const sub of this.issues) { - if (sub.path.length > 0) { - const firstEl = sub.path[0]; - fieldErrors[firstEl] = fieldErrors[firstEl] || []; - fieldErrors[firstEl].push(mapper(sub)); - } else { - formErrors.push(mapper(sub)); - } - } - return { formErrors, fieldErrors }; - } - get formErrors() { - return this.flatten(); - } -}; -ZodError.create = (issues) => { - const error2 = new ZodError(issues); - return error2; -}; - -// node_modules/zod/v3/locales/en.js -var errorMap = (issue, _ctx) => { - let message; - switch (issue.code) { - case ZodIssueCode.invalid_type: - if (issue.received === ZodParsedType.undefined) { - message = "Required"; - } else { - message = `Expected ${issue.expected}, received ${issue.received}`; - } - break; - case ZodIssueCode.invalid_literal: - message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; - break; - case ZodIssueCode.unrecognized_keys: - message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; - break; - case ZodIssueCode.invalid_union: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_union_discriminator: - message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; - break; - case ZodIssueCode.invalid_enum_value: - message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; - break; - case ZodIssueCode.invalid_arguments: - message = `Invalid function arguments`; - break; - case ZodIssueCode.invalid_return_type: - message = `Invalid function return type`; - break; - case ZodIssueCode.invalid_date: - message = `Invalid date`; - break; - case ZodIssueCode.invalid_string: - if (typeof issue.validation === "object") { - if ("includes" in issue.validation) { - message = `Invalid input: must include "${issue.validation.includes}"`; - if (typeof issue.validation.position === "number") { - message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; - } - } else if ("startsWith" in issue.validation) { - message = `Invalid input: must start with "${issue.validation.startsWith}"`; - } else if ("endsWith" in issue.validation) { - message = `Invalid input: must end with "${issue.validation.endsWith}"`; - } else { - util.assertNever(issue.validation); - } - } else if (issue.validation !== "regex") { - message = `Invalid ${issue.validation}`; - } else { - message = "Invalid"; - } - break; - case ZodIssueCode.too_small: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`; - else if (issue.type === "bigint") - message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.too_big: - if (issue.type === "array") - message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; - else if (issue.type === "string") - message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; - else if (issue.type === "number") - message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`; - else if (issue.type === "bigint") - message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`; - else if (issue.type === "date") - message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`; - else - message = "Invalid input"; - break; - case ZodIssueCode.custom: - message = `Invalid input`; - break; - case ZodIssueCode.invalid_intersection_types: - message = `Intersection results could not be merged`; - break; - case ZodIssueCode.not_multiple_of: - message = `Number must be a multiple of ${issue.multipleOf}`; - break; - case ZodIssueCode.not_finite: - message = "Number must be finite"; - break; - default: - message = _ctx.defaultError; - util.assertNever(issue); - } - return { message }; -}; -var en_default = errorMap; - -// node_modules/zod/v3/errors.js -var overrideErrorMap = en_default; -function getErrorMap() { - return overrideErrorMap; -} - -// node_modules/zod/v3/helpers/parseUtil.js -var makeIssue = (params) => { - const { data, path, errorMaps, issueData } = params; - const fullPath = [...path, ...issueData.path || []]; - const fullIssue = { - ...issueData, - path: fullPath - }; - if (issueData.message !== void 0) { - return { - ...issueData, - path: fullPath, - message: issueData.message - }; - } - let errorMessage = ""; - const maps = errorMaps.filter((m) => !!m).slice().reverse(); - for (const map of maps) { - errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; - } - return { - ...issueData, - path: fullPath, - message: errorMessage - }; -}; -function addIssueToContext(ctx, issueData) { - const overrideMap = getErrorMap(); - const issue = makeIssue({ - issueData, - data: ctx.data, - path: ctx.path, - errorMaps: [ - ctx.common.contextualErrorMap, - // contextual error map is first priority - ctx.schemaErrorMap, - // then schema-bound map if available - overrideMap, - // then global override map - overrideMap === en_default ? void 0 : en_default - // then global default map - ].filter((x) => !!x) - }); - ctx.common.issues.push(issue); -} -var ParseStatus = class _ParseStatus { - constructor() { - this.value = "valid"; - } - dirty() { - if (this.value === "valid") - this.value = "dirty"; - } - abort() { - if (this.value !== "aborted") - this.value = "aborted"; - } - static mergeArray(status, results) { - const arrayValue = []; - for (const s of results) { - if (s.status === "aborted") - return INVALID; - if (s.status === "dirty") - status.dirty(); - arrayValue.push(s.value); - } - return { status: status.value, value: arrayValue }; - } - static async mergeObjectAsync(status, pairs) { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value - }); - } - return _ParseStatus.mergeObjectSync(status, syncPairs); - } - static mergeObjectSync(status, pairs) { - const finalObject = {}; - for (const pair of pairs) { - const { key, value } = pair; - if (key.status === "aborted") - return INVALID; - if (value.status === "aborted") - return INVALID; - if (key.status === "dirty") - status.dirty(); - if (value.status === "dirty") - status.dirty(); - if (key.value !== "__proto__" && (typeof value.value !== "undefined" || pair.alwaysSet)) { - finalObject[key.value] = value.value; - } - } - return { status: status.value, value: finalObject }; - } -}; -var INVALID = Object.freeze({ - status: "aborted" -}); -var DIRTY = (value) => ({ status: "dirty", value }); -var OK = (value) => ({ status: "valid", value }); -var isAborted = (x) => x.status === "aborted"; -var isDirty = (x) => x.status === "dirty"; -var isValid = (x) => x.status === "valid"; -var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; - -// node_modules/zod/v3/helpers/errorUtil.js -var errorUtil; -(function(errorUtil2) { - errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {}; - errorUtil2.toString = (message) => typeof message === "string" ? message : message?.message; -})(errorUtil || (errorUtil = {})); - -// node_modules/zod/v3/types.js -var ParseInputLazyPath = class { - constructor(parent, value, path, key) { - this._cachedPath = []; - this.parent = parent; - this.data = value; - this._path = path; - this._key = key; - } - get path() { - if (!this._cachedPath.length) { - if (Array.isArray(this._key)) { - this._cachedPath.push(...this._path, ...this._key); - } else { - this._cachedPath.push(...this._path, this._key); - } - } - return this._cachedPath; - } -}; -var handleResult = (ctx, result) => { - if (isValid(result)) { - return { success: true, data: result.value }; - } else { - if (!ctx.common.issues.length) { - throw new Error("Validation failed but no issues detected."); - } - return { - success: false, - get error() { - if (this._error) - return this._error; - const error2 = new ZodError(ctx.common.issues); - this._error = error2; - return this._error; - } - }; - } -}; -function processCreateParams(params) { - if (!params) - return {}; - const { errorMap: errorMap2, invalid_type_error, required_error, description } = params; - if (errorMap2 && (invalid_type_error || required_error)) { - throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); - } - if (errorMap2) - return { errorMap: errorMap2, description }; - const customMap = (iss, ctx) => { - const { message } = params; - if (iss.code === "invalid_enum_value") { - return { message: message ?? ctx.defaultError }; - } - if (typeof ctx.data === "undefined") { - return { message: message ?? required_error ?? ctx.defaultError }; - } - if (iss.code !== "invalid_type") - return { message: ctx.defaultError }; - return { message: message ?? invalid_type_error ?? ctx.defaultError }; - }; - return { errorMap: customMap, description }; -} -var ZodType = class { - get description() { - return this._def.description; - } - _getType(input) { - return getParsedType(input.data); - } - _getOrReturnCtx(input, ctx) { - return ctx || { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent - }; - } - _processInputParams(input) { - return { - status: new ParseStatus(), - ctx: { - common: input.parent.common, - data: input.data, - parsedType: getParsedType(input.data), - schemaErrorMap: this._def.errorMap, - path: input.path, - parent: input.parent - } - }; - } - _parseSync(input) { - const result = this._parse(input); - if (isAsync(result)) { - throw new Error("Synchronous parse encountered promise."); - } - return result; - } - _parseAsync(input) { - const result = this._parse(input); - return Promise.resolve(result); - } - parse(data, params) { - const result = this.safeParse(data, params); - if (result.success) - return result.data; - throw result.error; - } - safeParse(data, params) { - const ctx = { - common: { - issues: [], - async: params?.async ?? false, - contextualErrorMap: params?.errorMap - }, - path: params?.path || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data) - }; - const result = this._parseSync({ data, path: ctx.path, parent: ctx }); - return handleResult(ctx, result); - } - "~validate"(data) { - const ctx = { - common: { - issues: [], - async: !!this["~standard"].async - }, - path: [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data) - }; - if (!this["~standard"].async) { - try { - const result = this._parseSync({ data, path: [], parent: ctx }); - return isValid(result) ? { - value: result.value - } : { - issues: ctx.common.issues - }; - } catch (err) { - if (err?.message?.toLowerCase()?.includes("encountered")) { - this["~standard"].async = true; - } - ctx.common = { - issues: [], - async: true - }; - } - } - return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result) ? { - value: result.value - } : { - issues: ctx.common.issues - }); - } - async parseAsync(data, params) { - const result = await this.safeParseAsync(data, params); - if (result.success) - return result.data; - throw result.error; - } - async safeParseAsync(data, params) { - const ctx = { - common: { - issues: [], - contextualErrorMap: params?.errorMap, - async: true - }, - path: params?.path || [], - schemaErrorMap: this._def.errorMap, - parent: null, - data, - parsedType: getParsedType(data) - }; - const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); - const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult)); - return handleResult(ctx, result); - } - refine(check, message) { - const getIssueProperties = (val) => { - if (typeof message === "string" || typeof message === "undefined") { - return { message }; - } else if (typeof message === "function") { - return message(val); - } else { - return message; - } - }; - return this._refinement((val, ctx) => { - const result = check(val); - const setError = () => ctx.addIssue({ - code: ZodIssueCode.custom, - ...getIssueProperties(val) - }); - if (typeof Promise !== "undefined" && result instanceof Promise) { - return result.then((data) => { - if (!data) { - setError(); - return false; - } else { - return true; - } - }); - } - if (!result) { - setError(); - return false; - } else { - return true; - } - }); - } - refinement(check, refinementData) { - return this._refinement((val, ctx) => { - if (!check(val)) { - ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData); - return false; - } else { - return true; - } - }); - } - _refinement(refinement) { - return new ZodEffects({ - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "refinement", refinement } - }); - } - superRefine(refinement) { - return this._refinement(refinement); - } - constructor(def) { - this.spa = this.safeParseAsync; - this._def = def; - this.parse = this.parse.bind(this); - this.safeParse = this.safeParse.bind(this); - this.parseAsync = this.parseAsync.bind(this); - this.safeParseAsync = this.safeParseAsync.bind(this); - this.spa = this.spa.bind(this); - this.refine = this.refine.bind(this); - this.refinement = this.refinement.bind(this); - this.superRefine = this.superRefine.bind(this); - this.optional = this.optional.bind(this); - this.nullable = this.nullable.bind(this); - this.nullish = this.nullish.bind(this); - this.array = this.array.bind(this); - this.promise = this.promise.bind(this); - this.or = this.or.bind(this); - this.and = this.and.bind(this); - this.transform = this.transform.bind(this); - this.brand = this.brand.bind(this); - this.default = this.default.bind(this); - this.catch = this.catch.bind(this); - this.describe = this.describe.bind(this); - this.pipe = this.pipe.bind(this); - this.readonly = this.readonly.bind(this); - this.isNullable = this.isNullable.bind(this); - this.isOptional = this.isOptional.bind(this); - this["~standard"] = { - version: 1, - vendor: "zod", - validate: (data) => this["~validate"](data) - }; - } - optional() { - return ZodOptional2.create(this, this._def); - } - nullable() { - return ZodNullable.create(this, this._def); - } - nullish() { - return this.nullable().optional(); - } - array() { - return ZodArray.create(this); - } - promise() { - return ZodPromise.create(this, this._def); - } - or(option) { - return ZodUnion.create([this, option], this._def); - } - and(incoming) { - return ZodIntersection.create(this, incoming, this._def); - } - transform(transform) { - return new ZodEffects({ - ...processCreateParams(this._def), - schema: this, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect: { type: "transform", transform } - }); - } - default(def) { - const defaultValueFunc = typeof def === "function" ? def : () => def; - return new ZodDefault({ - ...processCreateParams(this._def), - innerType: this, - defaultValue: defaultValueFunc, - typeName: ZodFirstPartyTypeKind.ZodDefault - }); - } - brand() { - return new ZodBranded({ - typeName: ZodFirstPartyTypeKind.ZodBranded, - type: this, - ...processCreateParams(this._def) - }); - } - catch(def) { - const catchValueFunc = typeof def === "function" ? def : () => def; - return new ZodCatch({ - ...processCreateParams(this._def), - innerType: this, - catchValue: catchValueFunc, - typeName: ZodFirstPartyTypeKind.ZodCatch - }); - } - describe(description) { - const This = this.constructor; - return new This({ - ...this._def, - description - }); - } - pipe(target) { - return ZodPipeline.create(this, target); - } - readonly() { - return ZodReadonly.create(this); - } - isOptional() { - return this.safeParse(void 0).success; - } - isNullable() { - return this.safeParse(null).success; - } -}; -var cuidRegex = /^c[^\s-]{8,}$/i; -var cuid2Regex = /^[0-9a-z]+$/; -var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i; -var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; -var nanoidRegex = /^[a-z0-9_-]{21}$/i; -var jwtRegex = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/; -var durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; -var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; -var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; -var emojiRegex; -var ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; -var ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/; -var ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/; -var ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; -var base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; -var base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/; -var dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; -var dateRegex = new RegExp(`^${dateRegexSource}$`); -function timeRegexSource(args) { - let secondsRegexSource = `[0-5]\\d`; - if (args.precision) { - secondsRegexSource = `${secondsRegexSource}\\.\\d{${args.precision}}`; - } else if (args.precision == null) { - secondsRegexSource = `${secondsRegexSource}(\\.\\d+)?`; - } - const secondsQuantifier = args.precision ? "+" : "?"; - return `([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`; -} -function timeRegex(args) { - return new RegExp(`^${timeRegexSource(args)}$`); -} -function datetimeRegex(args) { - let regex = `${dateRegexSource}T${timeRegexSource(args)}`; - const opts = []; - opts.push(args.local ? `Z?` : `Z`); - if (args.offset) - opts.push(`([+-]\\d{2}:?\\d{2})`); - regex = `${regex}(${opts.join("|")})`; - return new RegExp(`^${regex}$`); -} -function isValidIP(ip, version) { - if ((version === "v4" || !version) && ipv4Regex.test(ip)) { - return true; - } - if ((version === "v6" || !version) && ipv6Regex.test(ip)) { - return true; - } - return false; -} -function isValidJWT(jwt, alg) { - if (!jwtRegex.test(jwt)) - return false; - try { - const [header] = jwt.split("."); - if (!header) - return false; - const base64 = header.replace(/-/g, "+").replace(/_/g, "/").padEnd(header.length + (4 - header.length % 4) % 4, "="); - const decoded = JSON.parse(atob(base64)); - if (typeof decoded !== "object" || decoded === null) - return false; - if ("typ" in decoded && decoded?.typ !== "JWT") - return false; - if (!decoded.alg) - return false; - if (alg && decoded.alg !== alg) - return false; - return true; - } catch { - return false; - } -} -function isValidCidr(ip, version) { - if ((version === "v4" || !version) && ipv4CidrRegex.test(ip)) { - return true; - } - if ((version === "v6" || !version) && ipv6CidrRegex.test(ip)) { - return true; - } - return false; -} -var ZodString = class _ZodString extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = String(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.string) { - const ctx2 = this._getOrReturnCtx(input); - addIssueToContext(ctx2, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.string, - received: ctx2.parsedType - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = void 0; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.length < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "max") { - if (input.data.length > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: false, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "length") { - const tooBig = input.data.length > check.value; - const tooSmall = input.data.length < check.value; - if (tooBig || tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - if (tooBig) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message - }); - } else if (tooSmall) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "string", - inclusive: true, - exact: true, - message: check.message - }); - } - status.dirty(); - } - } else if (check.kind === "email") { - if (!emailRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "email", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "emoji") { - if (!emojiRegex) { - emojiRegex = new RegExp(_emojiRegex, "u"); - } - if (!emojiRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "emoji", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "uuid") { - if (!uuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "uuid", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "nanoid") { - if (!nanoidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "nanoid", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "cuid") { - if (!cuidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "cuid2") { - if (!cuid2Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cuid2", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "ulid") { - if (!ulidRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ulid", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "url") { - try { - new URL(input.data); - } catch { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "url", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "regex") { - check.regex.lastIndex = 0; - const testResult = check.regex.test(input.data); - if (!testResult) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "regex", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "trim") { - input.data = input.data.trim(); - } else if (check.kind === "includes") { - if (!input.data.includes(check.value, check.position)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { includes: check.value, position: check.position }, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "toLowerCase") { - input.data = input.data.toLowerCase(); - } else if (check.kind === "toUpperCase") { - input.data = input.data.toUpperCase(); - } else if (check.kind === "startsWith") { - if (!input.data.startsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { startsWith: check.value }, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "endsWith") { - if (!input.data.endsWith(check.value)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: { endsWith: check.value }, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "datetime") { - const regex = datetimeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "datetime", - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "date") { - const regex = dateRegex; - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "date", - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "time") { - const regex = timeRegex(check); - if (!regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_string, - validation: "time", - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "duration") { - if (!durationRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "duration", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "ip") { - if (!isValidIP(input.data, check.version)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "ip", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "jwt") { - if (!isValidJWT(input.data, check.alg)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "jwt", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "cidr") { - if (!isValidCidr(input.data, check.version)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "cidr", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "base64") { - if (!base64Regex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "base64", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "base64url") { - if (!base64urlRegex.test(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - validation: "base64url", - code: ZodIssueCode.invalid_string, - message: check.message - }); - status.dirty(); - } - } else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - _regex(regex, validation, message) { - return this.refinement((data) => regex.test(data), { - validation, - code: ZodIssueCode.invalid_string, - ...errorUtil.errToObj(message) - }); - } - _addCheck(check) { - return new _ZodString({ - ...this._def, - checks: [...this._def.checks, check] - }); - } - email(message) { - return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); - } - url(message) { - return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); - } - emoji(message) { - return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); - } - uuid(message) { - return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); - } - nanoid(message) { - return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); - } - cuid(message) { - return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); - } - cuid2(message) { - return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); - } - ulid(message) { - return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); - } - base64(message) { - return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); - } - base64url(message) { - return this._addCheck({ - kind: "base64url", - ...errorUtil.errToObj(message) - }); - } - jwt(options) { - return this._addCheck({ kind: "jwt", ...errorUtil.errToObj(options) }); - } - ip(options) { - return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); - } - cidr(options) { - return this._addCheck({ kind: "cidr", ...errorUtil.errToObj(options) }); - } - datetime(options) { - if (typeof options === "string") { - return this._addCheck({ - kind: "datetime", - precision: null, - offset: false, - local: false, - message: options - }); - } - return this._addCheck({ - kind: "datetime", - precision: typeof options?.precision === "undefined" ? null : options?.precision, - offset: options?.offset ?? false, - local: options?.local ?? false, - ...errorUtil.errToObj(options?.message) - }); - } - date(message) { - return this._addCheck({ kind: "date", message }); - } - time(options) { - if (typeof options === "string") { - return this._addCheck({ - kind: "time", - precision: null, - message: options - }); - } - return this._addCheck({ - kind: "time", - precision: typeof options?.precision === "undefined" ? null : options?.precision, - ...errorUtil.errToObj(options?.message) - }); - } - duration(message) { - return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); - } - regex(regex, message) { - return this._addCheck({ - kind: "regex", - regex, - ...errorUtil.errToObj(message) - }); - } - includes(value, options) { - return this._addCheck({ - kind: "includes", - value, - position: options?.position, - ...errorUtil.errToObj(options?.message) - }); - } - startsWith(value, message) { - return this._addCheck({ - kind: "startsWith", - value, - ...errorUtil.errToObj(message) - }); - } - endsWith(value, message) { - return this._addCheck({ - kind: "endsWith", - value, - ...errorUtil.errToObj(message) - }); - } - min(minLength, message) { - return this._addCheck({ - kind: "min", - value: minLength, - ...errorUtil.errToObj(message) - }); - } - max(maxLength, message) { - return this._addCheck({ - kind: "max", - value: maxLength, - ...errorUtil.errToObj(message) - }); - } - length(len, message) { - return this._addCheck({ - kind: "length", - value: len, - ...errorUtil.errToObj(message) - }); - } - /** - * Equivalent to `.min(1)` - */ - nonempty(message) { - return this.min(1, errorUtil.errToObj(message)); - } - trim() { - return new _ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "trim" }] - }); - } - toLowerCase() { - return new _ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toLowerCase" }] - }); - } - toUpperCase() { - return new _ZodString({ - ...this._def, - checks: [...this._def.checks, { kind: "toUpperCase" }] - }); - } - get isDatetime() { - return !!this._def.checks.find((ch) => ch.kind === "datetime"); - } - get isDate() { - return !!this._def.checks.find((ch) => ch.kind === "date"); - } - get isTime() { - return !!this._def.checks.find((ch) => ch.kind === "time"); - } - get isDuration() { - return !!this._def.checks.find((ch) => ch.kind === "duration"); - } - get isEmail() { - return !!this._def.checks.find((ch) => ch.kind === "email"); - } - get isURL() { - return !!this._def.checks.find((ch) => ch.kind === "url"); - } - get isEmoji() { - return !!this._def.checks.find((ch) => ch.kind === "emoji"); - } - get isUUID() { - return !!this._def.checks.find((ch) => ch.kind === "uuid"); - } - get isNANOID() { - return !!this._def.checks.find((ch) => ch.kind === "nanoid"); - } - get isCUID() { - return !!this._def.checks.find((ch) => ch.kind === "cuid"); - } - get isCUID2() { - return !!this._def.checks.find((ch) => ch.kind === "cuid2"); - } - get isULID() { - return !!this._def.checks.find((ch) => ch.kind === "ulid"); - } - get isIP() { - return !!this._def.checks.find((ch) => ch.kind === "ip"); - } - get isCIDR() { - return !!this._def.checks.find((ch) => ch.kind === "cidr"); - } - get isBase64() { - return !!this._def.checks.find((ch) => ch.kind === "base64"); - } - get isBase64url() { - return !!this._def.checks.find((ch) => ch.kind === "base64url"); - } - get minLength() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxLength() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } -}; -ZodString.create = (params) => { - return new ZodString({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodString, - coerce: params?.coerce ?? false, - ...processCreateParams(params) - }); -}; -function floatSafeRemainder(val, step) { - const valDecCount = (val.toString().split(".")[1] || "").length; - const stepDecCount = (step.toString().split(".")[1] || "").length; - const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; - const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); - const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); - return valInt % stepInt / 10 ** decCount; -} -var ZodNumber = class _ZodNumber extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - this.step = this.multipleOf; - } - _parse(input) { - if (this._def.coerce) { - input.data = Number(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.number) { - const ctx2 = this._getOrReturnCtx(input); - addIssueToContext(ctx2, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.number, - received: ctx2.parsedType - }); - return INVALID; - } - let ctx = void 0; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "int") { - if (!util.isInteger(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: "integer", - received: "float", - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "min") { - const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "max") { - const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: check.value, - type: "number", - inclusive: check.inclusive, - exact: false, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "multipleOf") { - if (floatSafeRemainder(input.data, check.value) !== 0) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "finite") { - if (!Number.isFinite(input.data)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_finite, - message: check.message - }); - status.dirty(); - } - } else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new _ZodNumber({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message) - } - ] - }); - } - _addCheck(check) { - return new _ZodNumber({ - ...this._def, - checks: [...this._def.checks, check] - }); - } - int(message) { - return this._addCheck({ - kind: "int", - message: errorUtil.toString(message) - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: false, - message: errorUtil.toString(message) - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: false, - message: errorUtil.toString(message) - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: 0, - inclusive: true, - message: errorUtil.toString(message) - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: 0, - inclusive: true, - message: errorUtil.toString(message) - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value, - message: errorUtil.toString(message) - }); - } - finite(message) { - return this._addCheck({ - kind: "finite", - message: errorUtil.toString(message) - }); - } - safe(message) { - return this._addCheck({ - kind: "min", - inclusive: true, - value: Number.MIN_SAFE_INTEGER, - message: errorUtil.toString(message) - })._addCheck({ - kind: "max", - inclusive: true, - value: Number.MAX_SAFE_INTEGER, - message: errorUtil.toString(message) - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } - get isInt() { - return !!this._def.checks.find((ch) => ch.kind === "int" || ch.kind === "multipleOf" && util.isInteger(ch.value)); - } - get isFinite() { - let max = null; - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") { - return true; - } else if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } else if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return Number.isFinite(min) && Number.isFinite(max); - } -}; -ZodNumber.create = (params) => { - return new ZodNumber({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodNumber, - coerce: params?.coerce || false, - ...processCreateParams(params) - }); -}; -var ZodBigInt = class _ZodBigInt extends ZodType { - constructor() { - super(...arguments); - this.min = this.gte; - this.max = this.lte; - } - _parse(input) { - if (this._def.coerce) { - try { - input.data = BigInt(input.data); - } catch { - return this._getInvalidInput(input); - } - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.bigint) { - return this._getInvalidInput(input); - } - let ctx = void 0; - const status = new ParseStatus(); - for (const check of this._def.checks) { - if (check.kind === "min") { - const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; - if (tooSmall) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - type: "bigint", - minimum: check.value, - inclusive: check.inclusive, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "max") { - const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; - if (tooBig) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - type: "bigint", - maximum: check.value, - inclusive: check.inclusive, - message: check.message - }); - status.dirty(); - } - } else if (check.kind === "multipleOf") { - if (input.data % check.value !== BigInt(0)) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.not_multiple_of, - multipleOf: check.value, - message: check.message - }); - status.dirty(); - } - } else { - util.assertNever(check); - } - } - return { status: status.value, value: input.data }; - } - _getInvalidInput(input) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.bigint, - received: ctx.parsedType - }); - return INVALID; - } - gte(value, message) { - return this.setLimit("min", value, true, errorUtil.toString(message)); - } - gt(value, message) { - return this.setLimit("min", value, false, errorUtil.toString(message)); - } - lte(value, message) { - return this.setLimit("max", value, true, errorUtil.toString(message)); - } - lt(value, message) { - return this.setLimit("max", value, false, errorUtil.toString(message)); - } - setLimit(kind, value, inclusive, message) { - return new _ZodBigInt({ - ...this._def, - checks: [ - ...this._def.checks, - { - kind, - value, - inclusive, - message: errorUtil.toString(message) - } - ] - }); - } - _addCheck(check) { - return new _ZodBigInt({ - ...this._def, - checks: [...this._def.checks, check] - }); - } - positive(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message) - }); - } - negative(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: false, - message: errorUtil.toString(message) - }); - } - nonpositive(message) { - return this._addCheck({ - kind: "max", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message) - }); - } - nonnegative(message) { - return this._addCheck({ - kind: "min", - value: BigInt(0), - inclusive: true, - message: errorUtil.toString(message) - }); - } - multipleOf(value, message) { - return this._addCheck({ - kind: "multipleOf", - value, - message: errorUtil.toString(message) - }); - } - get minValue() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min; - } - get maxValue() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max; - } -}; -ZodBigInt.create = (params) => { - return new ZodBigInt({ - checks: [], - typeName: ZodFirstPartyTypeKind.ZodBigInt, - coerce: params?.coerce ?? false, - ...processCreateParams(params) - }); -}; -var ZodBoolean = class extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = Boolean(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.boolean) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.boolean, - received: ctx.parsedType - }); - return INVALID; - } - return OK(input.data); - } -}; -ZodBoolean.create = (params) => { - return new ZodBoolean({ - typeName: ZodFirstPartyTypeKind.ZodBoolean, - coerce: params?.coerce || false, - ...processCreateParams(params) - }); -}; -var ZodDate = class _ZodDate extends ZodType { - _parse(input) { - if (this._def.coerce) { - input.data = new Date(input.data); - } - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.date) { - const ctx2 = this._getOrReturnCtx(input); - addIssueToContext(ctx2, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.date, - received: ctx2.parsedType - }); - return INVALID; - } - if (Number.isNaN(input.data.getTime())) { - const ctx2 = this._getOrReturnCtx(input); - addIssueToContext(ctx2, { - code: ZodIssueCode.invalid_date - }); - return INVALID; - } - const status = new ParseStatus(); - let ctx = void 0; - for (const check of this._def.checks) { - if (check.kind === "min") { - if (input.data.getTime() < check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - message: check.message, - inclusive: true, - exact: false, - minimum: check.value, - type: "date" - }); - status.dirty(); - } - } else if (check.kind === "max") { - if (input.data.getTime() > check.value) { - ctx = this._getOrReturnCtx(input, ctx); - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - message: check.message, - inclusive: true, - exact: false, - maximum: check.value, - type: "date" - }); - status.dirty(); - } - } else { - util.assertNever(check); - } - } - return { - status: status.value, - value: new Date(input.data.getTime()) - }; - } - _addCheck(check) { - return new _ZodDate({ - ...this._def, - checks: [...this._def.checks, check] - }); - } - min(minDate, message) { - return this._addCheck({ - kind: "min", - value: minDate.getTime(), - message: errorUtil.toString(message) - }); - } - max(maxDate, message) { - return this._addCheck({ - kind: "max", - value: maxDate.getTime(), - message: errorUtil.toString(message) - }); - } - get minDate() { - let min = null; - for (const ch of this._def.checks) { - if (ch.kind === "min") { - if (min === null || ch.value > min) - min = ch.value; - } - } - return min != null ? new Date(min) : null; - } - get maxDate() { - let max = null; - for (const ch of this._def.checks) { - if (ch.kind === "max") { - if (max === null || ch.value < max) - max = ch.value; - } - } - return max != null ? new Date(max) : null; - } -}; -ZodDate.create = (params) => { - return new ZodDate({ - checks: [], - coerce: params?.coerce || false, - typeName: ZodFirstPartyTypeKind.ZodDate, - ...processCreateParams(params) - }); -}; -var ZodSymbol = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.symbol) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.symbol, - received: ctx.parsedType - }); - return INVALID; - } - return OK(input.data); - } -}; -ZodSymbol.create = (params) => { - return new ZodSymbol({ - typeName: ZodFirstPartyTypeKind.ZodSymbol, - ...processCreateParams(params) - }); -}; -var ZodUndefined = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.undefined, - received: ctx.parsedType - }); - return INVALID; - } - return OK(input.data); - } -}; -ZodUndefined.create = (params) => { - return new ZodUndefined({ - typeName: ZodFirstPartyTypeKind.ZodUndefined, - ...processCreateParams(params) - }); -}; -var ZodNull = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.null) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.null, - received: ctx.parsedType - }); - return INVALID; - } - return OK(input.data); - } -}; -ZodNull.create = (params) => { - return new ZodNull({ - typeName: ZodFirstPartyTypeKind.ZodNull, - ...processCreateParams(params) - }); -}; -var ZodAny = class extends ZodType { - constructor() { - super(...arguments); - this._any = true; - } - _parse(input) { - return OK(input.data); - } -}; -ZodAny.create = (params) => { - return new ZodAny({ - typeName: ZodFirstPartyTypeKind.ZodAny, - ...processCreateParams(params) - }); -}; -var ZodUnknown = class extends ZodType { - constructor() { - super(...arguments); - this._unknown = true; - } - _parse(input) { - return OK(input.data); - } -}; -ZodUnknown.create = (params) => { - return new ZodUnknown({ - typeName: ZodFirstPartyTypeKind.ZodUnknown, - ...processCreateParams(params) - }); -}; -var ZodNever = class extends ZodType { - _parse(input) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.never, - received: ctx.parsedType - }); - return INVALID; - } -}; -ZodNever.create = (params) => { - return new ZodNever({ - typeName: ZodFirstPartyTypeKind.ZodNever, - ...processCreateParams(params) - }); -}; -var ZodVoid = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.undefined) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.void, - received: ctx.parsedType - }); - return INVALID; - } - return OK(input.data); - } -}; -ZodVoid.create = (params) => { - return new ZodVoid({ - typeName: ZodFirstPartyTypeKind.ZodVoid, - ...processCreateParams(params) - }); -}; -var ZodArray = class _ZodArray extends ZodType { - _parse(input) { - const { ctx, status } = this._processInputParams(input); - const def = this._def; - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType - }); - return INVALID; - } - if (def.exactLength !== null) { - const tooBig = ctx.data.length > def.exactLength.value; - const tooSmall = ctx.data.length < def.exactLength.value; - if (tooBig || tooSmall) { - addIssueToContext(ctx, { - code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, - minimum: tooSmall ? def.exactLength.value : void 0, - maximum: tooBig ? def.exactLength.value : void 0, - type: "array", - inclusive: true, - exact: true, - message: def.exactLength.message - }); - status.dirty(); - } - } - if (def.minLength !== null) { - if (ctx.data.length < def.minLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.minLength.message - }); - status.dirty(); - } - } - if (def.maxLength !== null) { - if (ctx.data.length > def.maxLength.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxLength.value, - type: "array", - inclusive: true, - exact: false, - message: def.maxLength.message - }); - status.dirty(); - } - } - if (ctx.common.async) { - return Promise.all([...ctx.data].map((item, i) => { - return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - })).then((result2) => { - return ParseStatus.mergeArray(status, result2); - }); - } - const result = [...ctx.data].map((item, i) => { - return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); - }); - return ParseStatus.mergeArray(status, result); - } - get element() { - return this._def.type; - } - min(minLength, message) { - return new _ZodArray({ - ...this._def, - minLength: { value: minLength, message: errorUtil.toString(message) } - }); - } - max(maxLength, message) { - return new _ZodArray({ - ...this._def, - maxLength: { value: maxLength, message: errorUtil.toString(message) } - }); - } - length(len, message) { - return new _ZodArray({ - ...this._def, - exactLength: { value: len, message: errorUtil.toString(message) } - }); - } - nonempty(message) { - return this.min(1, message); - } -}; -ZodArray.create = (schema, params) => { - return new ZodArray({ - type: schema, - minLength: null, - maxLength: null, - exactLength: null, - typeName: ZodFirstPartyTypeKind.ZodArray, - ...processCreateParams(params) - }); -}; -function deepPartialify(schema) { - if (schema instanceof ZodObject) { - const newShape = {}; - for (const key in schema.shape) { - const fieldSchema = schema.shape[key]; - newShape[key] = ZodOptional2.create(deepPartialify(fieldSchema)); - } - return new ZodObject({ - ...schema._def, - shape: () => newShape - }); - } else if (schema instanceof ZodArray) { - return new ZodArray({ - ...schema._def, - type: deepPartialify(schema.element) - }); - } else if (schema instanceof ZodOptional2) { - return ZodOptional2.create(deepPartialify(schema.unwrap())); - } else if (schema instanceof ZodNullable) { - return ZodNullable.create(deepPartialify(schema.unwrap())); - } else if (schema instanceof ZodTuple) { - return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); - } else { - return schema; - } -} -var ZodObject = class _ZodObject extends ZodType { - constructor() { - super(...arguments); - this._cached = null; - this.nonstrict = this.passthrough; - this.augment = this.extend; - } - _getCached() { - if (this._cached !== null) - return this._cached; - const shape = this._def.shape(); - const keys = util.objectKeys(shape); - this._cached = { shape, keys }; - return this._cached; - } - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.object) { - const ctx2 = this._getOrReturnCtx(input); - addIssueToContext(ctx2, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx2.parsedType - }); - return INVALID; - } - const { status, ctx } = this._processInputParams(input); - const { shape, keys: shapeKeys } = this._getCached(); - const extraKeys = []; - if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === "strip")) { - for (const key in ctx.data) { - if (!shapeKeys.includes(key)) { - extraKeys.push(key); - } - } - } - const pairs = []; - for (const key of shapeKeys) { - const keyValidator = shape[key]; - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), - alwaysSet: key in ctx.data - }); - } - if (this._def.catchall instanceof ZodNever) { - const unknownKeys = this._def.unknownKeys; - if (unknownKeys === "passthrough") { - for (const key of extraKeys) { - pairs.push({ - key: { status: "valid", value: key }, - value: { status: "valid", value: ctx.data[key] } - }); - } - } else if (unknownKeys === "strict") { - if (extraKeys.length > 0) { - addIssueToContext(ctx, { - code: ZodIssueCode.unrecognized_keys, - keys: extraKeys - }); - status.dirty(); - } - } else if (unknownKeys === "strip") { - } else { - throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); - } - } else { - const catchall = this._def.catchall; - for (const key of extraKeys) { - const value = ctx.data[key]; - pairs.push({ - key: { status: "valid", value: key }, - value: catchall._parse( - new ParseInputLazyPath(ctx, value, ctx.path, key) - //, ctx.child(key), value, getParsedType(value) - ), - alwaysSet: key in ctx.data - }); - } - } - if (ctx.common.async) { - return Promise.resolve().then(async () => { - const syncPairs = []; - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - syncPairs.push({ - key, - value, - alwaysSet: pair.alwaysSet - }); - } - return syncPairs; - }).then((syncPairs) => { - return ParseStatus.mergeObjectSync(status, syncPairs); - }); - } else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get shape() { - return this._def.shape(); - } - strict(message) { - errorUtil.errToObj; - return new _ZodObject({ - ...this._def, - unknownKeys: "strict", - ...message !== void 0 ? { - errorMap: (issue, ctx) => { - const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError; - if (issue.code === "unrecognized_keys") - return { - message: errorUtil.errToObj(message).message ?? defaultError - }; - return { - message: defaultError - }; - } - } : {} - }); - } - strip() { - return new _ZodObject({ - ...this._def, - unknownKeys: "strip" - }); - } - passthrough() { - return new _ZodObject({ - ...this._def, - unknownKeys: "passthrough" - }); - } - // const AugmentFactory = - // (def: Def) => - // ( - // augmentation: Augmentation - // ): ZodObject< - // extendShape, Augmentation>, - // Def["unknownKeys"], - // Def["catchall"] - // > => { - // return new ZodObject({ - // ...def, - // shape: () => ({ - // ...def.shape(), - // ...augmentation, - // }), - // }) as any; - // }; - extend(augmentation) { - return new _ZodObject({ - ...this._def, - shape: () => ({ - ...this._def.shape(), - ...augmentation - }) - }); - } - /** - * Prior to zod@1.0.12 there was a bug in the - * inferred type of merged objects. Please - * upgrade if you are experiencing issues. - */ - merge(merging) { - const merged = new _ZodObject({ - unknownKeys: merging._def.unknownKeys, - catchall: merging._def.catchall, - shape: () => ({ - ...this._def.shape(), - ...merging._def.shape() - }), - typeName: ZodFirstPartyTypeKind.ZodObject - }); - return merged; - } - // merge< - // Incoming extends AnyZodObject, - // Augmentation extends Incoming["shape"], - // NewOutput extends { - // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation - // ? Augmentation[k]["_output"] - // : k extends keyof Output - // ? Output[k] - // : never; - // }, - // NewInput extends { - // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation - // ? Augmentation[k]["_input"] - // : k extends keyof Input - // ? Input[k] - // : never; - // } - // >( - // merging: Incoming - // ): ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"], - // NewOutput, - // NewInput - // > { - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - setKey(key, schema) { - return this.augment({ [key]: schema }); - } - // merge( - // merging: Incoming - // ): //ZodObject = (merging) => { - // ZodObject< - // extendShape>, - // Incoming["_def"]["unknownKeys"], - // Incoming["_def"]["catchall"] - // > { - // // const mergedShape = objectUtil.mergeShapes( - // // this._def.shape(), - // // merging._def.shape() - // // ); - // const merged: any = new ZodObject({ - // unknownKeys: merging._def.unknownKeys, - // catchall: merging._def.catchall, - // shape: () => - // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), - // typeName: ZodFirstPartyTypeKind.ZodObject, - // }) as any; - // return merged; - // } - catchall(index) { - return new _ZodObject({ - ...this._def, - catchall: index - }); - } - pick(mask) { - const shape = {}; - for (const key of util.objectKeys(mask)) { - if (mask[key] && this.shape[key]) { - shape[key] = this.shape[key]; - } - } - return new _ZodObject({ - ...this._def, - shape: () => shape - }); - } - omit(mask) { - const shape = {}; - for (const key of util.objectKeys(this.shape)) { - if (!mask[key]) { - shape[key] = this.shape[key]; - } - } - return new _ZodObject({ - ...this._def, - shape: () => shape - }); - } - /** - * @deprecated - */ - deepPartial() { - return deepPartialify(this); - } - partial(mask) { - const newShape = {}; - for (const key of util.objectKeys(this.shape)) { - const fieldSchema = this.shape[key]; - if (mask && !mask[key]) { - newShape[key] = fieldSchema; - } else { - newShape[key] = fieldSchema.optional(); - } - } - return new _ZodObject({ - ...this._def, - shape: () => newShape - }); - } - required(mask) { - const newShape = {}; - for (const key of util.objectKeys(this.shape)) { - if (mask && !mask[key]) { - newShape[key] = this.shape[key]; - } else { - const fieldSchema = this.shape[key]; - let newField = fieldSchema; - while (newField instanceof ZodOptional2) { - newField = newField._def.innerType; - } - newShape[key] = newField; - } - } - return new _ZodObject({ - ...this._def, - shape: () => newShape - }); - } - keyof() { - return createZodEnum(util.objectKeys(this.shape)); - } -}; -ZodObject.create = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params) - }); -}; -ZodObject.strictCreate = (shape, params) => { - return new ZodObject({ - shape: () => shape, - unknownKeys: "strict", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params) - }); -}; -ZodObject.lazycreate = (shape, params) => { - return new ZodObject({ - shape, - unknownKeys: "strip", - catchall: ZodNever.create(), - typeName: ZodFirstPartyTypeKind.ZodObject, - ...processCreateParams(params) - }); -}; -var ZodUnion = class extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const options = this._def.options; - function handleResults(results) { - for (const result of results) { - if (result.result.status === "valid") { - return result.result; - } - } - for (const result of results) { - if (result.result.status === "dirty") { - ctx.common.issues.push(...result.ctx.common.issues); - return result.result; - } - } - const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors - }); - return INVALID; - } - if (ctx.common.async) { - return Promise.all(options.map(async (option) => { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [] - }, - parent: null - }; - return { - result: await option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: childCtx - }), - ctx: childCtx - }; - })).then(handleResults); - } else { - let dirty = void 0; - const issues = []; - for (const option of options) { - const childCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [] - }, - parent: null - }; - const result = option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: childCtx - }); - if (result.status === "valid") { - return result; - } else if (result.status === "dirty" && !dirty) { - dirty = { result, ctx: childCtx }; - } - if (childCtx.common.issues.length) { - issues.push(childCtx.common.issues); - } - } - if (dirty) { - ctx.common.issues.push(...dirty.ctx.common.issues); - return dirty.result; - } - const unionErrors = issues.map((issues2) => new ZodError(issues2)); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union, - unionErrors - }); - return INVALID; - } - } - get options() { - return this._def.options; - } -}; -ZodUnion.create = (types, params) => { - return new ZodUnion({ - options: types, - typeName: ZodFirstPartyTypeKind.ZodUnion, - ...processCreateParams(params) - }); -}; -var getDiscriminator = (type) => { - if (type instanceof ZodLazy) { - return getDiscriminator(type.schema); - } else if (type instanceof ZodEffects) { - return getDiscriminator(type.innerType()); - } else if (type instanceof ZodLiteral) { - return [type.value]; - } else if (type instanceof ZodEnum) { - return type.options; - } else if (type instanceof ZodNativeEnum) { - return util.objectValues(type.enum); - } else if (type instanceof ZodDefault) { - return getDiscriminator(type._def.innerType); - } else if (type instanceof ZodUndefined) { - return [void 0]; - } else if (type instanceof ZodNull) { - return [null]; - } else if (type instanceof ZodOptional2) { - return [void 0, ...getDiscriminator(type.unwrap())]; - } else if (type instanceof ZodNullable) { - return [null, ...getDiscriminator(type.unwrap())]; - } else if (type instanceof ZodBranded) { - return getDiscriminator(type.unwrap()); - } else if (type instanceof ZodReadonly) { - return getDiscriminator(type.unwrap()); - } else if (type instanceof ZodCatch) { - return getDiscriminator(type._def.innerType); - } else { - return []; - } -}; -var ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType - }); - return INVALID; - } - const discriminator = this.discriminator; - const discriminatorValue = ctx.data[discriminator]; - const option = this.optionsMap.get(discriminatorValue); - if (!option) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_union_discriminator, - options: Array.from(this.optionsMap.keys()), - path: [discriminator] - }); - return INVALID; - } - if (ctx.common.async) { - return option._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - } else { - return option._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - } - } - get discriminator() { - return this._def.discriminator; - } - get options() { - return this._def.options; - } - get optionsMap() { - return this._def.optionsMap; - } - /** - * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. - * However, it only allows a union of objects, all of which need to share a discriminator property. This property must - * have a different value for each object in the union. - * @param discriminator the name of the discriminator property - * @param types an array of object schemas - * @param params - */ - static create(discriminator, options, params) { - const optionsMap = /* @__PURE__ */ new Map(); - for (const type of options) { - const discriminatorValues = getDiscriminator(type.shape[discriminator]); - if (!discriminatorValues.length) { - throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); - } - for (const value of discriminatorValues) { - if (optionsMap.has(value)) { - throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); - } - optionsMap.set(value, type); - } - } - return new _ZodDiscriminatedUnion({ - typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, - discriminator, - options, - optionsMap, - ...processCreateParams(params) - }); - } -}; -function mergeValues(a, b) { - const aType = getParsedType(a); - const bType = getParsedType(b); - if (a === b) { - return { valid: true, data: a }; - } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { - const bKeys = util.objectKeys(b); - const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1); - const newObj = { ...a, ...b }; - for (const key of sharedKeys) { - const sharedValue = mergeValues(a[key], b[key]); - if (!sharedValue.valid) { - return { valid: false }; - } - newObj[key] = sharedValue.data; - } - return { valid: true, data: newObj }; - } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { - if (a.length !== b.length) { - return { valid: false }; - } - const newArray = []; - for (let index = 0; index < a.length; index++) { - const itemA = a[index]; - const itemB = b[index]; - const sharedValue = mergeValues(itemA, itemB); - if (!sharedValue.valid) { - return { valid: false }; - } - newArray.push(sharedValue.data); - } - return { valid: true, data: newArray }; - } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) { - return { valid: true, data: a }; - } else { - return { valid: false }; - } -} -var ZodIntersection = class extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const handleParsed = (parsedLeft, parsedRight) => { - if (isAborted(parsedLeft) || isAborted(parsedRight)) { - return INVALID; - } - const merged = mergeValues(parsedLeft.value, parsedRight.value); - if (!merged.valid) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_intersection_types - }); - return INVALID; - } - if (isDirty(parsedLeft) || isDirty(parsedRight)) { - status.dirty(); - } - return { status: status.value, value: merged.data }; - }; - if (ctx.common.async) { - return Promise.all([ - this._def.left._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }), - this._def.right._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }) - ]).then(([left, right]) => handleParsed(left, right)); - } else { - return handleParsed(this._def.left._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }), this._def.right._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - })); - } - } -}; -ZodIntersection.create = (left, right, params) => { - return new ZodIntersection({ - left, - right, - typeName: ZodFirstPartyTypeKind.ZodIntersection, - ...processCreateParams(params) - }); -}; -var ZodTuple = class _ZodTuple extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.array) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.array, - received: ctx.parsedType - }); - return INVALID; - } - if (ctx.data.length < this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: this._def.items.length, - inclusive: true, - exact: false, - type: "array" - }); - return INVALID; - } - const rest = this._def.rest; - if (!rest && ctx.data.length > this._def.items.length) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: this._def.items.length, - inclusive: true, - exact: false, - type: "array" - }); - status.dirty(); - } - const items = [...ctx.data].map((item, itemIndex) => { - const schema = this._def.items[itemIndex] || this._def.rest; - if (!schema) - return null; - return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); - }).filter((x) => !!x); - if (ctx.common.async) { - return Promise.all(items).then((results) => { - return ParseStatus.mergeArray(status, results); - }); - } else { - return ParseStatus.mergeArray(status, items); - } - } - get items() { - return this._def.items; - } - rest(rest) { - return new _ZodTuple({ - ...this._def, - rest - }); - } -}; -ZodTuple.create = (schemas, params) => { - if (!Array.isArray(schemas)) { - throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); - } - return new ZodTuple({ - items: schemas, - typeName: ZodFirstPartyTypeKind.ZodTuple, - rest: null, - ...processCreateParams(params) - }); -}; -var ZodRecord = class _ZodRecord extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.object) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.object, - received: ctx.parsedType - }); - return INVALID; - } - const pairs = []; - const keyType = this._def.keyType; - const valueType = this._def.valueType; - for (const key in ctx.data) { - pairs.push({ - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), - value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), - alwaysSet: key in ctx.data - }); - } - if (ctx.common.async) { - return ParseStatus.mergeObjectAsync(status, pairs); - } else { - return ParseStatus.mergeObjectSync(status, pairs); - } - } - get element() { - return this._def.valueType; - } - static create(first, second, third) { - if (second instanceof ZodType) { - return new _ZodRecord({ - keyType: first, - valueType: second, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(third) - }); - } - return new _ZodRecord({ - keyType: ZodString.create(), - valueType: first, - typeName: ZodFirstPartyTypeKind.ZodRecord, - ...processCreateParams(second) - }); - } -}; -var ZodMap = class extends ZodType { - get keySchema() { - return this._def.keyType; - } - get valueSchema() { - return this._def.valueType; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.map) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.map, - received: ctx.parsedType - }); - return INVALID; - } - const keyType = this._def.keyType; - const valueType = this._def.valueType; - const pairs = [...ctx.data.entries()].map(([key, value], index) => { - return { - key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), - value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])) - }; - }); - if (ctx.common.async) { - const finalMap = /* @__PURE__ */ new Map(); - return Promise.resolve().then(async () => { - for (const pair of pairs) { - const key = await pair.key; - const value = await pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - }); - } else { - const finalMap = /* @__PURE__ */ new Map(); - for (const pair of pairs) { - const key = pair.key; - const value = pair.value; - if (key.status === "aborted" || value.status === "aborted") { - return INVALID; - } - if (key.status === "dirty" || value.status === "dirty") { - status.dirty(); - } - finalMap.set(key.value, value.value); - } - return { status: status.value, value: finalMap }; - } - } -}; -ZodMap.create = (keyType, valueType, params) => { - return new ZodMap({ - valueType, - keyType, - typeName: ZodFirstPartyTypeKind.ZodMap, - ...processCreateParams(params) - }); -}; -var ZodSet = class _ZodSet extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.set) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.set, - received: ctx.parsedType - }); - return INVALID; - } - const def = this._def; - if (def.minSize !== null) { - if (ctx.data.size < def.minSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_small, - minimum: def.minSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.minSize.message - }); - status.dirty(); - } - } - if (def.maxSize !== null) { - if (ctx.data.size > def.maxSize.value) { - addIssueToContext(ctx, { - code: ZodIssueCode.too_big, - maximum: def.maxSize.value, - type: "set", - inclusive: true, - exact: false, - message: def.maxSize.message - }); - status.dirty(); - } - } - const valueType = this._def.valueType; - function finalizeSet(elements2) { - const parsedSet = /* @__PURE__ */ new Set(); - for (const element of elements2) { - if (element.status === "aborted") - return INVALID; - if (element.status === "dirty") - status.dirty(); - parsedSet.add(element.value); - } - return { status: status.value, value: parsedSet }; - } - const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); - if (ctx.common.async) { - return Promise.all(elements).then((elements2) => finalizeSet(elements2)); - } else { - return finalizeSet(elements); - } - } - min(minSize, message) { - return new _ZodSet({ - ...this._def, - minSize: { value: minSize, message: errorUtil.toString(message) } - }); - } - max(maxSize, message) { - return new _ZodSet({ - ...this._def, - maxSize: { value: maxSize, message: errorUtil.toString(message) } - }); - } - size(size, message) { - return this.min(size, message).max(size, message); - } - nonempty(message) { - return this.min(1, message); - } -}; -ZodSet.create = (valueType, params) => { - return new ZodSet({ - valueType, - minSize: null, - maxSize: null, - typeName: ZodFirstPartyTypeKind.ZodSet, - ...processCreateParams(params) - }); -}; -var ZodFunction = class _ZodFunction extends ZodType { - constructor() { - super(...arguments); - this.validate = this.implement; - } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.function) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.function, - received: ctx.parsedType - }); - return INVALID; - } - function makeArgsIssue(args, error2) { - return makeIssue({ - data: args, - path: ctx.path, - errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_arguments, - argumentsError: error2 - } - }); - } - function makeReturnsIssue(returns, error2) { - return makeIssue({ - data: returns, - path: ctx.path, - errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x), - issueData: { - code: ZodIssueCode.invalid_return_type, - returnTypeError: error2 - } - }); - } - const params = { errorMap: ctx.common.contextualErrorMap }; - const fn = ctx.data; - if (this._def.returns instanceof ZodPromise) { - const me = this; - return OK(async function(...args) { - const error2 = new ZodError([]); - const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => { - error2.addIssue(makeArgsIssue(args, e)); - throw error2; - }); - const result = await Reflect.apply(fn, this, parsedArgs); - const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => { - error2.addIssue(makeReturnsIssue(result, e)); - throw error2; - }); - return parsedReturns; - }); - } else { - const me = this; - return OK(function(...args) { - const parsedArgs = me._def.args.safeParse(args, params); - if (!parsedArgs.success) { - throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); - } - const result = Reflect.apply(fn, this, parsedArgs.data); - const parsedReturns = me._def.returns.safeParse(result, params); - if (!parsedReturns.success) { - throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); - } - return parsedReturns.data; - }); - } - } - parameters() { - return this._def.args; - } - returnType() { - return this._def.returns; - } - args(...items) { - return new _ZodFunction({ - ...this._def, - args: ZodTuple.create(items).rest(ZodUnknown.create()) - }); - } - returns(returnType) { - return new _ZodFunction({ - ...this._def, - returns: returnType - }); - } - implement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - strictImplement(func) { - const validatedFunc = this.parse(func); - return validatedFunc; - } - static create(args, returns, params) { - return new _ZodFunction({ - args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()), - returns: returns || ZodUnknown.create(), - typeName: ZodFirstPartyTypeKind.ZodFunction, - ...processCreateParams(params) - }); - } -}; -var ZodLazy = class extends ZodType { - get schema() { - return this._def.getter(); - } - _parse(input) { - const { ctx } = this._processInputParams(input); - const lazySchema = this._def.getter(); - return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); - } -}; -ZodLazy.create = (getter, params) => { - return new ZodLazy({ - getter, - typeName: ZodFirstPartyTypeKind.ZodLazy, - ...processCreateParams(params) - }); -}; -var ZodLiteral = class extends ZodType { - _parse(input) { - if (input.data !== this._def.value) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_literal, - expected: this._def.value - }); - return INVALID; - } - return { status: "valid", value: input.data }; - } - get value() { - return this._def.value; - } -}; -ZodLiteral.create = (value, params) => { - return new ZodLiteral({ - value, - typeName: ZodFirstPartyTypeKind.ZodLiteral, - ...processCreateParams(params) - }); -}; -function createZodEnum(values, params) { - return new ZodEnum({ - values, - typeName: ZodFirstPartyTypeKind.ZodEnum, - ...processCreateParams(params) - }); -} -var ZodEnum = class _ZodEnum extends ZodType { - _parse(input) { - if (typeof input.data !== "string") { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type - }); - return INVALID; - } - if (!this._cache) { - this._cache = new Set(this._def.values); - } - if (!this._cache.has(input.data)) { - const ctx = this._getOrReturnCtx(input); - const expectedValues = this._def.values; - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues - }); - return INVALID; - } - return OK(input.data); - } - get options() { - return this._def.values; - } - get enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Values() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - get Enum() { - const enumValues = {}; - for (const val of this._def.values) { - enumValues[val] = val; - } - return enumValues; - } - extract(values, newDef = this._def) { - return _ZodEnum.create(values, { - ...this._def, - ...newDef - }); - } - exclude(values, newDef = this._def) { - return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { - ...this._def, - ...newDef - }); - } -}; -ZodEnum.create = createZodEnum; -var ZodNativeEnum = class extends ZodType { - _parse(input) { - const nativeEnumValues = util.getValidEnumValues(this._def.values); - const ctx = this._getOrReturnCtx(input); - if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - expected: util.joinValues(expectedValues), - received: ctx.parsedType, - code: ZodIssueCode.invalid_type - }); - return INVALID; - } - if (!this._cache) { - this._cache = new Set(util.getValidEnumValues(this._def.values)); - } - if (!this._cache.has(input.data)) { - const expectedValues = util.objectValues(nativeEnumValues); - addIssueToContext(ctx, { - received: ctx.data, - code: ZodIssueCode.invalid_enum_value, - options: expectedValues - }); - return INVALID; - } - return OK(input.data); - } - get enum() { - return this._def.values; - } -}; -ZodNativeEnum.create = (values, params) => { - return new ZodNativeEnum({ - values, - typeName: ZodFirstPartyTypeKind.ZodNativeEnum, - ...processCreateParams(params) - }); -}; -var ZodPromise = class extends ZodType { - unwrap() { - return this._def.type; - } - _parse(input) { - const { ctx } = this._processInputParams(input); - if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) { - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.promise, - received: ctx.parsedType - }); - return INVALID; - } - const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data); - return OK(promisified.then((data) => { - return this._def.type.parseAsync(data, { - path: ctx.path, - errorMap: ctx.common.contextualErrorMap - }); - })); - } -}; -ZodPromise.create = (schema, params) => { - return new ZodPromise({ - type: schema, - typeName: ZodFirstPartyTypeKind.ZodPromise, - ...processCreateParams(params) - }); -}; -var ZodEffects = class extends ZodType { - innerType() { - return this._def.schema; - } - sourceType() { - return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema; - } - _parse(input) { - const { status, ctx } = this._processInputParams(input); - const effect = this._def.effect || null; - const checkCtx = { - addIssue: (arg) => { - addIssueToContext(ctx, arg); - if (arg.fatal) { - status.abort(); - } else { - status.dirty(); - } - }, - get path() { - return ctx.path; - } - }; - checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); - if (effect.type === "preprocess") { - const processed = effect.transform(ctx.data, checkCtx); - if (ctx.common.async) { - return Promise.resolve(processed).then(async (processed2) => { - if (status.value === "aborted") - return INVALID; - const result = await this._def.schema._parseAsync({ - data: processed2, - path: ctx.path, - parent: ctx - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - }); - } else { - if (status.value === "aborted") - return INVALID; - const result = this._def.schema._parseSync({ - data: processed, - path: ctx.path, - parent: ctx - }); - if (result.status === "aborted") - return INVALID; - if (result.status === "dirty") - return DIRTY(result.value); - if (status.value === "dirty") - return DIRTY(result.value); - return result; - } - } - if (effect.type === "refinement") { - const executeRefinement = (acc) => { - const result = effect.refinement(acc, checkCtx); - if (ctx.common.async) { - return Promise.resolve(result); - } - if (result instanceof Promise) { - throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); - } - return acc; - }; - if (ctx.common.async === false) { - const inner = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - executeRefinement(inner.value); - return { status: status.value, value: inner.value }; - } else { - return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => { - if (inner.status === "aborted") - return INVALID; - if (inner.status === "dirty") - status.dirty(); - return executeRefinement(inner.value).then(() => { - return { status: status.value, value: inner.value }; - }); - }); - } - } - if (effect.type === "transform") { - if (ctx.common.async === false) { - const base = this._def.schema._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - if (!isValid(base)) - return INVALID; - const result = effect.transform(base.value, checkCtx); - if (result instanceof Promise) { - throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); - } - return { status: status.value, value: result }; - } else { - return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => { - if (!isValid(base)) - return INVALID; - return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ - status: status.value, - value: result - })); - }); - } - } - util.assertNever(effect); - } -}; -ZodEffects.create = (schema, effect, params) => { - return new ZodEffects({ - schema, - typeName: ZodFirstPartyTypeKind.ZodEffects, - effect, - ...processCreateParams(params) - }); -}; -ZodEffects.createWithPreprocess = (preprocess2, schema, params) => { - return new ZodEffects({ - schema, - effect: { type: "preprocess", transform: preprocess2 }, - typeName: ZodFirstPartyTypeKind.ZodEffects, - ...processCreateParams(params) - }); -}; -var ZodOptional2 = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.undefined) { - return OK(void 0); - } - return this._def.innerType._parse(input); - } - unwrap() { - return this._def.innerType; - } -}; -ZodOptional2.create = (type, params) => { - return new ZodOptional2({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodOptional, - ...processCreateParams(params) - }); -}; -var ZodNullable = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType === ZodParsedType.null) { - return OK(null); - } - return this._def.innerType._parse(input); - } - unwrap() { - return this._def.innerType; - } -}; -ZodNullable.create = (type, params) => { - return new ZodNullable({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodNullable, - ...processCreateParams(params) - }); -}; -var ZodDefault = class extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - let data = ctx.data; - if (ctx.parsedType === ZodParsedType.undefined) { - data = this._def.defaultValue(); - } - return this._def.innerType._parse({ - data, - path: ctx.path, - parent: ctx - }); - } - removeDefault() { - return this._def.innerType; - } -}; -ZodDefault.create = (type, params) => { - return new ZodDefault({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodDefault, - defaultValue: typeof params.default === "function" ? params.default : () => params.default, - ...processCreateParams(params) - }); -}; -var ZodCatch = class extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const newCtx = { - ...ctx, - common: { - ...ctx.common, - issues: [] - } - }; - const result = this._def.innerType._parse({ - data: newCtx.data, - path: newCtx.path, - parent: { - ...newCtx - } - }); - if (isAsync(result)) { - return result.then((result2) => { - return { - status: "valid", - value: result2.status === "valid" ? result2.value : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data - }) - }; - }); - } else { - return { - status: "valid", - value: result.status === "valid" ? result.value : this._def.catchValue({ - get error() { - return new ZodError(newCtx.common.issues); - }, - input: newCtx.data - }) - }; - } - } - removeCatch() { - return this._def.innerType; - } -}; -ZodCatch.create = (type, params) => { - return new ZodCatch({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodCatch, - catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, - ...processCreateParams(params) - }); -}; -var ZodNaN = class extends ZodType { - _parse(input) { - const parsedType = this._getType(input); - if (parsedType !== ZodParsedType.nan) { - const ctx = this._getOrReturnCtx(input); - addIssueToContext(ctx, { - code: ZodIssueCode.invalid_type, - expected: ZodParsedType.nan, - received: ctx.parsedType - }); - return INVALID; - } - return { status: "valid", value: input.data }; - } -}; -ZodNaN.create = (params) => { - return new ZodNaN({ - typeName: ZodFirstPartyTypeKind.ZodNaN, - ...processCreateParams(params) - }); -}; -var ZodBranded = class extends ZodType { - _parse(input) { - const { ctx } = this._processInputParams(input); - const data = ctx.data; - return this._def.type._parse({ - data, - path: ctx.path, - parent: ctx - }); - } - unwrap() { - return this._def.type; - } -}; -var ZodPipeline = class _ZodPipeline extends ZodType { - _parse(input) { - const { status, ctx } = this._processInputParams(input); - if (ctx.common.async) { - const handleAsync = async () => { - const inResult = await this._def.in._parseAsync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return DIRTY(inResult.value); - } else { - return this._def.out._parseAsync({ - data: inResult.value, - path: ctx.path, - parent: ctx - }); - } - }; - return handleAsync(); - } else { - const inResult = this._def.in._parseSync({ - data: ctx.data, - path: ctx.path, - parent: ctx - }); - if (inResult.status === "aborted") - return INVALID; - if (inResult.status === "dirty") { - status.dirty(); - return { - status: "dirty", - value: inResult.value - }; - } else { - return this._def.out._parseSync({ - data: inResult.value, - path: ctx.path, - parent: ctx - }); - } - } - } - static create(a, b) { - return new _ZodPipeline({ - in: a, - out: b, - typeName: ZodFirstPartyTypeKind.ZodPipeline - }); - } -}; -var ZodReadonly = class extends ZodType { - _parse(input) { - const result = this._def.innerType._parse(input); - const freeze = (data) => { - if (isValid(data)) { - data.value = Object.freeze(data.value); - } - return data; - }; - return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result); - } - unwrap() { - return this._def.innerType; - } -}; -ZodReadonly.create = (type, params) => { - return new ZodReadonly({ - innerType: type, - typeName: ZodFirstPartyTypeKind.ZodReadonly, - ...processCreateParams(params) - }); -}; -var late = { - object: ZodObject.lazycreate -}; -var ZodFirstPartyTypeKind; -(function(ZodFirstPartyTypeKind2) { - ZodFirstPartyTypeKind2["ZodString"] = "ZodString"; - ZodFirstPartyTypeKind2["ZodNumber"] = "ZodNumber"; - ZodFirstPartyTypeKind2["ZodNaN"] = "ZodNaN"; - ZodFirstPartyTypeKind2["ZodBigInt"] = "ZodBigInt"; - ZodFirstPartyTypeKind2["ZodBoolean"] = "ZodBoolean"; - ZodFirstPartyTypeKind2["ZodDate"] = "ZodDate"; - ZodFirstPartyTypeKind2["ZodSymbol"] = "ZodSymbol"; - ZodFirstPartyTypeKind2["ZodUndefined"] = "ZodUndefined"; - ZodFirstPartyTypeKind2["ZodNull"] = "ZodNull"; - ZodFirstPartyTypeKind2["ZodAny"] = "ZodAny"; - ZodFirstPartyTypeKind2["ZodUnknown"] = "ZodUnknown"; - ZodFirstPartyTypeKind2["ZodNever"] = "ZodNever"; - ZodFirstPartyTypeKind2["ZodVoid"] = "ZodVoid"; - ZodFirstPartyTypeKind2["ZodArray"] = "ZodArray"; - ZodFirstPartyTypeKind2["ZodObject"] = "ZodObject"; - ZodFirstPartyTypeKind2["ZodUnion"] = "ZodUnion"; - ZodFirstPartyTypeKind2["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; - ZodFirstPartyTypeKind2["ZodIntersection"] = "ZodIntersection"; - ZodFirstPartyTypeKind2["ZodTuple"] = "ZodTuple"; - ZodFirstPartyTypeKind2["ZodRecord"] = "ZodRecord"; - ZodFirstPartyTypeKind2["ZodMap"] = "ZodMap"; - ZodFirstPartyTypeKind2["ZodSet"] = "ZodSet"; - ZodFirstPartyTypeKind2["ZodFunction"] = "ZodFunction"; - ZodFirstPartyTypeKind2["ZodLazy"] = "ZodLazy"; - ZodFirstPartyTypeKind2["ZodLiteral"] = "ZodLiteral"; - ZodFirstPartyTypeKind2["ZodEnum"] = "ZodEnum"; - ZodFirstPartyTypeKind2["ZodEffects"] = "ZodEffects"; - ZodFirstPartyTypeKind2["ZodNativeEnum"] = "ZodNativeEnum"; - ZodFirstPartyTypeKind2["ZodOptional"] = "ZodOptional"; - ZodFirstPartyTypeKind2["ZodNullable"] = "ZodNullable"; - ZodFirstPartyTypeKind2["ZodDefault"] = "ZodDefault"; - ZodFirstPartyTypeKind2["ZodCatch"] = "ZodCatch"; - ZodFirstPartyTypeKind2["ZodPromise"] = "ZodPromise"; - ZodFirstPartyTypeKind2["ZodBranded"] = "ZodBranded"; - ZodFirstPartyTypeKind2["ZodPipeline"] = "ZodPipeline"; - ZodFirstPartyTypeKind2["ZodReadonly"] = "ZodReadonly"; -})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); -var stringType = ZodString.create; -var numberType = ZodNumber.create; -var nanType = ZodNaN.create; -var bigIntType = ZodBigInt.create; -var booleanType = ZodBoolean.create; -var dateType = ZodDate.create; -var symbolType = ZodSymbol.create; -var undefinedType = ZodUndefined.create; -var nullType = ZodNull.create; -var anyType = ZodAny.create; -var unknownType = ZodUnknown.create; -var neverType = ZodNever.create; -var voidType = ZodVoid.create; -var arrayType = ZodArray.create; -var objectType = ZodObject.create; -var strictObjectType = ZodObject.strictCreate; -var unionType = ZodUnion.create; -var discriminatedUnionType = ZodDiscriminatedUnion.create; -var intersectionType = ZodIntersection.create; -var tupleType = ZodTuple.create; -var recordType = ZodRecord.create; -var mapType = ZodMap.create; -var setType = ZodSet.create; -var functionType = ZodFunction.create; -var lazyType = ZodLazy.create; -var literalType = ZodLiteral.create; -var enumType = ZodEnum.create; -var nativeEnumType = ZodNativeEnum.create; -var promiseType = ZodPromise.create; -var effectsType = ZodEffects.create; -var optionalType = ZodOptional2.create; -var nullableType = ZodNullable.create; -var preprocessType = ZodEffects.createWithPreprocess; -var pipelineType = ZodPipeline.create; - -// node_modules/zod/v4/mini/schemas.js -var ZodMiniType = /* @__PURE__ */ $constructor("ZodMiniType", (inst, def) => { - if (!inst._zod) - throw new Error("Uninitialized schema in ZodMiniType."); - $ZodType.init(inst, def); - inst.def = def; - inst.type = def.type; - inst.parse = (data, params) => parse(inst, data, params, { callee: inst.parse }); - inst.safeParse = (data, params) => safeParse(inst, data, params); - inst.parseAsync = async (data, params) => parseAsync(inst, data, params, { callee: inst.parseAsync }); - inst.safeParseAsync = async (data, params) => safeParseAsync(inst, data, params); - inst.check = (...checks) => { - return inst.clone({ - ...def, - checks: [ - ...def.checks ?? [], - ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) - ] - }, { parent: true }); - }; - inst.with = inst.check; - inst.clone = (_def, params) => clone(inst, _def, params); - inst.brand = () => inst; - inst.register = ((reg, meta2) => { - reg.add(inst, meta2); - return inst; - }); - inst.apply = (fn) => fn(inst); -}); -var ZodMiniObject = /* @__PURE__ */ $constructor("ZodMiniObject", (inst, def) => { - $ZodObject.init(inst, def); - ZodMiniType.init(inst, def); - defineLazy(inst, "shape", () => def.shape); -}); -// @__NO_SIDE_EFFECTS__ -function object2(shape, params) { - const def = { - type: "object", - shape: shape ?? {}, - ...normalizeParams(params) - }; - return new ZodMiniObject(def); -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js -function isZ4Schema(s) { - const schema = s; - return !!schema._zod; -} -function objectFromShape(shape) { - const values = Object.values(shape); - if (values.length === 0) - return object2({}); - const allV4 = values.every(isZ4Schema); - const allV3 = values.every((s) => !isZ4Schema(s)); - if (allV4) - return object2(shape); - if (allV3) - return objectType(shape); - throw new Error("Mixed Zod versions detected in object shape."); -} -function safeParse2(schema, data) { - if (isZ4Schema(schema)) { - const result2 = safeParse(schema, data); - return result2; - } - const v3Schema = schema; - const result = v3Schema.safeParse(data); - return result; -} -async function safeParseAsync2(schema, data) { - if (isZ4Schema(schema)) { - const result2 = await safeParseAsync(schema, data); - return result2; - } - const v3Schema = schema; - const result = await v3Schema.safeParseAsync(data); - return result; -} -function getObjectShape(schema) { - if (!schema) - return void 0; - let rawShape; - if (isZ4Schema(schema)) { - const v4Schema = schema; - rawShape = v4Schema._zod?.def?.shape; - } else { - const v3Schema = schema; - rawShape = v3Schema.shape; - } - if (!rawShape) - return void 0; - if (typeof rawShape === "function") { - try { - return rawShape(); - } catch { - return void 0; - } - } - return rawShape; -} -function normalizeObjectSchema(schema) { - if (!schema) - return void 0; - if (typeof schema === "object") { - const asV3 = schema; - const asV4 = schema; - if (!asV3._def && !asV4._zod) { - const values = Object.values(schema); - if (values.length > 0 && values.every((v) => typeof v === "object" && v !== null && (v._def !== void 0 || v._zod !== void 0 || typeof v.parse === "function"))) { - return objectFromShape(schema); - } - } - } - if (isZ4Schema(schema)) { - const v4Schema = schema; - const def = v4Schema._zod?.def; - if (def && (def.type === "object" || def.shape !== void 0)) { - return schema; - } - } else { - const v3Schema = schema; - if (v3Schema.shape !== void 0) { - return schema; - } - } - return void 0; -} -function getParseErrorMessage(error2) { - if (error2 && typeof error2 === "object") { - if ("message" in error2 && typeof error2.message === "string") { - return error2.message; - } - if ("issues" in error2 && Array.isArray(error2.issues) && error2.issues.length > 0) { - const firstIssue = error2.issues[0]; - if (firstIssue && typeof firstIssue === "object" && "message" in firstIssue) { - return String(firstIssue.message); - } - } - try { - return JSON.stringify(error2); - } catch { - return String(error2); - } - } - return String(error2); -} -function getSchemaDescription(schema) { - return schema.description; -} -function isSchemaOptional(schema) { - if (isZ4Schema(schema)) { - const v4Schema = schema; - return v4Schema._zod?.def?.type === "optional"; - } - const v3Schema = schema; - if (typeof schema.isOptional === "function") { - return schema.isOptional(); - } - return v3Schema._def?.typeName === "ZodOptional"; -} -function getLiteralValue(schema) { - if (isZ4Schema(schema)) { - const v4Schema = schema; - const def2 = v4Schema._zod?.def; - if (def2) { - if (def2.value !== void 0) - return def2.value; - if (Array.isArray(def2.values) && def2.values.length > 0) { - return def2.values[0]; - } - } - } - const v3Schema = schema; - const def = v3Schema._def; - if (def) { - if (def.value !== void 0) - return def.value; - if (Array.isArray(def.values) && def.values.length > 0) { - return def.values[0]; - } - } - const directValue = schema.value; - if (directValue !== void 0) - return directValue; - return void 0; -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/types.js -var LATEST_PROTOCOL_VERSION = "2025-11-25"; -var SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"]; -var RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task"; -var JSONRPC_VERSION = "2.0"; -var AssertObjectSchema = custom((v) => v !== null && (typeof v === "object" || typeof v === "function")); -var ProgressTokenSchema = union([string(), number().int()]); -var CursorSchema = string(); -var TaskCreationParamsSchema = looseObject({ - /** - * Time in milliseconds to keep task results available after completion. - * If null, the task has unlimited lifetime until manually cleaned up. - */ - ttl: union([number(), _null()]).optional(), - /** - * Time in milliseconds to wait between task status requests. - */ - pollInterval: number().optional() -}); -var TaskMetadataSchema = object({ - ttl: number().optional() -}); -var RelatedTaskMetadataSchema = object({ - taskId: string() -}); -var RequestMetaSchema = looseObject({ - /** - * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications. - */ - progressToken: ProgressTokenSchema.optional(), - /** - * If specified, this request is related to the provided task. - */ - [RELATED_TASK_META_KEY]: RelatedTaskMetadataSchema.optional() -}); -var BaseRequestParamsSchema = object({ - /** - * See [General fields: `_meta`](/specification/draft/basic/index#meta) for notes on `_meta` usage. - */ - _meta: RequestMetaSchema.optional() -}); -var TaskAugmentedRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * If specified, the caller is requesting task-augmented execution for this request. - * The request will return a CreateTaskResult immediately, and the actual result can be - * retrieved later via tasks/result. - * - * Task augmentation is subject to capability negotiation - receivers MUST declare support - * for task augmentation of specific request types in their capabilities. - */ - task: TaskMetadataSchema.optional() -}); -var isTaskAugmentedRequestParams = (value) => TaskAugmentedRequestParamsSchema.safeParse(value).success; -var RequestSchema = object({ - method: string(), - params: BaseRequestParamsSchema.loose().optional() -}); -var NotificationsParamsSchema = object({ - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: RequestMetaSchema.optional() -}); -var NotificationSchema = object({ - method: string(), - params: NotificationsParamsSchema.loose().optional() -}); -var ResultSchema = looseObject({ - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: RequestMetaSchema.optional() -}); -var RequestIdSchema = union([string(), number().int()]); -var JSONRPCRequestSchema = object({ - jsonrpc: literal(JSONRPC_VERSION), - id: RequestIdSchema, - ...RequestSchema.shape -}).strict(); -var isJSONRPCRequest = (value) => JSONRPCRequestSchema.safeParse(value).success; -var JSONRPCNotificationSchema = object({ - jsonrpc: literal(JSONRPC_VERSION), - ...NotificationSchema.shape -}).strict(); -var isJSONRPCNotification = (value) => JSONRPCNotificationSchema.safeParse(value).success; -var JSONRPCResultResponseSchema = object({ - jsonrpc: literal(JSONRPC_VERSION), - id: RequestIdSchema, - result: ResultSchema -}).strict(); -var isJSONRPCResultResponse = (value) => JSONRPCResultResponseSchema.safeParse(value).success; -var ErrorCode; -(function(ErrorCode2) { - ErrorCode2[ErrorCode2["ConnectionClosed"] = -32e3] = "ConnectionClosed"; - ErrorCode2[ErrorCode2["RequestTimeout"] = -32001] = "RequestTimeout"; - ErrorCode2[ErrorCode2["ParseError"] = -32700] = "ParseError"; - ErrorCode2[ErrorCode2["InvalidRequest"] = -32600] = "InvalidRequest"; - ErrorCode2[ErrorCode2["MethodNotFound"] = -32601] = "MethodNotFound"; - ErrorCode2[ErrorCode2["InvalidParams"] = -32602] = "InvalidParams"; - ErrorCode2[ErrorCode2["InternalError"] = -32603] = "InternalError"; - ErrorCode2[ErrorCode2["UrlElicitationRequired"] = -32042] = "UrlElicitationRequired"; -})(ErrorCode || (ErrorCode = {})); -var JSONRPCErrorResponseSchema = object({ - jsonrpc: literal(JSONRPC_VERSION), - id: RequestIdSchema.optional(), - error: object({ - /** - * The error type that occurred. - */ - code: number().int(), - /** - * A short description of the error. The message SHOULD be limited to a concise single sentence. - */ - message: string(), - /** - * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.). - */ - data: unknown().optional() - }) -}).strict(); -var isJSONRPCErrorResponse = (value) => JSONRPCErrorResponseSchema.safeParse(value).success; -var JSONRPCMessageSchema = union([ - JSONRPCRequestSchema, - JSONRPCNotificationSchema, - JSONRPCResultResponseSchema, - JSONRPCErrorResponseSchema -]); -var JSONRPCResponseSchema = union([JSONRPCResultResponseSchema, JSONRPCErrorResponseSchema]); -var EmptyResultSchema = ResultSchema.strict(); -var CancelledNotificationParamsSchema = NotificationsParamsSchema.extend({ - /** - * The ID of the request to cancel. - * - * This MUST correspond to the ID of a request previously issued in the same direction. - */ - requestId: RequestIdSchema.optional(), - /** - * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user. - */ - reason: string().optional() -}); -var CancelledNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/cancelled"), - params: CancelledNotificationParamsSchema -}); -var IconSchema = object({ - /** - * URL or data URI for the icon. - */ - src: string(), - /** - * Optional MIME type for the icon. - */ - mimeType: string().optional(), - /** - * Optional array of strings that specify sizes at which the icon can be used. - * Each string should be in WxH format (e.g., `"48x48"`, `"96x96"`) or `"any"` for scalable formats like SVG. - * - * If not provided, the client should assume that the icon can be used at any size. - */ - sizes: array(string()).optional(), - /** - * Optional specifier for the theme this icon is designed for. `light` indicates - * the icon is designed to be used with a light background, and `dark` indicates - * the icon is designed to be used with a dark background. - * - * If not provided, the client should assume the icon can be used with any theme. - */ - theme: _enum(["light", "dark"]).optional() -}); -var IconsSchema = object({ - /** - * Optional set of sized icons that the client can display in a user interface. - * - * Clients that support rendering icons MUST support at least the following MIME types: - * - `image/png` - PNG images (safe, universal compatibility) - * - `image/jpeg` (and `image/jpg`) - JPEG images (safe, universal compatibility) - * - * Clients that support rendering icons SHOULD also support: - * - `image/svg+xml` - SVG images (scalable but requires security precautions) - * - `image/webp` - WebP images (modern, efficient format) - */ - icons: array(IconSchema).optional() -}); -var BaseMetadataSchema = object({ - /** Intended for programmatic or logical use, but used as a display name in past specs or fallback */ - name: string(), - /** - * Intended for UI and end-user contexts — optimized to be human-readable and easily understood, - * even by those unfamiliar with domain-specific terminology. - * - * If not provided, the name should be used for display (except for Tool, - * where `annotations.title` should be given precedence over using `name`, - * if present). - */ - title: string().optional() -}); -var ImplementationSchema = BaseMetadataSchema.extend({ - ...BaseMetadataSchema.shape, - ...IconsSchema.shape, - version: string(), - /** - * An optional URL of the website for this implementation. - */ - websiteUrl: string().optional(), - /** - * An optional human-readable description of what this implementation does. - * - * This can be used by clients or servers to provide context about their purpose - * and capabilities. For example, a server might describe the types of resources - * or tools it provides, while a client might describe its intended use case. - */ - description: string().optional() -}); -var FormElicitationCapabilitySchema = intersection(object({ - applyDefaults: boolean().optional() -}), record(string(), unknown())); -var ElicitationCapabilitySchema = preprocess((value) => { - if (value && typeof value === "object" && !Array.isArray(value)) { - if (Object.keys(value).length === 0) { - return { form: {} }; - } - } - return value; -}, intersection(object({ - form: FormElicitationCapabilitySchema.optional(), - url: AssertObjectSchema.optional() -}), record(string(), unknown()).optional())); -var ClientTasksCapabilitySchema = looseObject({ - /** - * Present if the client supports listing tasks. - */ - list: AssertObjectSchema.optional(), - /** - * Present if the client supports cancelling tasks. - */ - cancel: AssertObjectSchema.optional(), - /** - * Capabilities for task creation on specific request types. - */ - requests: looseObject({ - /** - * Task support for sampling requests. - */ - sampling: looseObject({ - createMessage: AssertObjectSchema.optional() - }).optional(), - /** - * Task support for elicitation requests. - */ - elicitation: looseObject({ - create: AssertObjectSchema.optional() - }).optional() - }).optional() -}); -var ServerTasksCapabilitySchema = looseObject({ - /** - * Present if the server supports listing tasks. - */ - list: AssertObjectSchema.optional(), - /** - * Present if the server supports cancelling tasks. - */ - cancel: AssertObjectSchema.optional(), - /** - * Capabilities for task creation on specific request types. - */ - requests: looseObject({ - /** - * Task support for tool requests. - */ - tools: looseObject({ - call: AssertObjectSchema.optional() - }).optional() - }).optional() -}); -var ClientCapabilitiesSchema = object({ - /** - * Experimental, non-standard capabilities that the client supports. - */ - experimental: record(string(), AssertObjectSchema).optional(), - /** - * Present if the client supports sampling from an LLM. - */ - sampling: object({ - /** - * Present if the client supports context inclusion via includeContext parameter. - * If not declared, servers SHOULD only use `includeContext: "none"` (or omit it). - */ - context: AssertObjectSchema.optional(), - /** - * Present if the client supports tool use via tools and toolChoice parameters. - */ - tools: AssertObjectSchema.optional() - }).optional(), - /** - * Present if the client supports eliciting user input. - */ - elicitation: ElicitationCapabilitySchema.optional(), - /** - * Present if the client supports listing roots. - */ - roots: object({ - /** - * Whether the client supports issuing notifications for changes to the roots list. - */ - listChanged: boolean().optional() - }).optional(), - /** - * Present if the client supports task creation. - */ - tasks: ClientTasksCapabilitySchema.optional() -}); -var InitializeRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well. - */ - protocolVersion: string(), - capabilities: ClientCapabilitiesSchema, - clientInfo: ImplementationSchema -}); -var InitializeRequestSchema = RequestSchema.extend({ - method: literal("initialize"), - params: InitializeRequestParamsSchema -}); -var ServerCapabilitiesSchema = object({ - /** - * Experimental, non-standard capabilities that the server supports. - */ - experimental: record(string(), AssertObjectSchema).optional(), - /** - * Present if the server supports sending log messages to the client. - */ - logging: AssertObjectSchema.optional(), - /** - * Present if the server supports sending completions to the client. - */ - completions: AssertObjectSchema.optional(), - /** - * Present if the server offers any prompt templates. - */ - prompts: object({ - /** - * Whether this server supports issuing notifications for changes to the prompt list. - */ - listChanged: boolean().optional() - }).optional(), - /** - * Present if the server offers any resources to read. - */ - resources: object({ - /** - * Whether this server supports clients subscribing to resource updates. - */ - subscribe: boolean().optional(), - /** - * Whether this server supports issuing notifications for changes to the resource list. - */ - listChanged: boolean().optional() - }).optional(), - /** - * Present if the server offers any tools to call. - */ - tools: object({ - /** - * Whether this server supports issuing notifications for changes to the tool list. - */ - listChanged: boolean().optional() - }).optional(), - /** - * Present if the server supports task creation. - */ - tasks: ServerTasksCapabilitySchema.optional() -}); -var InitializeResultSchema = ResultSchema.extend({ - /** - * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect. - */ - protocolVersion: string(), - capabilities: ServerCapabilitiesSchema, - serverInfo: ImplementationSchema, - /** - * Instructions describing how to use the server and its features. - * - * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a "hint" to the model. For example, this information MAY be added to the system prompt. - */ - instructions: string().optional() -}); -var InitializedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/initialized"), - params: NotificationsParamsSchema.optional() -}); -var PingRequestSchema = RequestSchema.extend({ - method: literal("ping"), - params: BaseRequestParamsSchema.optional() -}); -var ProgressSchema = object({ - /** - * The progress thus far. This should increase every time progress is made, even if the total is unknown. - */ - progress: number(), - /** - * Total number of items to process (or total progress required), if known. - */ - total: optional(number()), - /** - * An optional message describing the current progress. - */ - message: optional(string()) -}); -var ProgressNotificationParamsSchema = object({ - ...NotificationsParamsSchema.shape, - ...ProgressSchema.shape, - /** - * The progress token which was given in the initial request, used to associate this notification with the request that is proceeding. - */ - progressToken: ProgressTokenSchema -}); -var ProgressNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/progress"), - params: ProgressNotificationParamsSchema -}); -var PaginatedRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * An opaque token representing the current pagination position. - * If provided, the server should return results starting after this cursor. - */ - cursor: CursorSchema.optional() -}); -var PaginatedRequestSchema = RequestSchema.extend({ - params: PaginatedRequestParamsSchema.optional() -}); -var PaginatedResultSchema = ResultSchema.extend({ - /** - * An opaque token representing the pagination position after the last returned result. - * If present, there may be more results available. - */ - nextCursor: CursorSchema.optional() -}); -var TaskStatusSchema = _enum(["working", "input_required", "completed", "failed", "cancelled"]); -var TaskSchema = object({ - taskId: string(), - status: TaskStatusSchema, - /** - * Time in milliseconds to keep task results available after completion. - * If null, the task has unlimited lifetime until manually cleaned up. - */ - ttl: union([number(), _null()]), - /** - * ISO 8601 timestamp when the task was created. - */ - createdAt: string(), - /** - * ISO 8601 timestamp when the task was last updated. - */ - lastUpdatedAt: string(), - pollInterval: optional(number()), - /** - * Optional diagnostic message for failed tasks or other status information. - */ - statusMessage: optional(string()) -}); -var CreateTaskResultSchema = ResultSchema.extend({ - task: TaskSchema -}); -var TaskStatusNotificationParamsSchema = NotificationsParamsSchema.merge(TaskSchema); -var TaskStatusNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/tasks/status"), - params: TaskStatusNotificationParamsSchema -}); -var GetTaskRequestSchema = RequestSchema.extend({ - method: literal("tasks/get"), - params: BaseRequestParamsSchema.extend({ - taskId: string() - }) -}); -var GetTaskResultSchema = ResultSchema.merge(TaskSchema); -var GetTaskPayloadRequestSchema = RequestSchema.extend({ - method: literal("tasks/result"), - params: BaseRequestParamsSchema.extend({ - taskId: string() - }) -}); -var GetTaskPayloadResultSchema = ResultSchema.loose(); -var ListTasksRequestSchema = PaginatedRequestSchema.extend({ - method: literal("tasks/list") -}); -var ListTasksResultSchema = PaginatedResultSchema.extend({ - tasks: array(TaskSchema) -}); -var CancelTaskRequestSchema = RequestSchema.extend({ - method: literal("tasks/cancel"), - params: BaseRequestParamsSchema.extend({ - taskId: string() - }) -}); -var CancelTaskResultSchema = ResultSchema.merge(TaskSchema); -var ResourceContentsSchema = object({ - /** - * The URI of this resource. - */ - uri: string(), - /** - * The MIME type of this resource, if known. - */ - mimeType: optional(string()), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var TextResourceContentsSchema = ResourceContentsSchema.extend({ - /** - * The text of the item. This must only be set if the item can actually be represented as text (not binary data). - */ - text: string() -}); -var Base64Schema = string().refine((val) => { - try { - atob(val); - return true; - } catch { - return false; - } -}, { message: "Invalid Base64 string" }); -var BlobResourceContentsSchema = ResourceContentsSchema.extend({ - /** - * A base64-encoded string representing the binary data of the item. - */ - blob: Base64Schema -}); -var RoleSchema = _enum(["user", "assistant"]); -var AnnotationsSchema = object({ - /** - * Intended audience(s) for the resource. - */ - audience: array(RoleSchema).optional(), - /** - * Importance hint for the resource, from 0 (least) to 1 (most). - */ - priority: number().min(0).max(1).optional(), - /** - * ISO 8601 timestamp for the most recent modification. - */ - lastModified: iso_exports.datetime({ offset: true }).optional() -}); -var ResourceSchema = object({ - ...BaseMetadataSchema.shape, - ...IconsSchema.shape, - /** - * The URI of this resource. - */ - uri: string(), - /** - * A description of what this resource represents. - * - * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a "hint" to the model. - */ - description: optional(string()), - /** - * The MIME type of this resource, if known. - */ - mimeType: optional(string()), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: optional(looseObject({})) -}); -var ResourceTemplateSchema = object({ - ...BaseMetadataSchema.shape, - ...IconsSchema.shape, - /** - * A URI template (according to RFC 6570) that can be used to construct resource URIs. - */ - uriTemplate: string(), - /** - * A description of what this template is for. - * - * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a "hint" to the model. - */ - description: optional(string()), - /** - * The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type. - */ - mimeType: optional(string()), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: optional(looseObject({})) -}); -var ListResourcesRequestSchema = PaginatedRequestSchema.extend({ - method: literal("resources/list") -}); -var ListResourcesResultSchema = PaginatedResultSchema.extend({ - resources: array(ResourceSchema) -}); -var ListResourceTemplatesRequestSchema = PaginatedRequestSchema.extend({ - method: literal("resources/templates/list") -}); -var ListResourceTemplatesResultSchema = PaginatedResultSchema.extend({ - resourceTemplates: array(ResourceTemplateSchema) -}); -var ResourceRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * The URI of the resource to read. The URI can use any protocol; it is up to the server how to interpret it. - * - * @format uri - */ - uri: string() -}); -var ReadResourceRequestParamsSchema = ResourceRequestParamsSchema; -var ReadResourceRequestSchema = RequestSchema.extend({ - method: literal("resources/read"), - params: ReadResourceRequestParamsSchema -}); -var ReadResourceResultSchema = ResultSchema.extend({ - contents: array(union([TextResourceContentsSchema, BlobResourceContentsSchema])) -}); -var ResourceListChangedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/resources/list_changed"), - params: NotificationsParamsSchema.optional() -}); -var SubscribeRequestParamsSchema = ResourceRequestParamsSchema; -var SubscribeRequestSchema = RequestSchema.extend({ - method: literal("resources/subscribe"), - params: SubscribeRequestParamsSchema -}); -var UnsubscribeRequestParamsSchema = ResourceRequestParamsSchema; -var UnsubscribeRequestSchema = RequestSchema.extend({ - method: literal("resources/unsubscribe"), - params: UnsubscribeRequestParamsSchema -}); -var ResourceUpdatedNotificationParamsSchema = NotificationsParamsSchema.extend({ - /** - * The URI of the resource that has been updated. This might be a sub-resource of the one that the client actually subscribed to. - */ - uri: string() -}); -var ResourceUpdatedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/resources/updated"), - params: ResourceUpdatedNotificationParamsSchema -}); -var PromptArgumentSchema = object({ - /** - * The name of the argument. - */ - name: string(), - /** - * A human-readable description of the argument. - */ - description: optional(string()), - /** - * Whether this argument must be provided. - */ - required: optional(boolean()) -}); -var PromptSchema = object({ - ...BaseMetadataSchema.shape, - ...IconsSchema.shape, - /** - * An optional description of what this prompt provides - */ - description: optional(string()), - /** - * A list of arguments to use for templating the prompt. - */ - arguments: optional(array(PromptArgumentSchema)), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: optional(looseObject({})) -}); -var ListPromptsRequestSchema = PaginatedRequestSchema.extend({ - method: literal("prompts/list") -}); -var ListPromptsResultSchema = PaginatedResultSchema.extend({ - prompts: array(PromptSchema) -}); -var GetPromptRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * The name of the prompt or prompt template. - */ - name: string(), - /** - * Arguments to use for templating the prompt. - */ - arguments: record(string(), string()).optional() -}); -var GetPromptRequestSchema = RequestSchema.extend({ - method: literal("prompts/get"), - params: GetPromptRequestParamsSchema -}); -var TextContentSchema = object({ - type: literal("text"), - /** - * The text content of the message. - */ - text: string(), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var ImageContentSchema = object({ - type: literal("image"), - /** - * The base64-encoded image data. - */ - data: Base64Schema, - /** - * The MIME type of the image. Different providers may support different image types. - */ - mimeType: string(), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var AudioContentSchema = object({ - type: literal("audio"), - /** - * The base64-encoded audio data. - */ - data: Base64Schema, - /** - * The MIME type of the audio. Different providers may support different audio types. - */ - mimeType: string(), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var ToolUseContentSchema = object({ - type: literal("tool_use"), - /** - * The name of the tool to invoke. - * Must match a tool name from the request's tools array. - */ - name: string(), - /** - * Unique identifier for this tool call. - * Used to correlate with ToolResultContent in subsequent messages. - */ - id: string(), - /** - * Arguments to pass to the tool. - * Must conform to the tool's inputSchema. - */ - input: record(string(), unknown()), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var EmbeddedResourceSchema = object({ - type: literal("resource"), - resource: union([TextResourceContentsSchema, BlobResourceContentsSchema]), - /** - * Optional annotations for the client. - */ - annotations: AnnotationsSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var ResourceLinkSchema = ResourceSchema.extend({ - type: literal("resource_link") -}); -var ContentBlockSchema = union([ - TextContentSchema, - ImageContentSchema, - AudioContentSchema, - ResourceLinkSchema, - EmbeddedResourceSchema -]); -var PromptMessageSchema = object({ - role: RoleSchema, - content: ContentBlockSchema -}); -var GetPromptResultSchema = ResultSchema.extend({ - /** - * An optional description for the prompt. - */ - description: string().optional(), - messages: array(PromptMessageSchema) -}); -var PromptListChangedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/prompts/list_changed"), - params: NotificationsParamsSchema.optional() -}); -var ToolAnnotationsSchema = object({ - /** - * A human-readable title for the tool. - */ - title: string().optional(), - /** - * If true, the tool does not modify its environment. - * - * Default: false - */ - readOnlyHint: boolean().optional(), - /** - * If true, the tool may perform destructive updates to its environment. - * If false, the tool performs only additive updates. - * - * (This property is meaningful only when `readOnlyHint == false`) - * - * Default: true - */ - destructiveHint: boolean().optional(), - /** - * If true, calling the tool repeatedly with the same arguments - * will have no additional effect on the its environment. - * - * (This property is meaningful only when `readOnlyHint == false`) - * - * Default: false - */ - idempotentHint: boolean().optional(), - /** - * If true, this tool may interact with an "open world" of external - * entities. If false, the tool's domain of interaction is closed. - * For example, the world of a web search tool is open, whereas that - * of a memory tool is not. - * - * Default: true - */ - openWorldHint: boolean().optional() -}); -var ToolExecutionSchema = object({ - /** - * Indicates the tool's preference for task-augmented execution. - * - "required": Clients MUST invoke the tool as a task - * - "optional": Clients MAY invoke the tool as a task or normal request - * - "forbidden": Clients MUST NOT attempt to invoke the tool as a task - * - * If not present, defaults to "forbidden". - */ - taskSupport: _enum(["required", "optional", "forbidden"]).optional() -}); -var ToolSchema = object({ - ...BaseMetadataSchema.shape, - ...IconsSchema.shape, - /** - * A human-readable description of the tool. - */ - description: string().optional(), - /** - * A JSON Schema 2020-12 object defining the expected parameters for the tool. - * Must have type: 'object' at the root level per MCP spec. - */ - inputSchema: object({ - type: literal("object"), - properties: record(string(), AssertObjectSchema).optional(), - required: array(string()).optional() - }).catchall(unknown()), - /** - * An optional JSON Schema 2020-12 object defining the structure of the tool's output - * returned in the structuredContent field of a CallToolResult. - * Must have type: 'object' at the root level per MCP spec. - */ - outputSchema: object({ - type: literal("object"), - properties: record(string(), AssertObjectSchema).optional(), - required: array(string()).optional() - }).catchall(unknown()).optional(), - /** - * Optional additional tool information. - */ - annotations: ToolAnnotationsSchema.optional(), - /** - * Execution-related properties for this tool. - */ - execution: ToolExecutionSchema.optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var ListToolsRequestSchema = PaginatedRequestSchema.extend({ - method: literal("tools/list") -}); -var ListToolsResultSchema = PaginatedResultSchema.extend({ - tools: array(ToolSchema) -}); -var CallToolResultSchema = ResultSchema.extend({ - /** - * A list of content objects that represent the result of the tool call. - * - * If the Tool does not define an outputSchema, this field MUST be present in the result. - * For backwards compatibility, this field is always present, but it may be empty. - */ - content: array(ContentBlockSchema).default([]), - /** - * An object containing structured tool output. - * - * If the Tool defines an outputSchema, this field MUST be present in the result, and contain a JSON object that matches the schema. - */ - structuredContent: record(string(), unknown()).optional(), - /** - * Whether the tool call ended in an error. - * - * If not set, this is assumed to be false (the call was successful). - * - * Any errors that originate from the tool SHOULD be reported inside the result - * object, with `isError` set to true, _not_ as an MCP protocol-level error - * response. Otherwise, the LLM would not be able to see that an error occurred - * and self-correct. - * - * However, any errors in _finding_ the tool, an error indicating that the - * server does not support tool calls, or any other exceptional conditions, - * should be reported as an MCP error response. - */ - isError: boolean().optional() -}); -var CompatibilityCallToolResultSchema = CallToolResultSchema.or(ResultSchema.extend({ - toolResult: unknown() -})); -var CallToolRequestParamsSchema = TaskAugmentedRequestParamsSchema.extend({ - /** - * The name of the tool to call. - */ - name: string(), - /** - * Arguments to pass to the tool. - */ - arguments: record(string(), unknown()).optional() -}); -var CallToolRequestSchema = RequestSchema.extend({ - method: literal("tools/call"), - params: CallToolRequestParamsSchema -}); -var ToolListChangedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/tools/list_changed"), - params: NotificationsParamsSchema.optional() -}); -var ListChangedOptionsBaseSchema = object({ - /** - * If true, the list will be refreshed automatically when a list changed notification is received. - * The callback will be called with the updated list. - * - * If false, the callback will be called with null items, allowing manual refresh. - * - * @default true - */ - autoRefresh: boolean().default(true), - /** - * Debounce time in milliseconds for list changed notification processing. - * - * Multiple notifications received within this timeframe will only trigger one refresh. - * Set to 0 to disable debouncing. - * - * @default 300 - */ - debounceMs: number().int().nonnegative().default(300) -}); -var LoggingLevelSchema = _enum(["debug", "info", "notice", "warning", "error", "critical", "alert", "emergency"]); -var SetLevelRequestParamsSchema = BaseRequestParamsSchema.extend({ - /** - * The level of logging that the client wants to receive from the server. The server should send all logs at this level and higher (i.e., more severe) to the client as notifications/logging/message. - */ - level: LoggingLevelSchema -}); -var SetLevelRequestSchema = RequestSchema.extend({ - method: literal("logging/setLevel"), - params: SetLevelRequestParamsSchema -}); -var LoggingMessageNotificationParamsSchema = NotificationsParamsSchema.extend({ - /** - * The severity of this log message. - */ - level: LoggingLevelSchema, - /** - * An optional name of the logger issuing this message. - */ - logger: string().optional(), - /** - * The data to be logged, such as a string message or an object. Any JSON serializable type is allowed here. - */ - data: unknown() -}); -var LoggingMessageNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/message"), - params: LoggingMessageNotificationParamsSchema -}); -var ModelHintSchema = object({ - /** - * A hint for a model name. - */ - name: string().optional() -}); -var ModelPreferencesSchema = object({ - /** - * Optional hints to use for model selection. - */ - hints: array(ModelHintSchema).optional(), - /** - * How much to prioritize cost when selecting a model. - */ - costPriority: number().min(0).max(1).optional(), - /** - * How much to prioritize sampling speed (latency) when selecting a model. - */ - speedPriority: number().min(0).max(1).optional(), - /** - * How much to prioritize intelligence and capabilities when selecting a model. - */ - intelligencePriority: number().min(0).max(1).optional() -}); -var ToolChoiceSchema = object({ - /** - * Controls when tools are used: - * - "auto": Model decides whether to use tools (default) - * - "required": Model MUST use at least one tool before completing - * - "none": Model MUST NOT use any tools - */ - mode: _enum(["auto", "required", "none"]).optional() -}); -var ToolResultContentSchema = object({ - type: literal("tool_result"), - toolUseId: string().describe("The unique identifier for the corresponding tool call."), - content: array(ContentBlockSchema).default([]), - structuredContent: object({}).loose().optional(), - isError: boolean().optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var SamplingContentSchema = discriminatedUnion("type", [TextContentSchema, ImageContentSchema, AudioContentSchema]); -var SamplingMessageContentBlockSchema = discriminatedUnion("type", [ - TextContentSchema, - ImageContentSchema, - AudioContentSchema, - ToolUseContentSchema, - ToolResultContentSchema -]); -var SamplingMessageSchema = object({ - role: RoleSchema, - content: union([SamplingMessageContentBlockSchema, array(SamplingMessageContentBlockSchema)]), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var CreateMessageRequestParamsSchema = TaskAugmentedRequestParamsSchema.extend({ - messages: array(SamplingMessageSchema), - /** - * The server's preferences for which model to select. The client MAY modify or omit this request. - */ - modelPreferences: ModelPreferencesSchema.optional(), - /** - * An optional system prompt the server wants to use for sampling. The client MAY modify or omit this prompt. - */ - systemPrompt: string().optional(), - /** - * A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. - * The client MAY ignore this request. - * - * Default is "none". Values "thisServer" and "allServers" are soft-deprecated. Servers SHOULD only use these values if the client - * declares ClientCapabilities.sampling.context. These values may be removed in future spec releases. - */ - includeContext: _enum(["none", "thisServer", "allServers"]).optional(), - temperature: number().optional(), - /** - * The requested maximum number of tokens to sample (to prevent runaway completions). - * - * The client MAY choose to sample fewer tokens than the requested maximum. - */ - maxTokens: number().int(), - stopSequences: array(string()).optional(), - /** - * Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific. - */ - metadata: AssertObjectSchema.optional(), - /** - * Tools that the model may use during generation. - * The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared. - */ - tools: array(ToolSchema).optional(), - /** - * Controls how the model uses tools. - * The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared. - * Default is `{ mode: "auto" }`. - */ - toolChoice: ToolChoiceSchema.optional() -}); -var CreateMessageRequestSchema = RequestSchema.extend({ - method: literal("sampling/createMessage"), - params: CreateMessageRequestParamsSchema -}); -var CreateMessageResultSchema = ResultSchema.extend({ - /** - * The name of the model that generated the message. - */ - model: string(), - /** - * The reason why sampling stopped, if known. - * - * Standard values: - * - "endTurn": Natural end of the assistant's turn - * - "stopSequence": A stop sequence was encountered - * - "maxTokens": Maximum token limit was reached - * - * This field is an open string to allow for provider-specific stop reasons. - */ - stopReason: optional(_enum(["endTurn", "stopSequence", "maxTokens"]).or(string())), - role: RoleSchema, - /** - * Response content. Single content block (text, image, or audio). - */ - content: SamplingContentSchema -}); -var CreateMessageResultWithToolsSchema = ResultSchema.extend({ - /** - * The name of the model that generated the message. - */ - model: string(), - /** - * The reason why sampling stopped, if known. - * - * Standard values: - * - "endTurn": Natural end of the assistant's turn - * - "stopSequence": A stop sequence was encountered - * - "maxTokens": Maximum token limit was reached - * - "toolUse": The model wants to use one or more tools - * - * This field is an open string to allow for provider-specific stop reasons. - */ - stopReason: optional(_enum(["endTurn", "stopSequence", "maxTokens", "toolUse"]).or(string())), - role: RoleSchema, - /** - * Response content. May be a single block or array. May include ToolUseContent if stopReason is "toolUse". - */ - content: union([SamplingMessageContentBlockSchema, array(SamplingMessageContentBlockSchema)]) -}); -var BooleanSchemaSchema = object({ - type: literal("boolean"), - title: string().optional(), - description: string().optional(), - default: boolean().optional() -}); -var StringSchemaSchema = object({ - type: literal("string"), - title: string().optional(), - description: string().optional(), - minLength: number().optional(), - maxLength: number().optional(), - format: _enum(["email", "uri", "date", "date-time"]).optional(), - default: string().optional() -}); -var NumberSchemaSchema = object({ - type: _enum(["number", "integer"]), - title: string().optional(), - description: string().optional(), - minimum: number().optional(), - maximum: number().optional(), - default: number().optional() -}); -var UntitledSingleSelectEnumSchemaSchema = object({ - type: literal("string"), - title: string().optional(), - description: string().optional(), - enum: array(string()), - default: string().optional() -}); -var TitledSingleSelectEnumSchemaSchema = object({ - type: literal("string"), - title: string().optional(), - description: string().optional(), - oneOf: array(object({ - const: string(), - title: string() - })), - default: string().optional() -}); -var LegacyTitledEnumSchemaSchema = object({ - type: literal("string"), - title: string().optional(), - description: string().optional(), - enum: array(string()), - enumNames: array(string()).optional(), - default: string().optional() -}); -var SingleSelectEnumSchemaSchema = union([UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema]); -var UntitledMultiSelectEnumSchemaSchema = object({ - type: literal("array"), - title: string().optional(), - description: string().optional(), - minItems: number().optional(), - maxItems: number().optional(), - items: object({ - type: literal("string"), - enum: array(string()) - }), - default: array(string()).optional() -}); -var TitledMultiSelectEnumSchemaSchema = object({ - type: literal("array"), - title: string().optional(), - description: string().optional(), - minItems: number().optional(), - maxItems: number().optional(), - items: object({ - anyOf: array(object({ - const: string(), - title: string() - })) - }), - default: array(string()).optional() -}); -var MultiSelectEnumSchemaSchema = union([UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema]); -var EnumSchemaSchema = union([LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema]); -var PrimitiveSchemaDefinitionSchema = union([EnumSchemaSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema]); -var ElicitRequestFormParamsSchema = TaskAugmentedRequestParamsSchema.extend({ - /** - * The elicitation mode. - * - * Optional for backward compatibility. Clients MUST treat missing mode as "form". - */ - mode: literal("form").optional(), - /** - * The message to present to the user describing what information is being requested. - */ - message: string(), - /** - * A restricted subset of JSON Schema. - * Only top-level properties are allowed, without nesting. - */ - requestedSchema: object({ - type: literal("object"), - properties: record(string(), PrimitiveSchemaDefinitionSchema), - required: array(string()).optional() - }) -}); -var ElicitRequestURLParamsSchema = TaskAugmentedRequestParamsSchema.extend({ - /** - * The elicitation mode. - */ - mode: literal("url"), - /** - * The message to present to the user explaining why the interaction is needed. - */ - message: string(), - /** - * The ID of the elicitation, which must be unique within the context of the server. - * The client MUST treat this ID as an opaque value. - */ - elicitationId: string(), - /** - * The URL that the user should navigate to. - */ - url: string().url() -}); -var ElicitRequestParamsSchema = union([ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema]); -var ElicitRequestSchema = RequestSchema.extend({ - method: literal("elicitation/create"), - params: ElicitRequestParamsSchema -}); -var ElicitationCompleteNotificationParamsSchema = NotificationsParamsSchema.extend({ - /** - * The ID of the elicitation that completed. - */ - elicitationId: string() -}); -var ElicitationCompleteNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/elicitation/complete"), - params: ElicitationCompleteNotificationParamsSchema -}); -var ElicitResultSchema = ResultSchema.extend({ - /** - * The user action in response to the elicitation. - * - "accept": User submitted the form/confirmed the action - * - "decline": User explicitly decline the action - * - "cancel": User dismissed without making an explicit choice - */ - action: _enum(["accept", "decline", "cancel"]), - /** - * The submitted form data, only present when action is "accept". - * Contains values matching the requested schema. - * Per MCP spec, content is "typically omitted" for decline/cancel actions. - * We normalize null to undefined for leniency while maintaining type compatibility. - */ - content: preprocess((val) => val === null ? void 0 : val, record(string(), union([string(), number(), boolean(), array(string())])).optional()) -}); -var ResourceTemplateReferenceSchema = object({ - type: literal("ref/resource"), - /** - * The URI or URI template of the resource. - */ - uri: string() -}); -var PromptReferenceSchema = object({ - type: literal("ref/prompt"), - /** - * The name of the prompt or prompt template - */ - name: string() -}); -var CompleteRequestParamsSchema = BaseRequestParamsSchema.extend({ - ref: union([PromptReferenceSchema, ResourceTemplateReferenceSchema]), - /** - * The argument's information - */ - argument: object({ - /** - * The name of the argument - */ - name: string(), - /** - * The value of the argument to use for completion matching. - */ - value: string() - }), - context: object({ - /** - * Previously-resolved variables in a URI template or prompt. - */ - arguments: record(string(), string()).optional() - }).optional() -}); -var CompleteRequestSchema = RequestSchema.extend({ - method: literal("completion/complete"), - params: CompleteRequestParamsSchema -}); -function assertCompleteRequestPrompt(request) { - if (request.params.ref.type !== "ref/prompt") { - throw new TypeError(`Expected CompleteRequestPrompt, but got ${request.params.ref.type}`); - } - void request; -} -function assertCompleteRequestResourceTemplate(request) { - if (request.params.ref.type !== "ref/resource") { - throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${request.params.ref.type}`); - } - void request; -} -var CompleteResultSchema = ResultSchema.extend({ - completion: looseObject({ - /** - * An array of completion values. Must not exceed 100 items. - */ - values: array(string()).max(100), - /** - * The total number of completion options available. This can exceed the number of values actually sent in the response. - */ - total: optional(number().int()), - /** - * Indicates whether there are additional completion options beyond those provided in the current response, even if the exact total is unknown. - */ - hasMore: optional(boolean()) - }) -}); -var RootSchema = object({ - /** - * The URI identifying the root. This *must* start with file:// for now. - */ - uri: string().startsWith("file://"), - /** - * An optional name for the root. - */ - name: string().optional(), - /** - * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) - * for notes on _meta usage. - */ - _meta: record(string(), unknown()).optional() -}); -var ListRootsRequestSchema = RequestSchema.extend({ - method: literal("roots/list"), - params: BaseRequestParamsSchema.optional() -}); -var ListRootsResultSchema = ResultSchema.extend({ - roots: array(RootSchema) -}); -var RootsListChangedNotificationSchema = NotificationSchema.extend({ - method: literal("notifications/roots/list_changed"), - params: NotificationsParamsSchema.optional() -}); -var ClientRequestSchema = union([ - PingRequestSchema, - InitializeRequestSchema, - CompleteRequestSchema, - SetLevelRequestSchema, - GetPromptRequestSchema, - ListPromptsRequestSchema, - ListResourcesRequestSchema, - ListResourceTemplatesRequestSchema, - ReadResourceRequestSchema, - SubscribeRequestSchema, - UnsubscribeRequestSchema, - CallToolRequestSchema, - ListToolsRequestSchema, - GetTaskRequestSchema, - GetTaskPayloadRequestSchema, - ListTasksRequestSchema, - CancelTaskRequestSchema -]); -var ClientNotificationSchema = union([ - CancelledNotificationSchema, - ProgressNotificationSchema, - InitializedNotificationSchema, - RootsListChangedNotificationSchema, - TaskStatusNotificationSchema -]); -var ClientResultSchema = union([ - EmptyResultSchema, - CreateMessageResultSchema, - CreateMessageResultWithToolsSchema, - ElicitResultSchema, - ListRootsResultSchema, - GetTaskResultSchema, - ListTasksResultSchema, - CreateTaskResultSchema -]); -var ServerRequestSchema = union([ - PingRequestSchema, - CreateMessageRequestSchema, - ElicitRequestSchema, - ListRootsRequestSchema, - GetTaskRequestSchema, - GetTaskPayloadRequestSchema, - ListTasksRequestSchema, - CancelTaskRequestSchema -]); -var ServerNotificationSchema = union([ - CancelledNotificationSchema, - ProgressNotificationSchema, - LoggingMessageNotificationSchema, - ResourceUpdatedNotificationSchema, - ResourceListChangedNotificationSchema, - ToolListChangedNotificationSchema, - PromptListChangedNotificationSchema, - TaskStatusNotificationSchema, - ElicitationCompleteNotificationSchema -]); -var ServerResultSchema = union([ - EmptyResultSchema, - InitializeResultSchema, - CompleteResultSchema, - GetPromptResultSchema, - ListPromptsResultSchema, - ListResourcesResultSchema, - ListResourceTemplatesResultSchema, - ReadResourceResultSchema, - CallToolResultSchema, - ListToolsResultSchema, - GetTaskResultSchema, - ListTasksResultSchema, - CreateTaskResultSchema -]); -var McpError = class _McpError extends Error { - constructor(code, message, data) { - super(`MCP error ${code}: ${message}`); - this.code = code; - this.data = data; - this.name = "McpError"; - } - /** - * Factory method to create the appropriate error type based on the error code and data - */ - static fromError(code, message, data) { - if (code === ErrorCode.UrlElicitationRequired && data) { - const errorData = data; - if (errorData.elicitations) { - return new UrlElicitationRequiredError(errorData.elicitations, message); - } - } - return new _McpError(code, message, data); - } -}; -var UrlElicitationRequiredError = class extends McpError { - constructor(elicitations, message = `URL elicitation${elicitations.length > 1 ? "s" : ""} required`) { - super(ErrorCode.UrlElicitationRequired, message, { - elicitations - }); - } - get elicitations() { - return this.data?.elicitations ?? []; - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js -function isTerminal(status) { - return status === "completed" || status === "failed" || status === "cancelled"; -} - -// node_modules/zod-to-json-schema/dist/esm/Options.js -var ignoreOverride = /* @__PURE__ */ Symbol("Let zodToJsonSchema decide on which parser to use"); -var defaultOptions = { - name: void 0, - $refStrategy: "root", - basePath: ["#"], - effectStrategy: "input", - pipeStrategy: "all", - dateStrategy: "format:date-time", - mapStrategy: "entries", - removeAdditionalStrategy: "passthrough", - allowedAdditionalProperties: true, - rejectedAdditionalProperties: false, - definitionPath: "definitions", - target: "jsonSchema7", - strictUnions: false, - definitions: {}, - errorMessages: false, - markdownDescription: false, - patternStrategy: "escape", - applyRegexFlags: false, - emailStrategy: "format:email", - base64Strategy: "contentEncoding:base64", - nameStrategy: "ref", - openAiAnyTypeName: "OpenAiAnyType" -}; -var getDefaultOptions = (options) => typeof options === "string" ? { - ...defaultOptions, - name: options -} : { - ...defaultOptions, - ...options -}; - -// node_modules/zod-to-json-schema/dist/esm/Refs.js -var getRefs = (options) => { - const _options = getDefaultOptions(options); - const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath; - return { - ..._options, - flags: { hasReferencedOpenAiAnyType: false }, - currentPath, - propertyPath: void 0, - seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [ - def._def, - { - def: def._def, - path: [..._options.basePath, _options.definitionPath, name], - // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now. - jsonSchema: void 0 - } - ])) - }; -}; - -// node_modules/zod-to-json-schema/dist/esm/errorMessages.js -function addErrorMessage(res, key, errorMessage, refs) { - if (!refs?.errorMessages) - return; - if (errorMessage) { - res.errorMessage = { - ...res.errorMessage, - [key]: errorMessage - }; - } -} -function setResponseValueAndErrors(res, key, value, errorMessage, refs) { - res[key] = value; - addErrorMessage(res, key, errorMessage, refs); -} - -// node_modules/zod-to-json-schema/dist/esm/getRelativePath.js -var getRelativePath = (pathA, pathB) => { - let i = 0; - for (; i < pathA.length && i < pathB.length; i++) { - if (pathA[i] !== pathB[i]) - break; - } - return [(pathA.length - i).toString(), ...pathB.slice(i)].join("/"); -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/any.js -function parseAnyDef(refs) { - if (refs.target !== "openAi") { - return {}; - } - const anyDefinitionPath = [ - ...refs.basePath, - refs.definitionPath, - refs.openAiAnyTypeName - ]; - refs.flags.hasReferencedOpenAiAnyType = true; - return { - $ref: refs.$refStrategy === "relative" ? getRelativePath(anyDefinitionPath, refs.currentPath) : anyDefinitionPath.join("/") - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/array.js -function parseArrayDef(def, refs) { - const res = { - type: "array" - }; - if (def.type?._def && def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) { - res.items = parseDef(def.type._def, { - ...refs, - currentPath: [...refs.currentPath, "items"] - }); - } - if (def.minLength) { - setResponseValueAndErrors(res, "minItems", def.minLength.value, def.minLength.message, refs); - } - if (def.maxLength) { - setResponseValueAndErrors(res, "maxItems", def.maxLength.value, def.maxLength.message, refs); - } - if (def.exactLength) { - setResponseValueAndErrors(res, "minItems", def.exactLength.value, def.exactLength.message, refs); - setResponseValueAndErrors(res, "maxItems", def.exactLength.value, def.exactLength.message, refs); - } - return res; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js -function parseBigintDef(def, refs) { - const res = { - type: "integer", - format: "int64" - }; - if (!def.checks) - return res; - for (const check of def.checks) { - switch (check.kind) { - case "min": - if (refs.target === "jsonSchema7") { - if (check.inclusive) { - setResponseValueAndErrors(res, "minimum", check.value, check.message, refs); - } else { - setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs); - } - } else { - if (!check.inclusive) { - res.exclusiveMinimum = true; - } - setResponseValueAndErrors(res, "minimum", check.value, check.message, refs); - } - break; - case "max": - if (refs.target === "jsonSchema7") { - if (check.inclusive) { - setResponseValueAndErrors(res, "maximum", check.value, check.message, refs); - } else { - setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs); - } - } else { - if (!check.inclusive) { - res.exclusiveMaximum = true; - } - setResponseValueAndErrors(res, "maximum", check.value, check.message, refs); - } - break; - case "multipleOf": - setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs); - break; - } - } - return res; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js -function parseBooleanDef() { - return { - type: "boolean" - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/branded.js -function parseBrandedDef(_def, refs) { - return parseDef(_def.type._def, refs); -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/catch.js -var parseCatchDef = (def, refs) => { - return parseDef(def.innerType._def, refs); -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/date.js -function parseDateDef(def, refs, overrideDateStrategy) { - const strategy = overrideDateStrategy ?? refs.dateStrategy; - if (Array.isArray(strategy)) { - return { - anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)) - }; - } - switch (strategy) { - case "string": - case "format:date-time": - return { - type: "string", - format: "date-time" - }; - case "format:date": - return { - type: "string", - format: "date" - }; - case "integer": - return integerDateParser(def, refs); - } -} -var integerDateParser = (def, refs) => { - const res = { - type: "integer", - format: "unix-time" - }; - if (refs.target === "openApi3") { - return res; - } - for (const check of def.checks) { - switch (check.kind) { - case "min": - setResponseValueAndErrors( - res, - "minimum", - check.value, - // This is in milliseconds - check.message, - refs - ); - break; - case "max": - setResponseValueAndErrors( - res, - "maximum", - check.value, - // This is in milliseconds - check.message, - refs - ); - break; - } - } - return res; -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/default.js -function parseDefaultDef(_def, refs) { - return { - ...parseDef(_def.innerType._def, refs), - default: _def.defaultValue() - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/effects.js -function parseEffectsDef(_def, refs) { - return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs); -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/enum.js -function parseEnumDef(def) { - return { - type: "string", - enum: Array.from(def.values) - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js -var isJsonSchema7AllOfType = (type) => { - if ("type" in type && type.type === "string") - return false; - return "allOf" in type; -}; -function parseIntersectionDef(def, refs) { - const allOf = [ - parseDef(def.left._def, { - ...refs, - currentPath: [...refs.currentPath, "allOf", "0"] - }), - parseDef(def.right._def, { - ...refs, - currentPath: [...refs.currentPath, "allOf", "1"] - }) - ].filter((x) => !!x); - let unevaluatedProperties = refs.target === "jsonSchema2019-09" ? { unevaluatedProperties: false } : void 0; - const mergedAllOf = []; - allOf.forEach((schema) => { - if (isJsonSchema7AllOfType(schema)) { - mergedAllOf.push(...schema.allOf); - if (schema.unevaluatedProperties === void 0) { - unevaluatedProperties = void 0; - } - } else { - let nestedSchema = schema; - if ("additionalProperties" in schema && schema.additionalProperties === false) { - const { additionalProperties, ...rest } = schema; - nestedSchema = rest; - } else { - unevaluatedProperties = void 0; - } - mergedAllOf.push(nestedSchema); - } - }); - return mergedAllOf.length ? { - allOf: mergedAllOf, - ...unevaluatedProperties - } : void 0; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/literal.js -function parseLiteralDef(def, refs) { - const parsedType = typeof def.value; - if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") { - return { - type: Array.isArray(def.value) ? "array" : "object" - }; - } - if (refs.target === "openApi3") { - return { - type: parsedType === "bigint" ? "integer" : parsedType, - enum: [def.value] - }; - } - return { - type: parsedType === "bigint" ? "integer" : parsedType, - const: def.value - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/string.js -var emojiRegex2 = void 0; -var zodPatterns = { - /** - * `c` was changed to `[cC]` to replicate /i flag - */ - cuid: /^[cC][^\s-]{8,}$/, - cuid2: /^[0-9a-z]+$/, - ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/, - /** - * `a-z` was added to replicate /i flag - */ - email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/, - /** - * Constructed a valid Unicode RegExp - * - * Lazily instantiate since this type of regex isn't supported - * in all envs (e.g. React Native). - * - * See: - * https://github.com/colinhacks/zod/issues/2433 - * Fix in Zod: - * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b - */ - emoji: () => { - if (emojiRegex2 === void 0) { - emojiRegex2 = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u"); - } - return emojiRegex2; - }, - /** - * Unused - */ - uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/, - /** - * Unused - */ - ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/, - ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/, - /** - * Unused - */ - ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/, - ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/, - base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/, - base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/, - nanoid: /^[a-zA-Z0-9_-]{21}$/, - jwt: /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/ -}; -function parseStringDef(def, refs) { - const res = { - type: "string" - }; - if (def.checks) { - for (const check of def.checks) { - switch (check.kind) { - case "min": - setResponseValueAndErrors(res, "minLength", typeof res.minLength === "number" ? Math.max(res.minLength, check.value) : check.value, check.message, refs); - break; - case "max": - setResponseValueAndErrors(res, "maxLength", typeof res.maxLength === "number" ? Math.min(res.maxLength, check.value) : check.value, check.message, refs); - break; - case "email": - switch (refs.emailStrategy) { - case "format:email": - addFormat(res, "email", check.message, refs); - break; - case "format:idn-email": - addFormat(res, "idn-email", check.message, refs); - break; - case "pattern:zod": - addPattern(res, zodPatterns.email, check.message, refs); - break; - } - break; - case "url": - addFormat(res, "uri", check.message, refs); - break; - case "uuid": - addFormat(res, "uuid", check.message, refs); - break; - case "regex": - addPattern(res, check.regex, check.message, refs); - break; - case "cuid": - addPattern(res, zodPatterns.cuid, check.message, refs); - break; - case "cuid2": - addPattern(res, zodPatterns.cuid2, check.message, refs); - break; - case "startsWith": - addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs); - break; - case "endsWith": - addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs); - break; - case "datetime": - addFormat(res, "date-time", check.message, refs); - break; - case "date": - addFormat(res, "date", check.message, refs); - break; - case "time": - addFormat(res, "time", check.message, refs); - break; - case "duration": - addFormat(res, "duration", check.message, refs); - break; - case "length": - setResponseValueAndErrors(res, "minLength", typeof res.minLength === "number" ? Math.max(res.minLength, check.value) : check.value, check.message, refs); - setResponseValueAndErrors(res, "maxLength", typeof res.maxLength === "number" ? Math.min(res.maxLength, check.value) : check.value, check.message, refs); - break; - case "includes": { - addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs); - break; - } - case "ip": { - if (check.version !== "v6") { - addFormat(res, "ipv4", check.message, refs); - } - if (check.version !== "v4") { - addFormat(res, "ipv6", check.message, refs); - } - break; - } - case "base64url": - addPattern(res, zodPatterns.base64url, check.message, refs); - break; - case "jwt": - addPattern(res, zodPatterns.jwt, check.message, refs); - break; - case "cidr": { - if (check.version !== "v6") { - addPattern(res, zodPatterns.ipv4Cidr, check.message, refs); - } - if (check.version !== "v4") { - addPattern(res, zodPatterns.ipv6Cidr, check.message, refs); - } - break; - } - case "emoji": - addPattern(res, zodPatterns.emoji(), check.message, refs); - break; - case "ulid": { - addPattern(res, zodPatterns.ulid, check.message, refs); - break; - } - case "base64": { - switch (refs.base64Strategy) { - case "format:binary": { - addFormat(res, "binary", check.message, refs); - break; - } - case "contentEncoding:base64": { - setResponseValueAndErrors(res, "contentEncoding", "base64", check.message, refs); - break; - } - case "pattern:zod": { - addPattern(res, zodPatterns.base64, check.message, refs); - break; - } - } - break; - } - case "nanoid": { - addPattern(res, zodPatterns.nanoid, check.message, refs); - } - case "toLowerCase": - case "toUpperCase": - case "trim": - break; - default: - /* @__PURE__ */ ((_) => { - })(check); - } - } - } - return res; -} -function escapeLiteralCheckValue(literal2, refs) { - return refs.patternStrategy === "escape" ? escapeNonAlphaNumeric(literal2) : literal2; -} -var ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789"); -function escapeNonAlphaNumeric(source) { - let result = ""; - for (let i = 0; i < source.length; i++) { - if (!ALPHA_NUMERIC.has(source[i])) { - result += "\\"; - } - result += source[i]; - } - return result; -} -function addFormat(schema, value, message, refs) { - if (schema.format || schema.anyOf?.some((x) => x.format)) { - if (!schema.anyOf) { - schema.anyOf = []; - } - if (schema.format) { - schema.anyOf.push({ - format: schema.format, - ...schema.errorMessage && refs.errorMessages && { - errorMessage: { format: schema.errorMessage.format } - } - }); - delete schema.format; - if (schema.errorMessage) { - delete schema.errorMessage.format; - if (Object.keys(schema.errorMessage).length === 0) { - delete schema.errorMessage; - } - } - } - schema.anyOf.push({ - format: value, - ...message && refs.errorMessages && { errorMessage: { format: message } } - }); - } else { - setResponseValueAndErrors(schema, "format", value, message, refs); - } -} -function addPattern(schema, regex, message, refs) { - if (schema.pattern || schema.allOf?.some((x) => x.pattern)) { - if (!schema.allOf) { - schema.allOf = []; - } - if (schema.pattern) { - schema.allOf.push({ - pattern: schema.pattern, - ...schema.errorMessage && refs.errorMessages && { - errorMessage: { pattern: schema.errorMessage.pattern } - } - }); - delete schema.pattern; - if (schema.errorMessage) { - delete schema.errorMessage.pattern; - if (Object.keys(schema.errorMessage).length === 0) { - delete schema.errorMessage; - } - } - } - schema.allOf.push({ - pattern: stringifyRegExpWithFlags(regex, refs), - ...message && refs.errorMessages && { errorMessage: { pattern: message } } - }); - } else { - setResponseValueAndErrors(schema, "pattern", stringifyRegExpWithFlags(regex, refs), message, refs); - } -} -function stringifyRegExpWithFlags(regex, refs) { - if (!refs.applyRegexFlags || !regex.flags) { - return regex.source; - } - const flags = { - i: regex.flags.includes("i"), - m: regex.flags.includes("m"), - s: regex.flags.includes("s") - // `.` matches newlines - }; - const source = flags.i ? regex.source.toLowerCase() : regex.source; - let pattern = ""; - let isEscaped = false; - let inCharGroup = false; - let inCharRange = false; - for (let i = 0; i < source.length; i++) { - if (isEscaped) { - pattern += source[i]; - isEscaped = false; - continue; - } - if (flags.i) { - if (inCharGroup) { - if (source[i].match(/[a-z]/)) { - if (inCharRange) { - pattern += source[i]; - pattern += `${source[i - 2]}-${source[i]}`.toUpperCase(); - inCharRange = false; - } else if (source[i + 1] === "-" && source[i + 2]?.match(/[a-z]/)) { - pattern += source[i]; - inCharRange = true; - } else { - pattern += `${source[i]}${source[i].toUpperCase()}`; - } - continue; - } - } else if (source[i].match(/[a-z]/)) { - pattern += `[${source[i]}${source[i].toUpperCase()}]`; - continue; - } - } - if (flags.m) { - if (source[i] === "^") { - pattern += `(^|(?<=[\r -]))`; - continue; - } else if (source[i] === "$") { - pattern += `($|(?=[\r -]))`; - continue; - } - } - if (flags.s && source[i] === ".") { - pattern += inCharGroup ? `${source[i]}\r -` : `[${source[i]}\r -]`; - continue; - } - pattern += source[i]; - if (source[i] === "\\") { - isEscaped = true; - } else if (inCharGroup && source[i] === "]") { - inCharGroup = false; - } else if (!inCharGroup && source[i] === "[") { - inCharGroup = true; - } - } - try { - new RegExp(pattern); - } catch { - console.warn(`Could not convert regex pattern at ${refs.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`); - return regex.source; - } - return pattern; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/record.js -function parseRecordDef(def, refs) { - if (refs.target === "openAi") { - console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."); - } - if (refs.target === "openApi3" && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) { - return { - type: "object", - required: def.keyType._def.values, - properties: def.keyType._def.values.reduce((acc, key) => ({ - ...acc, - [key]: parseDef(def.valueType._def, { - ...refs, - currentPath: [...refs.currentPath, "properties", key] - }) ?? parseAnyDef(refs) - }), {}), - additionalProperties: refs.rejectedAdditionalProperties - }; - } - const schema = { - type: "object", - additionalProperties: parseDef(def.valueType._def, { - ...refs, - currentPath: [...refs.currentPath, "additionalProperties"] - }) ?? refs.allowedAdditionalProperties - }; - if (refs.target === "openApi3") { - return schema; - } - if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) { - const { type, ...keyType } = parseStringDef(def.keyType._def, refs); - return { - ...schema, - propertyNames: keyType - }; - } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) { - return { - ...schema, - propertyNames: { - enum: def.keyType._def.values - } - }; - } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.type._def.checks?.length) { - const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs); - return { - ...schema, - propertyNames: keyType - }; - } - return schema; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/map.js -function parseMapDef(def, refs) { - if (refs.mapStrategy === "record") { - return parseRecordDef(def, refs); - } - const keys = parseDef(def.keyType._def, { - ...refs, - currentPath: [...refs.currentPath, "items", "items", "0"] - }) || parseAnyDef(refs); - const values = parseDef(def.valueType._def, { - ...refs, - currentPath: [...refs.currentPath, "items", "items", "1"] - }) || parseAnyDef(refs); - return { - type: "array", - maxItems: 125, - items: { - type: "array", - items: [keys, values], - minItems: 2, - maxItems: 2 - } - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js -function parseNativeEnumDef(def) { - const object3 = def.values; - const actualKeys = Object.keys(def.values).filter((key) => { - return typeof object3[object3[key]] !== "number"; - }); - const actualValues = actualKeys.map((key) => object3[key]); - const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values))); - return { - type: parsedTypes.length === 1 ? parsedTypes[0] === "string" ? "string" : "number" : ["string", "number"], - enum: actualValues - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/never.js -function parseNeverDef(refs) { - return refs.target === "openAi" ? void 0 : { - not: parseAnyDef({ - ...refs, - currentPath: [...refs.currentPath, "not"] - }) - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/null.js -function parseNullDef(refs) { - return refs.target === "openApi3" ? { - enum: ["null"], - nullable: true - } : { - type: "null" - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/union.js -var primitiveMappings = { - ZodString: "string", - ZodNumber: "number", - ZodBigInt: "integer", - ZodBoolean: "boolean", - ZodNull: "null" -}; -function parseUnionDef(def, refs) { - if (refs.target === "openApi3") - return asAnyOf(def, refs); - const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options; - if (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) { - const types = options.reduce((types2, x) => { - const type = primitiveMappings[x._def.typeName]; - return type && !types2.includes(type) ? [...types2, type] : types2; - }, []); - return { - type: types.length > 1 ? types : types[0] - }; - } else if (options.every((x) => x._def.typeName === "ZodLiteral" && !x.description)) { - const types = options.reduce((acc, x) => { - const type = typeof x._def.value; - switch (type) { - case "string": - case "number": - case "boolean": - return [...acc, type]; - case "bigint": - return [...acc, "integer"]; - case "object": - if (x._def.value === null) - return [...acc, "null"]; - case "symbol": - case "undefined": - case "function": - default: - return acc; - } - }, []); - if (types.length === options.length) { - const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i); - return { - type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0], - enum: options.reduce((acc, x) => { - return acc.includes(x._def.value) ? acc : [...acc, x._def.value]; - }, []) - }; - } - } else if (options.every((x) => x._def.typeName === "ZodEnum")) { - return { - type: "string", - enum: options.reduce((acc, x) => [ - ...acc, - ...x._def.values.filter((x2) => !acc.includes(x2)) - ], []) - }; - } - return asAnyOf(def, refs); -} -var asAnyOf = (def, refs) => { - const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map((x, i) => parseDef(x._def, { - ...refs, - currentPath: [...refs.currentPath, "anyOf", `${i}`] - })).filter((x) => !!x && (!refs.strictUnions || typeof x === "object" && Object.keys(x).length > 0)); - return anyOf.length ? { anyOf } : void 0; -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js -function parseNullableDef(def, refs) { - if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(def.innerType._def.typeName) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) { - if (refs.target === "openApi3") { - return { - type: primitiveMappings[def.innerType._def.typeName], - nullable: true - }; - } - return { - type: [ - primitiveMappings[def.innerType._def.typeName], - "null" - ] - }; - } - if (refs.target === "openApi3") { - const base2 = parseDef(def.innerType._def, { - ...refs, - currentPath: [...refs.currentPath] - }); - if (base2 && "$ref" in base2) - return { allOf: [base2], nullable: true }; - return base2 && { ...base2, nullable: true }; - } - const base = parseDef(def.innerType._def, { - ...refs, - currentPath: [...refs.currentPath, "anyOf", "0"] - }); - return base && { anyOf: [base, { type: "null" }] }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/number.js -function parseNumberDef(def, refs) { - const res = { - type: "number" - }; - if (!def.checks) - return res; - for (const check of def.checks) { - switch (check.kind) { - case "int": - res.type = "integer"; - addErrorMessage(res, "type", check.message, refs); - break; - case "min": - if (refs.target === "jsonSchema7") { - if (check.inclusive) { - setResponseValueAndErrors(res, "minimum", check.value, check.message, refs); - } else { - setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs); - } - } else { - if (!check.inclusive) { - res.exclusiveMinimum = true; - } - setResponseValueAndErrors(res, "minimum", check.value, check.message, refs); - } - break; - case "max": - if (refs.target === "jsonSchema7") { - if (check.inclusive) { - setResponseValueAndErrors(res, "maximum", check.value, check.message, refs); - } else { - setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs); - } - } else { - if (!check.inclusive) { - res.exclusiveMaximum = true; - } - setResponseValueAndErrors(res, "maximum", check.value, check.message, refs); - } - break; - case "multipleOf": - setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs); - break; - } - } - return res; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/object.js -function parseObjectDef(def, refs) { - const forceOptionalIntoNullable = refs.target === "openAi"; - const result = { - type: "object", - properties: {} - }; - const required2 = []; - const shape = def.shape(); - for (const propName in shape) { - let propDef = shape[propName]; - if (propDef === void 0 || propDef._def === void 0) { - continue; - } - let propOptional = safeIsOptional(propDef); - if (propOptional && forceOptionalIntoNullable) { - if (propDef._def.typeName === "ZodOptional") { - propDef = propDef._def.innerType; - } - if (!propDef.isNullable()) { - propDef = propDef.nullable(); - } - propOptional = false; - } - const parsedDef = parseDef(propDef._def, { - ...refs, - currentPath: [...refs.currentPath, "properties", propName], - propertyPath: [...refs.currentPath, "properties", propName] - }); - if (parsedDef === void 0) { - continue; - } - result.properties[propName] = parsedDef; - if (!propOptional) { - required2.push(propName); - } - } - if (required2.length) { - result.required = required2; - } - const additionalProperties = decideAdditionalProperties(def, refs); - if (additionalProperties !== void 0) { - result.additionalProperties = additionalProperties; - } - return result; -} -function decideAdditionalProperties(def, refs) { - if (def.catchall._def.typeName !== "ZodNever") { - return parseDef(def.catchall._def, { - ...refs, - currentPath: [...refs.currentPath, "additionalProperties"] - }); - } - switch (def.unknownKeys) { - case "passthrough": - return refs.allowedAdditionalProperties; - case "strict": - return refs.rejectedAdditionalProperties; - case "strip": - return refs.removeAdditionalStrategy === "strict" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties; - } -} -function safeIsOptional(schema) { - try { - return schema.isOptional(); - } catch { - return true; - } -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/optional.js -var parseOptionalDef = (def, refs) => { - if (refs.currentPath.toString() === refs.propertyPath?.toString()) { - return parseDef(def.innerType._def, refs); - } - const innerSchema = parseDef(def.innerType._def, { - ...refs, - currentPath: [...refs.currentPath, "anyOf", "1"] - }); - return innerSchema ? { - anyOf: [ - { - not: parseAnyDef(refs) - }, - innerSchema - ] - } : parseAnyDef(refs); -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js -var parsePipelineDef = (def, refs) => { - if (refs.pipeStrategy === "input") { - return parseDef(def.in._def, refs); - } else if (refs.pipeStrategy === "output") { - return parseDef(def.out._def, refs); - } - const a = parseDef(def.in._def, { - ...refs, - currentPath: [...refs.currentPath, "allOf", "0"] - }); - const b = parseDef(def.out._def, { - ...refs, - currentPath: [...refs.currentPath, "allOf", a ? "1" : "0"] - }); - return { - allOf: [a, b].filter((x) => x !== void 0) - }; -}; - -// node_modules/zod-to-json-schema/dist/esm/parsers/promise.js -function parsePromiseDef(def, refs) { - return parseDef(def.type._def, refs); -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/set.js -function parseSetDef(def, refs) { - const items = parseDef(def.valueType._def, { - ...refs, - currentPath: [...refs.currentPath, "items"] - }); - const schema = { - type: "array", - uniqueItems: true, - items - }; - if (def.minSize) { - setResponseValueAndErrors(schema, "minItems", def.minSize.value, def.minSize.message, refs); - } - if (def.maxSize) { - setResponseValueAndErrors(schema, "maxItems", def.maxSize.value, def.maxSize.message, refs); - } - return schema; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js -function parseTupleDef(def, refs) { - if (def.rest) { - return { - type: "array", - minItems: def.items.length, - items: def.items.map((x, i) => parseDef(x._def, { - ...refs, - currentPath: [...refs.currentPath, "items", `${i}`] - })).reduce((acc, x) => x === void 0 ? acc : [...acc, x], []), - additionalItems: parseDef(def.rest._def, { - ...refs, - currentPath: [...refs.currentPath, "additionalItems"] - }) - }; - } else { - return { - type: "array", - minItems: def.items.length, - maxItems: def.items.length, - items: def.items.map((x, i) => parseDef(x._def, { - ...refs, - currentPath: [...refs.currentPath, "items", `${i}`] - })).reduce((acc, x) => x === void 0 ? acc : [...acc, x], []) - }; - } -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js -function parseUndefinedDef(refs) { - return { - not: parseAnyDef(refs) - }; -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js -function parseUnknownDef(refs) { - return parseAnyDef(refs); -} - -// node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js -var parseReadonlyDef = (def, refs) => { - return parseDef(def.innerType._def, refs); -}; - -// node_modules/zod-to-json-schema/dist/esm/selectParser.js -var selectParser = (def, typeName, refs) => { - switch (typeName) { - case ZodFirstPartyTypeKind.ZodString: - return parseStringDef(def, refs); - case ZodFirstPartyTypeKind.ZodNumber: - return parseNumberDef(def, refs); - case ZodFirstPartyTypeKind.ZodObject: - return parseObjectDef(def, refs); - case ZodFirstPartyTypeKind.ZodBigInt: - return parseBigintDef(def, refs); - case ZodFirstPartyTypeKind.ZodBoolean: - return parseBooleanDef(); - case ZodFirstPartyTypeKind.ZodDate: - return parseDateDef(def, refs); - case ZodFirstPartyTypeKind.ZodUndefined: - return parseUndefinedDef(refs); - case ZodFirstPartyTypeKind.ZodNull: - return parseNullDef(refs); - case ZodFirstPartyTypeKind.ZodArray: - return parseArrayDef(def, refs); - case ZodFirstPartyTypeKind.ZodUnion: - case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: - return parseUnionDef(def, refs); - case ZodFirstPartyTypeKind.ZodIntersection: - return parseIntersectionDef(def, refs); - case ZodFirstPartyTypeKind.ZodTuple: - return parseTupleDef(def, refs); - case ZodFirstPartyTypeKind.ZodRecord: - return parseRecordDef(def, refs); - case ZodFirstPartyTypeKind.ZodLiteral: - return parseLiteralDef(def, refs); - case ZodFirstPartyTypeKind.ZodEnum: - return parseEnumDef(def); - case ZodFirstPartyTypeKind.ZodNativeEnum: - return parseNativeEnumDef(def); - case ZodFirstPartyTypeKind.ZodNullable: - return parseNullableDef(def, refs); - case ZodFirstPartyTypeKind.ZodOptional: - return parseOptionalDef(def, refs); - case ZodFirstPartyTypeKind.ZodMap: - return parseMapDef(def, refs); - case ZodFirstPartyTypeKind.ZodSet: - return parseSetDef(def, refs); - case ZodFirstPartyTypeKind.ZodLazy: - return () => def.getter()._def; - case ZodFirstPartyTypeKind.ZodPromise: - return parsePromiseDef(def, refs); - case ZodFirstPartyTypeKind.ZodNaN: - case ZodFirstPartyTypeKind.ZodNever: - return parseNeverDef(refs); - case ZodFirstPartyTypeKind.ZodEffects: - return parseEffectsDef(def, refs); - case ZodFirstPartyTypeKind.ZodAny: - return parseAnyDef(refs); - case ZodFirstPartyTypeKind.ZodUnknown: - return parseUnknownDef(refs); - case ZodFirstPartyTypeKind.ZodDefault: - return parseDefaultDef(def, refs); - case ZodFirstPartyTypeKind.ZodBranded: - return parseBrandedDef(def, refs); - case ZodFirstPartyTypeKind.ZodReadonly: - return parseReadonlyDef(def, refs); - case ZodFirstPartyTypeKind.ZodCatch: - return parseCatchDef(def, refs); - case ZodFirstPartyTypeKind.ZodPipeline: - return parsePipelineDef(def, refs); - case ZodFirstPartyTypeKind.ZodFunction: - case ZodFirstPartyTypeKind.ZodVoid: - case ZodFirstPartyTypeKind.ZodSymbol: - return void 0; - default: - return /* @__PURE__ */ ((_) => void 0)(typeName); - } -}; - -// node_modules/zod-to-json-schema/dist/esm/parseDef.js -function parseDef(def, refs, forceResolution = false) { - const seenItem = refs.seen.get(def); - if (refs.override) { - const overrideResult = refs.override?.(def, refs, seenItem, forceResolution); - if (overrideResult !== ignoreOverride) { - return overrideResult; - } - } - if (seenItem && !forceResolution) { - const seenSchema = get$ref(seenItem, refs); - if (seenSchema !== void 0) { - return seenSchema; - } - } - const newItem = { def, path: refs.currentPath, jsonSchema: void 0 }; - refs.seen.set(def, newItem); - const jsonSchemaOrGetter = selectParser(def, def.typeName, refs); - const jsonSchema = typeof jsonSchemaOrGetter === "function" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter; - if (jsonSchema) { - addMeta(def, refs, jsonSchema); - } - if (refs.postProcess) { - const postProcessResult = refs.postProcess(jsonSchema, def, refs); - newItem.jsonSchema = jsonSchema; - return postProcessResult; - } - newItem.jsonSchema = jsonSchema; - return jsonSchema; -} -var get$ref = (item, refs) => { - switch (refs.$refStrategy) { - case "root": - return { $ref: item.path.join("/") }; - case "relative": - return { $ref: getRelativePath(refs.currentPath, item.path) }; - case "none": - case "seen": { - if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) { - console.warn(`Recursive reference detected at ${refs.currentPath.join("/")}! Defaulting to any`); - return parseAnyDef(refs); - } - return refs.$refStrategy === "seen" ? parseAnyDef(refs) : void 0; - } - } -}; -var addMeta = (def, refs, jsonSchema) => { - if (def.description) { - jsonSchema.description = def.description; - if (refs.markdownDescription) { - jsonSchema.markdownDescription = def.description; - } - } - return jsonSchema; -}; - -// node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js -var zodToJsonSchema = (schema, options) => { - const refs = getRefs(options); - let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name2, schema2]) => ({ - ...acc, - [name2]: parseDef(schema2._def, { - ...refs, - currentPath: [...refs.basePath, refs.definitionPath, name2] - }, true) ?? parseAnyDef(refs) - }), {}) : void 0; - const name = typeof options === "string" ? options : options?.nameStrategy === "title" ? void 0 : options?.name; - const main2 = parseDef(schema._def, name === void 0 ? refs : { - ...refs, - currentPath: [...refs.basePath, refs.definitionPath, name] - }, false) ?? parseAnyDef(refs); - const title = typeof options === "object" && options.name !== void 0 && options.nameStrategy === "title" ? options.name : void 0; - if (title !== void 0) { - main2.title = title; - } - if (refs.flags.hasReferencedOpenAiAnyType) { - if (!definitions) { - definitions = {}; - } - if (!definitions[refs.openAiAnyTypeName]) { - definitions[refs.openAiAnyTypeName] = { - // Skipping "object" as no properties can be defined and additionalProperties must be "false" - type: ["string", "number", "integer", "boolean", "array", "null"], - items: { - $ref: refs.$refStrategy === "relative" ? "1" : [ - ...refs.basePath, - refs.definitionPath, - refs.openAiAnyTypeName - ].join("/") - } - }; - } - } - const combined = name === void 0 ? definitions ? { - ...main2, - [refs.definitionPath]: definitions - } : main2 : { - $ref: [ - ...refs.$refStrategy === "relative" ? [] : refs.basePath, - refs.definitionPath, - name - ].join("/"), - [refs.definitionPath]: { - ...definitions, - [name]: main2 - } - }; - if (refs.target === "jsonSchema7") { - combined.$schema = "http://json-schema.org/draft-07/schema#"; - } else if (refs.target === "jsonSchema2019-09" || refs.target === "openAi") { - combined.$schema = "https://json-schema.org/draft/2019-09/schema#"; - } - if (refs.target === "openAi" && ("anyOf" in combined || "oneOf" in combined || "allOf" in combined || "type" in combined && Array.isArray(combined.type))) { - console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."); - } - return combined; -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js -function mapMiniTarget(t) { - if (!t) - return "draft-7"; - if (t === "jsonSchema7" || t === "draft-7") - return "draft-7"; - if (t === "jsonSchema2019-09" || t === "draft-2020-12") - return "draft-2020-12"; - return "draft-7"; -} -function toJsonSchemaCompat(schema, opts) { - if (isZ4Schema(schema)) { - return toJSONSchema(schema, { - target: mapMiniTarget(opts?.target), - io: opts?.pipeStrategy ?? "input" - }); - } - return zodToJsonSchema(schema, { - strictUnions: opts?.strictUnions ?? true, - pipeStrategy: opts?.pipeStrategy ?? "input" - }); -} -function getMethodLiteral(schema) { - const shape = getObjectShape(schema); - const methodSchema = shape?.method; - if (!methodSchema) { - throw new Error("Schema is missing a method literal"); - } - const value = getLiteralValue(methodSchema); - if (typeof value !== "string") { - throw new Error("Schema method literal must be a string"); - } - return value; -} -function parseWithCompat(schema, data) { - const result = safeParse2(schema, data); - if (!result.success) { - throw result.error; - } - return result.data; -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js -var DEFAULT_REQUEST_TIMEOUT_MSEC = 6e4; -var Protocol = class { - constructor(_options) { - this._options = _options; - this._requestMessageId = 0; - this._requestHandlers = /* @__PURE__ */ new Map(); - this._requestHandlerAbortControllers = /* @__PURE__ */ new Map(); - this._notificationHandlers = /* @__PURE__ */ new Map(); - this._responseHandlers = /* @__PURE__ */ new Map(); - this._progressHandlers = /* @__PURE__ */ new Map(); - this._timeoutInfo = /* @__PURE__ */ new Map(); - this._pendingDebouncedNotifications = /* @__PURE__ */ new Set(); - this._taskProgressTokens = /* @__PURE__ */ new Map(); - this._requestResolvers = /* @__PURE__ */ new Map(); - this.setNotificationHandler(CancelledNotificationSchema, (notification) => { - this._oncancel(notification); - }); - this.setNotificationHandler(ProgressNotificationSchema, (notification) => { - this._onprogress(notification); - }); - this.setRequestHandler( - PingRequestSchema, - // Automatic pong by default. - (_request) => ({}) - ); - this._taskStore = _options?.taskStore; - this._taskMessageQueue = _options?.taskMessageQueue; - if (this._taskStore) { - this.setRequestHandler(GetTaskRequestSchema, async (request, extra) => { - const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId); - if (!task) { - throw new McpError(ErrorCode.InvalidParams, "Failed to retrieve task: Task not found"); - } - return { - ...task - }; - }); - this.setRequestHandler(GetTaskPayloadRequestSchema, async (request, extra) => { - const handleTaskResult = async () => { - const taskId = request.params.taskId; - if (this._taskMessageQueue) { - let queuedMessage; - while (queuedMessage = await this._taskMessageQueue.dequeue(taskId, extra.sessionId)) { - if (queuedMessage.type === "response" || queuedMessage.type === "error") { - const message = queuedMessage.message; - const requestId = message.id; - const resolver = this._requestResolvers.get(requestId); - if (resolver) { - this._requestResolvers.delete(requestId); - if (queuedMessage.type === "response") { - resolver(message); - } else { - const errorMessage = message; - const error2 = new McpError(errorMessage.error.code, errorMessage.error.message, errorMessage.error.data); - resolver(error2); - } - } else { - const messageType = queuedMessage.type === "response" ? "Response" : "Error"; - this._onerror(new Error(`${messageType} handler missing for request ${requestId}`)); - } - continue; - } - await this._transport?.send(queuedMessage.message, { relatedRequestId: extra.requestId }); - } - } - const task = await this._taskStore.getTask(taskId, extra.sessionId); - if (!task) { - throw new McpError(ErrorCode.InvalidParams, `Task not found: ${taskId}`); - } - if (!isTerminal(task.status)) { - await this._waitForTaskUpdate(taskId, extra.signal); - return await handleTaskResult(); - } - if (isTerminal(task.status)) { - const result = await this._taskStore.getTaskResult(taskId, extra.sessionId); - this._clearTaskQueue(taskId); - return { - ...result, - _meta: { - ...result._meta, - [RELATED_TASK_META_KEY]: { - taskId - } - } - }; - } - return await handleTaskResult(); - }; - return await handleTaskResult(); - }); - this.setRequestHandler(ListTasksRequestSchema, async (request, extra) => { - try { - const { tasks, nextCursor } = await this._taskStore.listTasks(request.params?.cursor, extra.sessionId); - return { - tasks, - nextCursor, - _meta: {} - }; - } catch (error2) { - throw new McpError(ErrorCode.InvalidParams, `Failed to list tasks: ${error2 instanceof Error ? error2.message : String(error2)}`); - } - }); - this.setRequestHandler(CancelTaskRequestSchema, async (request, extra) => { - try { - const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId); - if (!task) { - throw new McpError(ErrorCode.InvalidParams, `Task not found: ${request.params.taskId}`); - } - if (isTerminal(task.status)) { - throw new McpError(ErrorCode.InvalidParams, `Cannot cancel task in terminal status: ${task.status}`); - } - await this._taskStore.updateTaskStatus(request.params.taskId, "cancelled", "Client cancelled task execution.", extra.sessionId); - this._clearTaskQueue(request.params.taskId); - const cancelledTask = await this._taskStore.getTask(request.params.taskId, extra.sessionId); - if (!cancelledTask) { - throw new McpError(ErrorCode.InvalidParams, `Task not found after cancellation: ${request.params.taskId}`); - } - return { - _meta: {}, - ...cancelledTask - }; - } catch (error2) { - if (error2 instanceof McpError) { - throw error2; - } - throw new McpError(ErrorCode.InvalidRequest, `Failed to cancel task: ${error2 instanceof Error ? error2.message : String(error2)}`); - } - }); - } - } - async _oncancel(notification) { - if (!notification.params.requestId) { - return; - } - const controller = this._requestHandlerAbortControllers.get(notification.params.requestId); - controller?.abort(notification.params.reason); - } - _setupTimeout(messageId, timeout, maxTotalTimeout, onTimeout, resetTimeoutOnProgress = false) { - this._timeoutInfo.set(messageId, { - timeoutId: setTimeout(onTimeout, timeout), - startTime: Date.now(), - timeout, - maxTotalTimeout, - resetTimeoutOnProgress, - onTimeout - }); - } - _resetTimeout(messageId) { - const info2 = this._timeoutInfo.get(messageId); - if (!info2) - return false; - const totalElapsed = Date.now() - info2.startTime; - if (info2.maxTotalTimeout && totalElapsed >= info2.maxTotalTimeout) { - this._timeoutInfo.delete(messageId); - throw McpError.fromError(ErrorCode.RequestTimeout, "Maximum total timeout exceeded", { - maxTotalTimeout: info2.maxTotalTimeout, - totalElapsed - }); - } - clearTimeout(info2.timeoutId); - info2.timeoutId = setTimeout(info2.onTimeout, info2.timeout); - return true; - } - _cleanupTimeout(messageId) { - const info2 = this._timeoutInfo.get(messageId); - if (info2) { - clearTimeout(info2.timeoutId); - this._timeoutInfo.delete(messageId); - } - } - /** - * Attaches to the given transport, starts it, and starts listening for messages. - * - * The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward. - */ - async connect(transport) { - if (this._transport) { - throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection."); - } - this._transport = transport; - const _onclose = this.transport?.onclose; - this._transport.onclose = () => { - _onclose?.(); - this._onclose(); - }; - const _onerror = this.transport?.onerror; - this._transport.onerror = (error2) => { - _onerror?.(error2); - this._onerror(error2); - }; - const _onmessage = this._transport?.onmessage; - this._transport.onmessage = (message, extra) => { - _onmessage?.(message, extra); - if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) { - this._onresponse(message); - } else if (isJSONRPCRequest(message)) { - this._onrequest(message, extra); - } else if (isJSONRPCNotification(message)) { - this._onnotification(message); - } else { - this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`)); - } - }; - await this._transport.start(); - } - _onclose() { - const responseHandlers = this._responseHandlers; - this._responseHandlers = /* @__PURE__ */ new Map(); - this._progressHandlers.clear(); - this._taskProgressTokens.clear(); - this._pendingDebouncedNotifications.clear(); - for (const controller of this._requestHandlerAbortControllers.values()) { - controller.abort(); - } - this._requestHandlerAbortControllers.clear(); - const error2 = McpError.fromError(ErrorCode.ConnectionClosed, "Connection closed"); - this._transport = void 0; - this.onclose?.(); - for (const handler of responseHandlers.values()) { - handler(error2); - } - } - _onerror(error2) { - this.onerror?.(error2); - } - _onnotification(notification) { - const handler = this._notificationHandlers.get(notification.method) ?? this.fallbackNotificationHandler; - if (handler === void 0) { - return; - } - Promise.resolve().then(() => handler(notification)).catch((error2) => this._onerror(new Error(`Uncaught error in notification handler: ${error2}`))); - } - _onrequest(request, extra) { - const handler = this._requestHandlers.get(request.method) ?? this.fallbackRequestHandler; - const capturedTransport = this._transport; - const relatedTaskId = request.params?._meta?.[RELATED_TASK_META_KEY]?.taskId; - if (handler === void 0) { - const errorResponse = { - jsonrpc: "2.0", - id: request.id, - error: { - code: ErrorCode.MethodNotFound, - message: "Method not found" - } - }; - if (relatedTaskId && this._taskMessageQueue) { - this._enqueueTaskMessage(relatedTaskId, { - type: "error", - message: errorResponse, - timestamp: Date.now() - }, capturedTransport?.sessionId).catch((error2) => this._onerror(new Error(`Failed to enqueue error response: ${error2}`))); - } else { - capturedTransport?.send(errorResponse).catch((error2) => this._onerror(new Error(`Failed to send an error response: ${error2}`))); - } - return; - } - const abortController = new AbortController(); - this._requestHandlerAbortControllers.set(request.id, abortController); - const taskCreationParams = isTaskAugmentedRequestParams(request.params) ? request.params.task : void 0; - const taskStore = this._taskStore ? this.requestTaskStore(request, capturedTransport?.sessionId) : void 0; - const fullExtra = { - signal: abortController.signal, - sessionId: capturedTransport?.sessionId, - _meta: request.params?._meta, - sendNotification: async (notification) => { - if (abortController.signal.aborted) - return; - const notificationOptions = { relatedRequestId: request.id }; - if (relatedTaskId) { - notificationOptions.relatedTask = { taskId: relatedTaskId }; - } - await this.notification(notification, notificationOptions); - }, - sendRequest: async (r, resultSchema, options) => { - if (abortController.signal.aborted) { - throw new McpError(ErrorCode.ConnectionClosed, "Request was cancelled"); - } - const requestOptions = { ...options, relatedRequestId: request.id }; - if (relatedTaskId && !requestOptions.relatedTask) { - requestOptions.relatedTask = { taskId: relatedTaskId }; - } - const effectiveTaskId = requestOptions.relatedTask?.taskId ?? relatedTaskId; - if (effectiveTaskId && taskStore) { - await taskStore.updateTaskStatus(effectiveTaskId, "input_required"); - } - return await this.request(r, resultSchema, requestOptions); - }, - authInfo: extra?.authInfo, - requestId: request.id, - requestInfo: extra?.requestInfo, - taskId: relatedTaskId, - taskStore, - taskRequestedTtl: taskCreationParams?.ttl, - closeSSEStream: extra?.closeSSEStream, - closeStandaloneSSEStream: extra?.closeStandaloneSSEStream - }; - Promise.resolve().then(() => { - if (taskCreationParams) { - this.assertTaskHandlerCapability(request.method); - } - }).then(() => handler(request, fullExtra)).then(async (result) => { - if (abortController.signal.aborted) { - return; - } - const response = { - result, - jsonrpc: "2.0", - id: request.id - }; - if (relatedTaskId && this._taskMessageQueue) { - await this._enqueueTaskMessage(relatedTaskId, { - type: "response", - message: response, - timestamp: Date.now() - }, capturedTransport?.sessionId); - } else { - await capturedTransport?.send(response); - } - }, async (error2) => { - if (abortController.signal.aborted) { - return; - } - const errorResponse = { - jsonrpc: "2.0", - id: request.id, - error: { - code: Number.isSafeInteger(error2["code"]) ? error2["code"] : ErrorCode.InternalError, - message: error2.message ?? "Internal error", - ...error2["data"] !== void 0 && { data: error2["data"] } - } - }; - if (relatedTaskId && this._taskMessageQueue) { - await this._enqueueTaskMessage(relatedTaskId, { - type: "error", - message: errorResponse, - timestamp: Date.now() - }, capturedTransport?.sessionId); - } else { - await capturedTransport?.send(errorResponse); - } - }).catch((error2) => this._onerror(new Error(`Failed to send response: ${error2}`))).finally(() => { - this._requestHandlerAbortControllers.delete(request.id); - }); - } - _onprogress(notification) { - const { progressToken, ...params } = notification.params; - const messageId = Number(progressToken); - const handler = this._progressHandlers.get(messageId); - if (!handler) { - this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`)); - return; - } - const responseHandler = this._responseHandlers.get(messageId); - const timeoutInfo = this._timeoutInfo.get(messageId); - if (timeoutInfo && responseHandler && timeoutInfo.resetTimeoutOnProgress) { - try { - this._resetTimeout(messageId); - } catch (error2) { - this._responseHandlers.delete(messageId); - this._progressHandlers.delete(messageId); - this._cleanupTimeout(messageId); - responseHandler(error2); - return; - } - } - handler(params); - } - _onresponse(response) { - const messageId = Number(response.id); - const resolver = this._requestResolvers.get(messageId); - if (resolver) { - this._requestResolvers.delete(messageId); - if (isJSONRPCResultResponse(response)) { - resolver(response); - } else { - const error2 = new McpError(response.error.code, response.error.message, response.error.data); - resolver(error2); - } - return; - } - const handler = this._responseHandlers.get(messageId); - if (handler === void 0) { - this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`)); - return; - } - this._responseHandlers.delete(messageId); - this._cleanupTimeout(messageId); - let isTaskResponse = false; - if (isJSONRPCResultResponse(response) && response.result && typeof response.result === "object") { - const result = response.result; - if (result.task && typeof result.task === "object") { - const task = result.task; - if (typeof task.taskId === "string") { - isTaskResponse = true; - this._taskProgressTokens.set(task.taskId, messageId); - } - } - } - if (!isTaskResponse) { - this._progressHandlers.delete(messageId); - } - if (isJSONRPCResultResponse(response)) { - handler(response); - } else { - const error2 = McpError.fromError(response.error.code, response.error.message, response.error.data); - handler(error2); - } - } - get transport() { - return this._transport; - } - /** - * Closes the connection. - */ - async close() { - await this._transport?.close(); - } - /** - * Sends a request and returns an AsyncGenerator that yields response messages. - * The generator is guaranteed to end with either a 'result' or 'error' message. - * - * @example - * ```typescript - * const stream = protocol.requestStream(request, resultSchema, options); - * for await (const message of stream) { - * switch (message.type) { - * case 'taskCreated': - * console.log('Task created:', message.task.taskId); - * break; - * case 'taskStatus': - * console.log('Task status:', message.task.status); - * break; - * case 'result': - * console.log('Final result:', message.result); - * break; - * case 'error': - * console.error('Error:', message.error); - * break; - * } - * } - * ``` - * - * @experimental Use `client.experimental.tasks.requestStream()` to access this method. - */ - async *requestStream(request, resultSchema, options) { - const { task } = options ?? {}; - if (!task) { - try { - const result = await this.request(request, resultSchema, options); - yield { type: "result", result }; - } catch (error2) { - yield { - type: "error", - error: error2 instanceof McpError ? error2 : new McpError(ErrorCode.InternalError, String(error2)) - }; - } - return; - } - let taskId; - try { - const createResult = await this.request(request, CreateTaskResultSchema, options); - if (createResult.task) { - taskId = createResult.task.taskId; - yield { type: "taskCreated", task: createResult.task }; - } else { - throw new McpError(ErrorCode.InternalError, "Task creation did not return a task"); - } - while (true) { - const task2 = await this.getTask({ taskId }, options); - yield { type: "taskStatus", task: task2 }; - if (isTerminal(task2.status)) { - if (task2.status === "completed") { - const result = await this.getTaskResult({ taskId }, resultSchema, options); - yield { type: "result", result }; - } else if (task2.status === "failed") { - yield { - type: "error", - error: new McpError(ErrorCode.InternalError, `Task ${taskId} failed`) - }; - } else if (task2.status === "cancelled") { - yield { - type: "error", - error: new McpError(ErrorCode.InternalError, `Task ${taskId} was cancelled`) - }; - } - return; - } - if (task2.status === "input_required") { - const result = await this.getTaskResult({ taskId }, resultSchema, options); - yield { type: "result", result }; - return; - } - const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3; - await new Promise((resolve) => setTimeout(resolve, pollInterval)); - options?.signal?.throwIfAborted(); - } - } catch (error2) { - yield { - type: "error", - error: error2 instanceof McpError ? error2 : new McpError(ErrorCode.InternalError, String(error2)) - }; - } - } - /** - * Sends a request and waits for a response. - * - * Do not use this method to emit notifications! Use notification() instead. - */ - request(request, resultSchema, options) { - const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {}; - return new Promise((resolve, reject) => { - const earlyReject = (error2) => { - reject(error2); - }; - if (!this._transport) { - earlyReject(new Error("Not connected")); - return; - } - if (this._options?.enforceStrictCapabilities === true) { - try { - this.assertCapabilityForMethod(request.method); - if (task) { - this.assertTaskCapability(request.method); - } - } catch (e) { - earlyReject(e); - return; - } - } - options?.signal?.throwIfAborted(); - const messageId = this._requestMessageId++; - const jsonrpcRequest = { - ...request, - jsonrpc: "2.0", - id: messageId - }; - if (options?.onprogress) { - this._progressHandlers.set(messageId, options.onprogress); - jsonrpcRequest.params = { - ...request.params, - _meta: { - ...request.params?._meta || {}, - progressToken: messageId - } - }; - } - if (task) { - jsonrpcRequest.params = { - ...jsonrpcRequest.params, - task - }; - } - if (relatedTask) { - jsonrpcRequest.params = { - ...jsonrpcRequest.params, - _meta: { - ...jsonrpcRequest.params?._meta || {}, - [RELATED_TASK_META_KEY]: relatedTask - } - }; - } - const cancel = (reason) => { - this._responseHandlers.delete(messageId); - this._progressHandlers.delete(messageId); - this._cleanupTimeout(messageId); - this._transport?.send({ - jsonrpc: "2.0", - method: "notifications/cancelled", - params: { - requestId: messageId, - reason: String(reason) - } - }, { relatedRequestId, resumptionToken, onresumptiontoken }).catch((error3) => this._onerror(new Error(`Failed to send cancellation: ${error3}`))); - const error2 = reason instanceof McpError ? reason : new McpError(ErrorCode.RequestTimeout, String(reason)); - reject(error2); - }; - this._responseHandlers.set(messageId, (response) => { - if (options?.signal?.aborted) { - return; - } - if (response instanceof Error) { - return reject(response); - } - try { - const parseResult = safeParse2(resultSchema, response.result); - if (!parseResult.success) { - reject(parseResult.error); - } else { - resolve(parseResult.data); - } - } catch (error2) { - reject(error2); - } - }); - options?.signal?.addEventListener("abort", () => { - cancel(options?.signal?.reason); - }); - const timeout = options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC; - const timeoutHandler = () => cancel(McpError.fromError(ErrorCode.RequestTimeout, "Request timed out", { timeout })); - this._setupTimeout(messageId, timeout, options?.maxTotalTimeout, timeoutHandler, options?.resetTimeoutOnProgress ?? false); - const relatedTaskId = relatedTask?.taskId; - if (relatedTaskId) { - const responseResolver = (response) => { - const handler = this._responseHandlers.get(messageId); - if (handler) { - handler(response); - } else { - this._onerror(new Error(`Response handler missing for side-channeled request ${messageId}`)); - } - }; - this._requestResolvers.set(messageId, responseResolver); - this._enqueueTaskMessage(relatedTaskId, { - type: "request", - message: jsonrpcRequest, - timestamp: Date.now() - }).catch((error2) => { - this._cleanupTimeout(messageId); - reject(error2); - }); - } else { - this._transport.send(jsonrpcRequest, { relatedRequestId, resumptionToken, onresumptiontoken }).catch((error2) => { - this._cleanupTimeout(messageId); - reject(error2); - }); - } - }); - } - /** - * Gets the current status of a task. - * - * @experimental Use `client.experimental.tasks.getTask()` to access this method. - */ - async getTask(params, options) { - return this.request({ method: "tasks/get", params }, GetTaskResultSchema, options); - } - /** - * Retrieves the result of a completed task. - * - * @experimental Use `client.experimental.tasks.getTaskResult()` to access this method. - */ - async getTaskResult(params, resultSchema, options) { - return this.request({ method: "tasks/result", params }, resultSchema, options); - } - /** - * Lists tasks, optionally starting from a pagination cursor. - * - * @experimental Use `client.experimental.tasks.listTasks()` to access this method. - */ - async listTasks(params, options) { - return this.request({ method: "tasks/list", params }, ListTasksResultSchema, options); - } - /** - * Cancels a specific task. - * - * @experimental Use `client.experimental.tasks.cancelTask()` to access this method. - */ - async cancelTask(params, options) { - return this.request({ method: "tasks/cancel", params }, CancelTaskResultSchema, options); - } - /** - * Emits a notification, which is a one-way message that does not expect a response. - */ - async notification(notification, options) { - if (!this._transport) { - throw new Error("Not connected"); - } - this.assertNotificationCapability(notification.method); - const relatedTaskId = options?.relatedTask?.taskId; - if (relatedTaskId) { - const jsonrpcNotification2 = { - ...notification, - jsonrpc: "2.0", - params: { - ...notification.params, - _meta: { - ...notification.params?._meta || {}, - [RELATED_TASK_META_KEY]: options.relatedTask - } - } - }; - await this._enqueueTaskMessage(relatedTaskId, { - type: "notification", - message: jsonrpcNotification2, - timestamp: Date.now() - }); - return; - } - const debouncedMethods = this._options?.debouncedNotificationMethods ?? []; - const canDebounce = debouncedMethods.includes(notification.method) && !notification.params && !options?.relatedRequestId && !options?.relatedTask; - if (canDebounce) { - if (this._pendingDebouncedNotifications.has(notification.method)) { - return; - } - this._pendingDebouncedNotifications.add(notification.method); - Promise.resolve().then(() => { - this._pendingDebouncedNotifications.delete(notification.method); - if (!this._transport) { - return; - } - let jsonrpcNotification2 = { - ...notification, - jsonrpc: "2.0" - }; - if (options?.relatedTask) { - jsonrpcNotification2 = { - ...jsonrpcNotification2, - params: { - ...jsonrpcNotification2.params, - _meta: { - ...jsonrpcNotification2.params?._meta || {}, - [RELATED_TASK_META_KEY]: options.relatedTask - } - } - }; - } - this._transport?.send(jsonrpcNotification2, options).catch((error2) => this._onerror(error2)); - }); - return; - } - let jsonrpcNotification = { - ...notification, - jsonrpc: "2.0" - }; - if (options?.relatedTask) { - jsonrpcNotification = { - ...jsonrpcNotification, - params: { - ...jsonrpcNotification.params, - _meta: { - ...jsonrpcNotification.params?._meta || {}, - [RELATED_TASK_META_KEY]: options.relatedTask - } - } - }; - } - await this._transport.send(jsonrpcNotification, options); - } - /** - * Registers a handler to invoke when this protocol object receives a request with the given method. - * - * Note that this will replace any previous request handler for the same method. - */ - setRequestHandler(requestSchema, handler) { - const method = getMethodLiteral(requestSchema); - this.assertRequestHandlerCapability(method); - this._requestHandlers.set(method, (request, extra) => { - const parsed = parseWithCompat(requestSchema, request); - return Promise.resolve(handler(parsed, extra)); - }); - } - /** - * Removes the request handler for the given method. - */ - removeRequestHandler(method) { - this._requestHandlers.delete(method); - } - /** - * Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed. - */ - assertCanSetRequestHandler(method) { - if (this._requestHandlers.has(method)) { - throw new Error(`A request handler for ${method} already exists, which would be overridden`); - } - } - /** - * Registers a handler to invoke when this protocol object receives a notification with the given method. - * - * Note that this will replace any previous notification handler for the same method. - */ - setNotificationHandler(notificationSchema, handler) { - const method = getMethodLiteral(notificationSchema); - this._notificationHandlers.set(method, (notification) => { - const parsed = parseWithCompat(notificationSchema, notification); - return Promise.resolve(handler(parsed)); - }); - } - /** - * Removes the notification handler for the given method. - */ - removeNotificationHandler(method) { - this._notificationHandlers.delete(method); - } - /** - * Cleans up the progress handler associated with a task. - * This should be called when a task reaches a terminal status. - */ - _cleanupTaskProgressHandler(taskId) { - const progressToken = this._taskProgressTokens.get(taskId); - if (progressToken !== void 0) { - this._progressHandlers.delete(progressToken); - this._taskProgressTokens.delete(taskId); - } - } - /** - * Enqueues a task-related message for side-channel delivery via tasks/result. - * @param taskId The task ID to associate the message with - * @param message The message to enqueue - * @param sessionId Optional session ID for binding the operation to a specific session - * @throws Error if taskStore is not configured or if enqueue fails (e.g., queue overflow) - * - * Note: If enqueue fails, it's the TaskMessageQueue implementation's responsibility to handle - * the error appropriately (e.g., by failing the task, logging, etc.). The Protocol layer - * simply propagates the error. - */ - async _enqueueTaskMessage(taskId, message, sessionId) { - if (!this._taskStore || !this._taskMessageQueue) { - throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured"); - } - const maxQueueSize = this._options?.maxTaskQueueSize; - await this._taskMessageQueue.enqueue(taskId, message, sessionId, maxQueueSize); - } - /** - * Clears the message queue for a task and rejects any pending request resolvers. - * @param taskId The task ID whose queue should be cleared - * @param sessionId Optional session ID for binding the operation to a specific session - */ - async _clearTaskQueue(taskId, sessionId) { - if (this._taskMessageQueue) { - const messages = await this._taskMessageQueue.dequeueAll(taskId, sessionId); - for (const message of messages) { - if (message.type === "request" && isJSONRPCRequest(message.message)) { - const requestId = message.message.id; - const resolver = this._requestResolvers.get(requestId); - if (resolver) { - resolver(new McpError(ErrorCode.InternalError, "Task cancelled or completed")); - this._requestResolvers.delete(requestId); - } else { - this._onerror(new Error(`Resolver missing for request ${requestId} during task ${taskId} cleanup`)); - } - } - } - } - } - /** - * Waits for a task update (new messages or status change) with abort signal support. - * Uses polling to check for updates at the task's configured poll interval. - * @param taskId The task ID to wait for - * @param signal Abort signal to cancel the wait - * @returns Promise that resolves when an update occurs or rejects if aborted - */ - async _waitForTaskUpdate(taskId, signal) { - let interval = this._options?.defaultTaskPollInterval ?? 1e3; - try { - const task = await this._taskStore?.getTask(taskId); - if (task?.pollInterval) { - interval = task.pollInterval; - } - } catch { - } - return new Promise((resolve, reject) => { - if (signal.aborted) { - reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled")); - return; - } - const timeoutId = setTimeout(resolve, interval); - signal.addEventListener("abort", () => { - clearTimeout(timeoutId); - reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled")); - }, { once: true }); - }); - } - requestTaskStore(request, sessionId) { - const taskStore = this._taskStore; - if (!taskStore) { - throw new Error("No task store configured"); - } - return { - createTask: async (taskParams) => { - if (!request) { - throw new Error("No request provided"); - } - return await taskStore.createTask(taskParams, request.id, { - method: request.method, - params: request.params - }, sessionId); - }, - getTask: async (taskId) => { - const task = await taskStore.getTask(taskId, sessionId); - if (!task) { - throw new McpError(ErrorCode.InvalidParams, "Failed to retrieve task: Task not found"); - } - return task; - }, - storeTaskResult: async (taskId, status, result) => { - await taskStore.storeTaskResult(taskId, status, result, sessionId); - const task = await taskStore.getTask(taskId, sessionId); - if (task) { - const notification = TaskStatusNotificationSchema.parse({ - method: "notifications/tasks/status", - params: task - }); - await this.notification(notification); - if (isTerminal(task.status)) { - this._cleanupTaskProgressHandler(taskId); - } - } - }, - getTaskResult: (taskId) => { - return taskStore.getTaskResult(taskId, sessionId); - }, - updateTaskStatus: async (taskId, status, statusMessage) => { - const task = await taskStore.getTask(taskId, sessionId); - if (!task) { - throw new McpError(ErrorCode.InvalidParams, `Task "${taskId}" not found - it may have been cleaned up`); - } - if (isTerminal(task.status)) { - throw new McpError(ErrorCode.InvalidParams, `Cannot update task "${taskId}" from terminal status "${task.status}" to "${status}". Terminal states (completed, failed, cancelled) cannot transition to other states.`); - } - await taskStore.updateTaskStatus(taskId, status, statusMessage, sessionId); - const updatedTask = await taskStore.getTask(taskId, sessionId); - if (updatedTask) { - const notification = TaskStatusNotificationSchema.parse({ - method: "notifications/tasks/status", - params: updatedTask - }); - await this.notification(notification); - if (isTerminal(updatedTask.status)) { - this._cleanupTaskProgressHandler(taskId); - } - } - }, - listTasks: (cursor) => { - return taskStore.listTasks(cursor, sessionId); - } - }; - } -}; -function isPlainObject(value) { - return value !== null && typeof value === "object" && !Array.isArray(value); -} -function mergeCapabilities(base, additional) { - const result = { ...base }; - for (const key in additional) { - const k = key; - const addValue = additional[k]; - if (addValue === void 0) - continue; - const baseValue = result[k]; - if (isPlainObject(baseValue) && isPlainObject(addValue)) { - result[k] = { ...baseValue, ...addValue }; - } else { - result[k] = addValue; - } - } - return result; -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js -var import_ajv = __toESM(require_ajv(), 1); -var import_ajv_formats = __toESM(require_dist(), 1); -function createDefaultAjvInstance() { - const ajv = new import_ajv.default({ - strict: false, - validateFormats: true, - validateSchema: false, - allErrors: true - }); - const addFormats = import_ajv_formats.default; - addFormats(ajv); - return ajv; -} -var AjvJsonSchemaValidator = class { - /** - * Create an AJV validator - * - * @param ajv - Optional pre-configured AJV instance. If not provided, a default instance will be created. - * - * @example - * ```typescript - * // Use default configuration (recommended for most cases) - * import { AjvJsonSchemaValidator } from '@modelcontextprotocol/sdk/validation/ajv'; - * const validator = new AjvJsonSchemaValidator(); - * - * // Or provide custom AJV instance for advanced configuration - * import { Ajv } from 'ajv'; - * import addFormats from 'ajv-formats'; - * - * const ajv = new Ajv({ validateFormats: true }); - * addFormats(ajv); - * const validator = new AjvJsonSchemaValidator(ajv); - * ``` - */ - constructor(ajv) { - this._ajv = ajv ?? createDefaultAjvInstance(); - } - /** - * Create a validator for the given JSON Schema - * - * The validator is compiled once and can be reused multiple times. - * If the schema has an $id, it will be cached by AJV automatically. - * - * @param schema - Standard JSON Schema object - * @returns A validator function that validates input data - */ - getValidator(schema) { - const ajvValidator = "$id" in schema && typeof schema.$id === "string" ? this._ajv.getSchema(schema.$id) ?? this._ajv.compile(schema) : this._ajv.compile(schema); - return (input) => { - const valid = ajvValidator(input); - if (valid) { - return { - valid: true, - data: input, - errorMessage: void 0 - }; - } else { - return { - valid: false, - data: void 0, - errorMessage: this._ajv.errorsText(ajvValidator.errors) - }; - } - }; - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js -var ExperimentalServerTasks = class { - constructor(_server) { - this._server = _server; - } - /** - * Sends a request and returns an AsyncGenerator that yields response messages. - * The generator is guaranteed to end with either a 'result' or 'error' message. - * - * This method provides streaming access to request processing, allowing you to - * observe intermediate task status updates for task-augmented requests. - * - * @param request - The request to send - * @param resultSchema - Zod schema for validating the result - * @param options - Optional request options (timeout, signal, task creation params, etc.) - * @returns AsyncGenerator that yields ResponseMessage objects - * - * @experimental - */ - requestStream(request, resultSchema, options) { - return this._server.requestStream(request, resultSchema, options); - } - /** - * Sends a sampling request and returns an AsyncGenerator that yields response messages. - * The generator is guaranteed to end with either a 'result' or 'error' message. - * - * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages - * before the final result. - * - * @example - * ```typescript - * const stream = server.experimental.tasks.createMessageStream({ - * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }], - * maxTokens: 100 - * }, { - * onprogress: (progress) => { - * // Handle streaming tokens via progress notifications - * console.log('Progress:', progress.message); - * } - * }); - * - * for await (const message of stream) { - * switch (message.type) { - * case 'taskCreated': - * console.log('Task created:', message.task.taskId); - * break; - * case 'taskStatus': - * console.log('Task status:', message.task.status); - * break; - * case 'result': - * console.log('Final result:', message.result); - * break; - * case 'error': - * console.error('Error:', message.error); - * break; - * } - * } - * ``` - * - * @param params - The sampling request parameters - * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.) - * @returns AsyncGenerator that yields ResponseMessage objects - * - * @experimental - */ - createMessageStream(params, options) { - const clientCapabilities = this._server.getClientCapabilities(); - if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) { - throw new Error("Client does not support sampling tools capability."); - } - if (params.messages.length > 0) { - const lastMessage = params.messages[params.messages.length - 1]; - const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content]; - const hasToolResults = lastContent.some((c) => c.type === "tool_result"); - const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : void 0; - const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : []; - const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use"); - if (hasToolResults) { - if (lastContent.some((c) => c.type !== "tool_result")) { - throw new Error("The last message must contain only tool_result content if any is present"); - } - if (!hasPreviousToolUse) { - throw new Error("tool_result blocks are not matching any tool_use from the previous message"); - } - } - if (hasPreviousToolUse) { - const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id)); - const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId)); - if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) { - throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match"); - } - } - } - return this.requestStream({ - method: "sampling/createMessage", - params - }, CreateMessageResultSchema, options); - } - /** - * Sends an elicitation request and returns an AsyncGenerator that yields response messages. - * The generator is guaranteed to end with either a 'result' or 'error' message. - * - * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated' - * and 'taskStatus' messages before the final result. - * - * @example - * ```typescript - * const stream = server.experimental.tasks.elicitInputStream({ - * mode: 'url', - * message: 'Please authenticate', - * elicitationId: 'auth-123', - * url: 'https://example.com/auth' - * }, { - * task: { ttl: 300000 } // Task-augmented for long-running auth flow - * }); - * - * for await (const message of stream) { - * switch (message.type) { - * case 'taskCreated': - * console.log('Task created:', message.task.taskId); - * break; - * case 'taskStatus': - * console.log('Task status:', message.task.status); - * break; - * case 'result': - * console.log('User action:', message.result.action); - * break; - * case 'error': - * console.error('Error:', message.error); - * break; - * } - * } - * ``` - * - * @param params - The elicitation request parameters - * @param options - Optional request options (timeout, signal, task creation params, etc.) - * @returns AsyncGenerator that yields ResponseMessage objects - * - * @experimental - */ - elicitInputStream(params, options) { - const clientCapabilities = this._server.getClientCapabilities(); - const mode = params.mode ?? "form"; - switch (mode) { - case "url": { - if (!clientCapabilities?.elicitation?.url) { - throw new Error("Client does not support url elicitation."); - } - break; - } - case "form": { - if (!clientCapabilities?.elicitation?.form) { - throw new Error("Client does not support form elicitation."); - } - break; - } - } - const normalizedParams = mode === "form" && params.mode === void 0 ? { ...params, mode: "form" } : params; - return this.requestStream({ - method: "elicitation/create", - params: normalizedParams - }, ElicitResultSchema, options); - } - /** - * Gets the current status of a task. - * - * @param taskId - The task identifier - * @param options - Optional request options - * @returns The task status - * - * @experimental - */ - async getTask(taskId, options) { - return this._server.getTask({ taskId }, options); - } - /** - * Retrieves the result of a completed task. - * - * @param taskId - The task identifier - * @param resultSchema - Zod schema for validating the result - * @param options - Optional request options - * @returns The task result - * - * @experimental - */ - async getTaskResult(taskId, resultSchema, options) { - return this._server.getTaskResult({ taskId }, resultSchema, options); - } - /** - * Lists tasks with optional pagination. - * - * @param cursor - Optional pagination cursor - * @param options - Optional request options - * @returns List of tasks with optional next cursor - * - * @experimental - */ - async listTasks(cursor, options) { - return this._server.listTasks(cursor ? { cursor } : void 0, options); - } - /** - * Cancels a running task. - * - * @param taskId - The task identifier - * @param options - Optional request options - * - * @experimental - */ - async cancelTask(taskId, options) { - return this._server.cancelTask({ taskId }, options); - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js -function assertToolsCallTaskCapability(requests, method, entityName) { - if (!requests) { - throw new Error(`${entityName} does not support task creation (required for ${method})`); - } - switch (method) { - case "tools/call": - if (!requests.tools?.call) { - throw new Error(`${entityName} does not support task creation for tools/call (required for ${method})`); - } - break; - default: - break; - } -} -function assertClientRequestTaskCapability(requests, method, entityName) { - if (!requests) { - throw new Error(`${entityName} does not support task creation (required for ${method})`); - } - switch (method) { - case "sampling/createMessage": - if (!requests.sampling?.createMessage) { - throw new Error(`${entityName} does not support task creation for sampling/createMessage (required for ${method})`); - } - break; - case "elicitation/create": - if (!requests.elicitation?.create) { - throw new Error(`${entityName} does not support task creation for elicitation/create (required for ${method})`); - } - break; - default: - break; - } -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js -var Server = class extends Protocol { - /** - * Initializes this server with the given name and version information. - */ - constructor(_serverInfo, options) { - super(options); - this._serverInfo = _serverInfo; - this._loggingLevels = /* @__PURE__ */ new Map(); - this.LOG_LEVEL_SEVERITY = new Map(LoggingLevelSchema.options.map((level, index) => [level, index])); - this.isMessageIgnored = (level, sessionId) => { - const currentLevel = this._loggingLevels.get(sessionId); - return currentLevel ? this.LOG_LEVEL_SEVERITY.get(level) < this.LOG_LEVEL_SEVERITY.get(currentLevel) : false; - }; - this._capabilities = options?.capabilities ?? {}; - this._instructions = options?.instructions; - this._jsonSchemaValidator = options?.jsonSchemaValidator ?? new AjvJsonSchemaValidator(); - this.setRequestHandler(InitializeRequestSchema, (request) => this._oninitialize(request)); - this.setNotificationHandler(InitializedNotificationSchema, () => this.oninitialized?.()); - if (this._capabilities.logging) { - this.setRequestHandler(SetLevelRequestSchema, async (request, extra) => { - const transportSessionId = extra.sessionId || extra.requestInfo?.headers["mcp-session-id"] || void 0; - const { level } = request.params; - const parseResult = LoggingLevelSchema.safeParse(level); - if (parseResult.success) { - this._loggingLevels.set(transportSessionId, parseResult.data); - } - return {}; - }); - } - } - /** - * Access experimental features. - * - * WARNING: These APIs are experimental and may change without notice. - * - * @experimental - */ - get experimental() { - if (!this._experimental) { - this._experimental = { - tasks: new ExperimentalServerTasks(this) - }; - } - return this._experimental; - } - /** - * Registers new capabilities. This can only be called before connecting to a transport. - * - * The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization). - */ - registerCapabilities(capabilities) { - if (this.transport) { - throw new Error("Cannot register capabilities after connecting to transport"); - } - this._capabilities = mergeCapabilities(this._capabilities, capabilities); - } - /** - * Override request handler registration to enforce server-side validation for tools/call. - */ - setRequestHandler(requestSchema, handler) { - const shape = getObjectShape(requestSchema); - const methodSchema = shape?.method; - if (!methodSchema) { - throw new Error("Schema is missing a method literal"); - } - let methodValue; - if (isZ4Schema(methodSchema)) { - const v4Schema = methodSchema; - const v4Def = v4Schema._zod?.def; - methodValue = v4Def?.value ?? v4Schema.value; - } else { - const v3Schema = methodSchema; - const legacyDef = v3Schema._def; - methodValue = legacyDef?.value ?? v3Schema.value; - } - if (typeof methodValue !== "string") { - throw new Error("Schema method literal must be a string"); - } - const method = methodValue; - if (method === "tools/call") { - const wrappedHandler = async (request, extra) => { - const validatedRequest = safeParse2(CallToolRequestSchema, request); - if (!validatedRequest.success) { - const errorMessage = validatedRequest.error instanceof Error ? validatedRequest.error.message : String(validatedRequest.error); - throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call request: ${errorMessage}`); - } - const { params } = validatedRequest.data; - const result = await Promise.resolve(handler(request, extra)); - if (params.task) { - const taskValidationResult = safeParse2(CreateTaskResultSchema, result); - if (!taskValidationResult.success) { - const errorMessage = taskValidationResult.error instanceof Error ? taskValidationResult.error.message : String(taskValidationResult.error); - throw new McpError(ErrorCode.InvalidParams, `Invalid task creation result: ${errorMessage}`); - } - return taskValidationResult.data; - } - const validationResult = safeParse2(CallToolResultSchema, result); - if (!validationResult.success) { - const errorMessage = validationResult.error instanceof Error ? validationResult.error.message : String(validationResult.error); - throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call result: ${errorMessage}`); - } - return validationResult.data; - }; - return super.setRequestHandler(requestSchema, wrappedHandler); - } - return super.setRequestHandler(requestSchema, handler); - } - assertCapabilityForMethod(method) { - switch (method) { - case "sampling/createMessage": - if (!this._clientCapabilities?.sampling) { - throw new Error(`Client does not support sampling (required for ${method})`); - } - break; - case "elicitation/create": - if (!this._clientCapabilities?.elicitation) { - throw new Error(`Client does not support elicitation (required for ${method})`); - } - break; - case "roots/list": - if (!this._clientCapabilities?.roots) { - throw new Error(`Client does not support listing roots (required for ${method})`); - } - break; - case "ping": - break; - } - } - assertNotificationCapability(method) { - switch (method) { - case "notifications/message": - if (!this._capabilities.logging) { - throw new Error(`Server does not support logging (required for ${method})`); - } - break; - case "notifications/resources/updated": - case "notifications/resources/list_changed": - if (!this._capabilities.resources) { - throw new Error(`Server does not support notifying about resources (required for ${method})`); - } - break; - case "notifications/tools/list_changed": - if (!this._capabilities.tools) { - throw new Error(`Server does not support notifying of tool list changes (required for ${method})`); - } - break; - case "notifications/prompts/list_changed": - if (!this._capabilities.prompts) { - throw new Error(`Server does not support notifying of prompt list changes (required for ${method})`); - } - break; - case "notifications/elicitation/complete": - if (!this._clientCapabilities?.elicitation?.url) { - throw new Error(`Client does not support URL elicitation (required for ${method})`); - } - break; - case "notifications/cancelled": - break; - case "notifications/progress": - break; - } - } - assertRequestHandlerCapability(method) { - if (!this._capabilities) { - return; - } - switch (method) { - case "completion/complete": - if (!this._capabilities.completions) { - throw new Error(`Server does not support completions (required for ${method})`); - } - break; - case "logging/setLevel": - if (!this._capabilities.logging) { - throw new Error(`Server does not support logging (required for ${method})`); - } - break; - case "prompts/get": - case "prompts/list": - if (!this._capabilities.prompts) { - throw new Error(`Server does not support prompts (required for ${method})`); - } - break; - case "resources/list": - case "resources/templates/list": - case "resources/read": - if (!this._capabilities.resources) { - throw new Error(`Server does not support resources (required for ${method})`); - } - break; - case "tools/call": - case "tools/list": - if (!this._capabilities.tools) { - throw new Error(`Server does not support tools (required for ${method})`); - } - break; - case "tasks/get": - case "tasks/list": - case "tasks/result": - case "tasks/cancel": - if (!this._capabilities.tasks) { - throw new Error(`Server does not support tasks capability (required for ${method})`); - } - break; - case "ping": - case "initialize": - break; - } - } - assertTaskCapability(method) { - assertClientRequestTaskCapability(this._clientCapabilities?.tasks?.requests, method, "Client"); - } - assertTaskHandlerCapability(method) { - if (!this._capabilities) { - return; - } - assertToolsCallTaskCapability(this._capabilities.tasks?.requests, method, "Server"); - } - async _oninitialize(request) { - const requestedVersion = request.params.protocolVersion; - this._clientCapabilities = request.params.capabilities; - this._clientVersion = request.params.clientInfo; - const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion) ? requestedVersion : LATEST_PROTOCOL_VERSION; - return { - protocolVersion, - capabilities: this.getCapabilities(), - serverInfo: this._serverInfo, - ...this._instructions && { instructions: this._instructions } - }; - } - /** - * After initialization has completed, this will be populated with the client's reported capabilities. - */ - getClientCapabilities() { - return this._clientCapabilities; - } - /** - * After initialization has completed, this will be populated with information about the client's name and version. - */ - getClientVersion() { - return this._clientVersion; - } - getCapabilities() { - return this._capabilities; - } - async ping() { - return this.request({ method: "ping" }, EmptyResultSchema); - } - // Implementation - async createMessage(params, options) { - if (params.tools || params.toolChoice) { - if (!this._clientCapabilities?.sampling?.tools) { - throw new Error("Client does not support sampling tools capability."); - } - } - if (params.messages.length > 0) { - const lastMessage = params.messages[params.messages.length - 1]; - const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content]; - const hasToolResults = lastContent.some((c) => c.type === "tool_result"); - const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : void 0; - const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : []; - const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use"); - if (hasToolResults) { - if (lastContent.some((c) => c.type !== "tool_result")) { - throw new Error("The last message must contain only tool_result content if any is present"); - } - if (!hasPreviousToolUse) { - throw new Error("tool_result blocks are not matching any tool_use from the previous message"); - } - } - if (hasPreviousToolUse) { - const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id)); - const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId)); - if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) { - throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match"); - } - } - } - if (params.tools) { - return this.request({ method: "sampling/createMessage", params }, CreateMessageResultWithToolsSchema, options); - } - return this.request({ method: "sampling/createMessage", params }, CreateMessageResultSchema, options); - } - /** - * Creates an elicitation request for the given parameters. - * For backwards compatibility, `mode` may be omitted for form requests and will default to `'form'`. - * @param params The parameters for the elicitation request. - * @param options Optional request options. - * @returns The result of the elicitation request. - */ - async elicitInput(params, options) { - const mode = params.mode ?? "form"; - switch (mode) { - case "url": { - if (!this._clientCapabilities?.elicitation?.url) { - throw new Error("Client does not support url elicitation."); - } - const urlParams = params; - return this.request({ method: "elicitation/create", params: urlParams }, ElicitResultSchema, options); - } - case "form": { - if (!this._clientCapabilities?.elicitation?.form) { - throw new Error("Client does not support form elicitation."); - } - const formParams = params.mode === "form" ? params : { ...params, mode: "form" }; - const result = await this.request({ method: "elicitation/create", params: formParams }, ElicitResultSchema, options); - if (result.action === "accept" && result.content && formParams.requestedSchema) { - try { - const validator = this._jsonSchemaValidator.getValidator(formParams.requestedSchema); - const validationResult = validator(result.content); - if (!validationResult.valid) { - throw new McpError(ErrorCode.InvalidParams, `Elicitation response content does not match requested schema: ${validationResult.errorMessage}`); - } - } catch (error2) { - if (error2 instanceof McpError) { - throw error2; - } - throw new McpError(ErrorCode.InternalError, `Error validating elicitation response: ${error2 instanceof Error ? error2.message : String(error2)}`); - } - } - return result; - } - } - } - /** - * Creates a reusable callback that, when invoked, will send a `notifications/elicitation/complete` - * notification for the specified elicitation ID. - * - * @param elicitationId The ID of the elicitation to mark as complete. - * @param options Optional notification options. Useful when the completion notification should be related to a prior request. - * @returns A function that emits the completion notification when awaited. - */ - createElicitationCompletionNotifier(elicitationId, options) { - if (!this._clientCapabilities?.elicitation?.url) { - throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)"); - } - return () => this.notification({ - method: "notifications/elicitation/complete", - params: { - elicitationId - } - }, options); - } - async listRoots(params, options) { - return this.request({ method: "roots/list", params }, ListRootsResultSchema, options); - } - /** - * Sends a logging message to the client, if connected. - * Note: You only need to send the parameters object, not the entire JSON RPC message - * @see LoggingMessageNotification - * @param params - * @param sessionId optional for stateless and backward compatibility - */ - async sendLoggingMessage(params, sessionId) { - if (this._capabilities.logging) { - if (!this.isMessageIgnored(params.level, sessionId)) { - return this.notification({ method: "notifications/message", params }); - } - } - } - async sendResourceUpdated(params) { - return this.notification({ - method: "notifications/resources/updated", - params - }); - } - async sendResourceListChanged() { - return this.notification({ - method: "notifications/resources/list_changed" - }); - } - async sendToolListChanged() { - return this.notification({ method: "notifications/tools/list_changed" }); - } - async sendPromptListChanged() { - return this.notification({ method: "notifications/prompts/list_changed" }); - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js -var COMPLETABLE_SYMBOL = /* @__PURE__ */ Symbol.for("mcp.completable"); -function isCompletable(schema) { - return !!schema && typeof schema === "object" && COMPLETABLE_SYMBOL in schema; -} -function getCompleter(schema) { - const meta2 = schema[COMPLETABLE_SYMBOL]; - return meta2?.complete; -} -var McpZodTypeKind; -(function(McpZodTypeKind2) { - McpZodTypeKind2["Completable"] = "McpCompletable"; -})(McpZodTypeKind || (McpZodTypeKind = {})); - -// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js -var TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/; -function validateToolName(name) { - const warnings = []; - if (name.length === 0) { - return { - isValid: false, - warnings: ["Tool name cannot be empty"] - }; - } - if (name.length > 128) { - return { - isValid: false, - warnings: [`Tool name exceeds maximum length of 128 characters (current: ${name.length})`] - }; - } - if (name.includes(" ")) { - warnings.push("Tool name contains spaces, which may cause parsing issues"); - } - if (name.includes(",")) { - warnings.push("Tool name contains commas, which may cause parsing issues"); - } - if (name.startsWith("-") || name.endsWith("-")) { - warnings.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"); - } - if (name.startsWith(".") || name.endsWith(".")) { - warnings.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"); - } - if (!TOOL_NAME_REGEX.test(name)) { - const invalidChars = name.split("").filter((char) => !/[A-Za-z0-9._-]/.test(char)).filter((char, index, arr) => arr.indexOf(char) === index); - warnings.push(`Tool name contains invalid characters: ${invalidChars.map((c) => `"${c}"`).join(", ")}`, "Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"); - return { - isValid: false, - warnings - }; - } - return { - isValid: true, - warnings - }; -} -function issueToolNameWarning(name, warnings) { - if (warnings.length > 0) { - console.warn(`Tool name validation warning for "${name}":`); - for (const warning of warnings) { - console.warn(` - ${warning}`); - } - console.warn("Tool registration will proceed, but this may cause compatibility issues."); - console.warn("Consider updating the tool name to conform to the MCP tool naming standard."); - console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details."); - } -} -function validateAndWarnToolName(name) { - const result = validateToolName(name); - issueToolNameWarning(name, result.warnings); - return result.isValid; -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js -var ExperimentalMcpServerTasks = class { - constructor(_mcpServer) { - this._mcpServer = _mcpServer; - } - registerToolTask(name, config2, handler) { - const execution = { taskSupport: "required", ...config2.execution }; - if (execution.taskSupport === "forbidden") { - throw new Error(`Cannot register task-based tool '${name}' with taskSupport 'forbidden'. Use registerTool() instead.`); - } - const mcpServerInternal = this._mcpServer; - return mcpServerInternal._createRegisteredTool(name, config2.title, config2.description, config2.inputSchema, config2.outputSchema, config2.annotations, execution, config2._meta, handler); - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js -var McpServer = class { - constructor(serverInfo, options) { - this._registeredResources = {}; - this._registeredResourceTemplates = {}; - this._registeredTools = {}; - this._registeredPrompts = {}; - this._toolHandlersInitialized = false; - this._completionHandlerInitialized = false; - this._resourceHandlersInitialized = false; - this._promptHandlersInitialized = false; - this.server = new Server(serverInfo, options); - } - /** - * Access experimental features. - * - * WARNING: These APIs are experimental and may change without notice. - * - * @experimental - */ - get experimental() { - if (!this._experimental) { - this._experimental = { - tasks: new ExperimentalMcpServerTasks(this) - }; - } - return this._experimental; - } - /** - * Attaches to the given transport, starts it, and starts listening for messages. - * - * The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward. - */ - async connect(transport) { - return await this.server.connect(transport); - } - /** - * Closes the connection. - */ - async close() { - await this.server.close(); - } - setToolRequestHandlers() { - if (this._toolHandlersInitialized) { - return; - } - this.server.assertCanSetRequestHandler(getMethodValue(ListToolsRequestSchema)); - this.server.assertCanSetRequestHandler(getMethodValue(CallToolRequestSchema)); - this.server.registerCapabilities({ - tools: { - listChanged: true - } - }); - this.server.setRequestHandler(ListToolsRequestSchema, () => ({ - tools: Object.entries(this._registeredTools).filter(([, tool]) => tool.enabled).map(([name, tool]) => { - const toolDefinition = { - name, - title: tool.title, - description: tool.description, - inputSchema: (() => { - const obj = normalizeObjectSchema(tool.inputSchema); - return obj ? toJsonSchemaCompat(obj, { - strictUnions: true, - pipeStrategy: "input" - }) : EMPTY_OBJECT_JSON_SCHEMA; - })(), - annotations: tool.annotations, - execution: tool.execution, - _meta: tool._meta - }; - if (tool.outputSchema) { - const obj = normalizeObjectSchema(tool.outputSchema); - if (obj) { - toolDefinition.outputSchema = toJsonSchemaCompat(obj, { - strictUnions: true, - pipeStrategy: "output" - }); - } - } - return toolDefinition; - }) - })); - this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => { - try { - const tool = this._registeredTools[request.params.name]; - if (!tool) { - throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`); - } - if (!tool.enabled) { - throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`); - } - const isTaskRequest = !!request.params.task; - const taskSupport = tool.execution?.taskSupport; - const isTaskHandler = "createTask" in tool.handler; - if ((taskSupport === "required" || taskSupport === "optional") && !isTaskHandler) { - throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`); - } - if (taskSupport === "required" && !isTaskRequest) { - throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`); - } - if (taskSupport === "optional" && !isTaskRequest && isTaskHandler) { - return await this.handleAutomaticTaskPolling(tool, request, extra); - } - const args = await this.validateToolInput(tool, request.params.arguments, request.params.name); - const result = await this.executeToolHandler(tool, args, extra); - if (isTaskRequest) { - return result; - } - await this.validateToolOutput(tool, result, request.params.name); - return result; - } catch (error2) { - if (error2 instanceof McpError) { - if (error2.code === ErrorCode.UrlElicitationRequired) { - throw error2; - } - } - return this.createToolError(error2 instanceof Error ? error2.message : String(error2)); - } - }); - this._toolHandlersInitialized = true; - } - /** - * Creates a tool error result. - * - * @param errorMessage - The error message. - * @returns The tool error result. - */ - createToolError(errorMessage) { - return { - content: [ - { - type: "text", - text: errorMessage - } - ], - isError: true - }; - } - /** - * Validates tool input arguments against the tool's input schema. - */ - async validateToolInput(tool, args, toolName) { - if (!tool.inputSchema) { - return void 0; - } - const inputObj = normalizeObjectSchema(tool.inputSchema); - const schemaToParse = inputObj ?? tool.inputSchema; - const parseResult = await safeParseAsync2(schemaToParse, args); - if (!parseResult.success) { - const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; - const errorMessage = getParseErrorMessage(error2); - throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`); - } - return parseResult.data; - } - /** - * Validates tool output against the tool's output schema. - */ - async validateToolOutput(tool, result, toolName) { - if (!tool.outputSchema) { - return; - } - if (!("content" in result)) { - return; - } - if (result.isError) { - return; - } - if (!result.structuredContent) { - throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`); - } - const outputObj = normalizeObjectSchema(tool.outputSchema); - const parseResult = await safeParseAsync2(outputObj, result.structuredContent); - if (!parseResult.success) { - const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; - const errorMessage = getParseErrorMessage(error2); - throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`); - } - } - /** - * Executes a tool handler (either regular or task-based). - */ - async executeToolHandler(tool, args, extra) { - const handler = tool.handler; - const isTaskHandler = "createTask" in handler; - if (isTaskHandler) { - if (!extra.taskStore) { - throw new Error("No task store provided."); - } - const taskExtra = { ...extra, taskStore: extra.taskStore }; - if (tool.inputSchema) { - const typedHandler = handler; - return await Promise.resolve(typedHandler.createTask(args, taskExtra)); - } else { - const typedHandler = handler; - return await Promise.resolve(typedHandler.createTask(taskExtra)); - } - } - if (tool.inputSchema) { - const typedHandler = handler; - return await Promise.resolve(typedHandler(args, extra)); - } else { - const typedHandler = handler; - return await Promise.resolve(typedHandler(extra)); - } - } - /** - * Handles automatic task polling for tools with taskSupport 'optional'. - */ - async handleAutomaticTaskPolling(tool, request, extra) { - if (!extra.taskStore) { - throw new Error("No task store provided for task-capable tool."); - } - const args = await this.validateToolInput(tool, request.params.arguments, request.params.name); - const handler = tool.handler; - const taskExtra = { ...extra, taskStore: extra.taskStore }; - const createTaskResult = args ? await Promise.resolve(handler.createTask(args, taskExtra)) : ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - await Promise.resolve(handler.createTask(taskExtra)) - ); - const taskId = createTaskResult.task.taskId; - let task = createTaskResult.task; - const pollInterval = task.pollInterval ?? 5e3; - while (task.status !== "completed" && task.status !== "failed" && task.status !== "cancelled") { - await new Promise((resolve) => setTimeout(resolve, pollInterval)); - const updatedTask = await extra.taskStore.getTask(taskId); - if (!updatedTask) { - throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`); - } - task = updatedTask; - } - return await extra.taskStore.getTaskResult(taskId); - } - setCompletionRequestHandler() { - if (this._completionHandlerInitialized) { - return; - } - this.server.assertCanSetRequestHandler(getMethodValue(CompleteRequestSchema)); - this.server.registerCapabilities({ - completions: {} - }); - this.server.setRequestHandler(CompleteRequestSchema, async (request) => { - switch (request.params.ref.type) { - case "ref/prompt": - assertCompleteRequestPrompt(request); - return this.handlePromptCompletion(request, request.params.ref); - case "ref/resource": - assertCompleteRequestResourceTemplate(request); - return this.handleResourceCompletion(request, request.params.ref); - default: - throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`); - } - }); - this._completionHandlerInitialized = true; - } - async handlePromptCompletion(request, ref) { - const prompt = this._registeredPrompts[ref.name]; - if (!prompt) { - throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} not found`); - } - if (!prompt.enabled) { - throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} disabled`); - } - if (!prompt.argsSchema) { - return EMPTY_COMPLETION_RESULT; - } - const promptShape = getObjectShape(prompt.argsSchema); - const field = promptShape?.[request.params.argument.name]; - if (!isCompletable(field)) { - return EMPTY_COMPLETION_RESULT; - } - const completer = getCompleter(field); - if (!completer) { - return EMPTY_COMPLETION_RESULT; - } - const suggestions = await completer(request.params.argument.value, request.params.context); - return createCompletionResult(suggestions); - } - async handleResourceCompletion(request, ref) { - const template = Object.values(this._registeredResourceTemplates).find((t) => t.resourceTemplate.uriTemplate.toString() === ref.uri); - if (!template) { - if (this._registeredResources[ref.uri]) { - return EMPTY_COMPLETION_RESULT; - } - throw new McpError(ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`); - } - const completer = template.resourceTemplate.completeCallback(request.params.argument.name); - if (!completer) { - return EMPTY_COMPLETION_RESULT; - } - const suggestions = await completer(request.params.argument.value, request.params.context); - return createCompletionResult(suggestions); - } - setResourceRequestHandlers() { - if (this._resourceHandlersInitialized) { - return; - } - this.server.assertCanSetRequestHandler(getMethodValue(ListResourcesRequestSchema)); - this.server.assertCanSetRequestHandler(getMethodValue(ListResourceTemplatesRequestSchema)); - this.server.assertCanSetRequestHandler(getMethodValue(ReadResourceRequestSchema)); - this.server.registerCapabilities({ - resources: { - listChanged: true - } - }); - this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => { - const resources = Object.entries(this._registeredResources).filter(([_, resource]) => resource.enabled).map(([uri, resource]) => ({ - uri, - name: resource.name, - ...resource.metadata - })); - const templateResources = []; - for (const template of Object.values(this._registeredResourceTemplates)) { - if (!template.resourceTemplate.listCallback) { - continue; - } - const result = await template.resourceTemplate.listCallback(extra); - for (const resource of result.resources) { - templateResources.push({ - ...template.metadata, - // the defined resource metadata should override the template metadata if present - ...resource - }); - } - } - return { resources: [...resources, ...templateResources] }; - }); - this.server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => { - const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name, template]) => ({ - name, - uriTemplate: template.resourceTemplate.uriTemplate.toString(), - ...template.metadata - })); - return { resourceTemplates }; - }); - this.server.setRequestHandler(ReadResourceRequestSchema, async (request, extra) => { - const uri = new URL(request.params.uri); - const resource = this._registeredResources[uri.toString()]; - if (resource) { - if (!resource.enabled) { - throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} disabled`); - } - return resource.readCallback(uri, extra); - } - for (const template of Object.values(this._registeredResourceTemplates)) { - const variables = template.resourceTemplate.uriTemplate.match(uri.toString()); - if (variables) { - return template.readCallback(uri, variables, extra); - } - } - throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} not found`); - }); - this._resourceHandlersInitialized = true; - } - setPromptRequestHandlers() { - if (this._promptHandlersInitialized) { - return; - } - this.server.assertCanSetRequestHandler(getMethodValue(ListPromptsRequestSchema)); - this.server.assertCanSetRequestHandler(getMethodValue(GetPromptRequestSchema)); - this.server.registerCapabilities({ - prompts: { - listChanged: true - } - }); - this.server.setRequestHandler(ListPromptsRequestSchema, () => ({ - prompts: Object.entries(this._registeredPrompts).filter(([, prompt]) => prompt.enabled).map(([name, prompt]) => { - return { - name, - title: prompt.title, - description: prompt.description, - arguments: prompt.argsSchema ? promptArgumentsFromSchema(prompt.argsSchema) : void 0 - }; - }) - })); - this.server.setRequestHandler(GetPromptRequestSchema, async (request, extra) => { - const prompt = this._registeredPrompts[request.params.name]; - if (!prompt) { - throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`); - } - if (!prompt.enabled) { - throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} disabled`); - } - if (prompt.argsSchema) { - const argsObj = normalizeObjectSchema(prompt.argsSchema); - const parseResult = await safeParseAsync2(argsObj, request.params.arguments); - if (!parseResult.success) { - const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; - const errorMessage = getParseErrorMessage(error2); - throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`); - } - const args = parseResult.data; - const cb = prompt.callback; - return await Promise.resolve(cb(args, extra)); - } else { - const cb = prompt.callback; - return await Promise.resolve(cb(extra)); - } - }); - this._promptHandlersInitialized = true; - } - resource(name, uriOrTemplate, ...rest) { - let metadata; - if (typeof rest[0] === "object") { - metadata = rest.shift(); - } - const readCallback = rest[0]; - if (typeof uriOrTemplate === "string") { - if (this._registeredResources[uriOrTemplate]) { - throw new Error(`Resource ${uriOrTemplate} is already registered`); - } - const registeredResource = this._createRegisteredResource(name, void 0, uriOrTemplate, metadata, readCallback); - this.setResourceRequestHandlers(); - this.sendResourceListChanged(); - return registeredResource; - } else { - if (this._registeredResourceTemplates[name]) { - throw new Error(`Resource template ${name} is already registered`); - } - const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, void 0, uriOrTemplate, metadata, readCallback); - this.setResourceRequestHandlers(); - this.sendResourceListChanged(); - return registeredResourceTemplate; - } - } - registerResource(name, uriOrTemplate, config2, readCallback) { - if (typeof uriOrTemplate === "string") { - if (this._registeredResources[uriOrTemplate]) { - throw new Error(`Resource ${uriOrTemplate} is already registered`); - } - const registeredResource = this._createRegisteredResource(name, config2.title, uriOrTemplate, config2, readCallback); - this.setResourceRequestHandlers(); - this.sendResourceListChanged(); - return registeredResource; - } else { - if (this._registeredResourceTemplates[name]) { - throw new Error(`Resource template ${name} is already registered`); - } - const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, config2.title, uriOrTemplate, config2, readCallback); - this.setResourceRequestHandlers(); - this.sendResourceListChanged(); - return registeredResourceTemplate; - } - } - _createRegisteredResource(name, title, uri, metadata, readCallback) { - const registeredResource = { - name, - title, - metadata, - readCallback, - enabled: true, - disable: () => registeredResource.update({ enabled: false }), - enable: () => registeredResource.update({ enabled: true }), - remove: () => registeredResource.update({ uri: null }), - update: (updates) => { - if (typeof updates.uri !== "undefined" && updates.uri !== uri) { - delete this._registeredResources[uri]; - if (updates.uri) - this._registeredResources[updates.uri] = registeredResource; - } - if (typeof updates.name !== "undefined") - registeredResource.name = updates.name; - if (typeof updates.title !== "undefined") - registeredResource.title = updates.title; - if (typeof updates.metadata !== "undefined") - registeredResource.metadata = updates.metadata; - if (typeof updates.callback !== "undefined") - registeredResource.readCallback = updates.callback; - if (typeof updates.enabled !== "undefined") - registeredResource.enabled = updates.enabled; - this.sendResourceListChanged(); - } - }; - this._registeredResources[uri] = registeredResource; - return registeredResource; - } - _createRegisteredResourceTemplate(name, title, template, metadata, readCallback) { - const registeredResourceTemplate = { - resourceTemplate: template, - title, - metadata, - readCallback, - enabled: true, - disable: () => registeredResourceTemplate.update({ enabled: false }), - enable: () => registeredResourceTemplate.update({ enabled: true }), - remove: () => registeredResourceTemplate.update({ name: null }), - update: (updates) => { - if (typeof updates.name !== "undefined" && updates.name !== name) { - delete this._registeredResourceTemplates[name]; - if (updates.name) - this._registeredResourceTemplates[updates.name] = registeredResourceTemplate; - } - if (typeof updates.title !== "undefined") - registeredResourceTemplate.title = updates.title; - if (typeof updates.template !== "undefined") - registeredResourceTemplate.resourceTemplate = updates.template; - if (typeof updates.metadata !== "undefined") - registeredResourceTemplate.metadata = updates.metadata; - if (typeof updates.callback !== "undefined") - registeredResourceTemplate.readCallback = updates.callback; - if (typeof updates.enabled !== "undefined") - registeredResourceTemplate.enabled = updates.enabled; - this.sendResourceListChanged(); - } - }; - this._registeredResourceTemplates[name] = registeredResourceTemplate; - const variableNames = template.uriTemplate.variableNames; - const hasCompleter = Array.isArray(variableNames) && variableNames.some((v) => !!template.completeCallback(v)); - if (hasCompleter) { - this.setCompletionRequestHandler(); - } - return registeredResourceTemplate; - } - _createRegisteredPrompt(name, title, description, argsSchema, callback) { - const registeredPrompt = { - title, - description, - argsSchema: argsSchema === void 0 ? void 0 : objectFromShape(argsSchema), - callback, - enabled: true, - disable: () => registeredPrompt.update({ enabled: false }), - enable: () => registeredPrompt.update({ enabled: true }), - remove: () => registeredPrompt.update({ name: null }), - update: (updates) => { - if (typeof updates.name !== "undefined" && updates.name !== name) { - delete this._registeredPrompts[name]; - if (updates.name) - this._registeredPrompts[updates.name] = registeredPrompt; - } - if (typeof updates.title !== "undefined") - registeredPrompt.title = updates.title; - if (typeof updates.description !== "undefined") - registeredPrompt.description = updates.description; - if (typeof updates.argsSchema !== "undefined") - registeredPrompt.argsSchema = objectFromShape(updates.argsSchema); - if (typeof updates.callback !== "undefined") - registeredPrompt.callback = updates.callback; - if (typeof updates.enabled !== "undefined") - registeredPrompt.enabled = updates.enabled; - this.sendPromptListChanged(); - } - }; - this._registeredPrompts[name] = registeredPrompt; - if (argsSchema) { - const hasCompletable = Object.values(argsSchema).some((field) => { - const inner = field instanceof ZodOptional ? field._def?.innerType : field; - return isCompletable(inner); - }); - if (hasCompletable) { - this.setCompletionRequestHandler(); - } - } - return registeredPrompt; - } - _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) { - validateAndWarnToolName(name); - const registeredTool = { - title, - description, - inputSchema: getZodSchemaObject(inputSchema), - outputSchema: getZodSchemaObject(outputSchema), - annotations, - execution, - _meta, - handler, - enabled: true, - disable: () => registeredTool.update({ enabled: false }), - enable: () => registeredTool.update({ enabled: true }), - remove: () => registeredTool.update({ name: null }), - update: (updates) => { - if (typeof updates.name !== "undefined" && updates.name !== name) { - if (typeof updates.name === "string") { - validateAndWarnToolName(updates.name); - } - delete this._registeredTools[name]; - if (updates.name) - this._registeredTools[updates.name] = registeredTool; - } - if (typeof updates.title !== "undefined") - registeredTool.title = updates.title; - if (typeof updates.description !== "undefined") - registeredTool.description = updates.description; - if (typeof updates.paramsSchema !== "undefined") - registeredTool.inputSchema = objectFromShape(updates.paramsSchema); - if (typeof updates.outputSchema !== "undefined") - registeredTool.outputSchema = objectFromShape(updates.outputSchema); - if (typeof updates.callback !== "undefined") - registeredTool.handler = updates.callback; - if (typeof updates.annotations !== "undefined") - registeredTool.annotations = updates.annotations; - if (typeof updates._meta !== "undefined") - registeredTool._meta = updates._meta; - if (typeof updates.enabled !== "undefined") - registeredTool.enabled = updates.enabled; - this.sendToolListChanged(); - } - }; - this._registeredTools[name] = registeredTool; - this.setToolRequestHandlers(); - this.sendToolListChanged(); - return registeredTool; - } - /** - * tool() implementation. Parses arguments passed to overrides defined above. - */ - tool(name, ...rest) { - if (this._registeredTools[name]) { - throw new Error(`Tool ${name} is already registered`); - } - let description; - let inputSchema; - let outputSchema; - let annotations; - if (typeof rest[0] === "string") { - description = rest.shift(); - } - if (rest.length > 1) { - const firstArg = rest[0]; - if (isZodRawShapeCompat(firstArg)) { - inputSchema = rest.shift(); - if (rest.length > 1 && typeof rest[0] === "object" && rest[0] !== null && !isZodRawShapeCompat(rest[0])) { - annotations = rest.shift(); - } - } else if (typeof firstArg === "object" && firstArg !== null) { - annotations = rest.shift(); - } - } - const callback = rest[0]; - return this._createRegisteredTool(name, void 0, description, inputSchema, outputSchema, annotations, { taskSupport: "forbidden" }, void 0, callback); - } - /** - * Registers a tool with a config object and callback. - */ - registerTool(name, config2, cb) { - if (this._registeredTools[name]) { - throw new Error(`Tool ${name} is already registered`); - } - const { title, description, inputSchema, outputSchema, annotations, _meta } = config2; - return this._createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, { taskSupport: "forbidden" }, _meta, cb); - } - prompt(name, ...rest) { - if (this._registeredPrompts[name]) { - throw new Error(`Prompt ${name} is already registered`); - } - let description; - if (typeof rest[0] === "string") { - description = rest.shift(); - } - let argsSchema; - if (rest.length > 1) { - argsSchema = rest.shift(); - } - const cb = rest[0]; - const registeredPrompt = this._createRegisteredPrompt(name, void 0, description, argsSchema, cb); - this.setPromptRequestHandlers(); - this.sendPromptListChanged(); - return registeredPrompt; - } - /** - * Registers a prompt with a config object and callback. - */ - registerPrompt(name, config2, cb) { - if (this._registeredPrompts[name]) { - throw new Error(`Prompt ${name} is already registered`); - } - const { title, description, argsSchema } = config2; - const registeredPrompt = this._createRegisteredPrompt(name, title, description, argsSchema, cb); - this.setPromptRequestHandlers(); - this.sendPromptListChanged(); - return registeredPrompt; - } - /** - * Checks if the server is connected to a transport. - * @returns True if the server is connected - */ - isConnected() { - return this.server.transport !== void 0; - } - /** - * Sends a logging message to the client, if connected. - * Note: You only need to send the parameters object, not the entire JSON RPC message - * @see LoggingMessageNotification - * @param params - * @param sessionId optional for stateless and backward compatibility - */ - async sendLoggingMessage(params, sessionId) { - return this.server.sendLoggingMessage(params, sessionId); - } - /** - * Sends a resource list changed event to the client, if connected. - */ - sendResourceListChanged() { - if (this.isConnected()) { - this.server.sendResourceListChanged(); - } - } - /** - * Sends a tool list changed event to the client, if connected. - */ - sendToolListChanged() { - if (this.isConnected()) { - this.server.sendToolListChanged(); - } - } - /** - * Sends a prompt list changed event to the client, if connected. - */ - sendPromptListChanged() { - if (this.isConnected()) { - this.server.sendPromptListChanged(); - } - } -}; -var EMPTY_OBJECT_JSON_SCHEMA = { - type: "object", - properties: {} -}; -function isZodTypeLike(value) { - return value !== null && typeof value === "object" && "parse" in value && typeof value.parse === "function" && "safeParse" in value && typeof value.safeParse === "function"; -} -function isZodSchemaInstance(obj) { - return "_def" in obj || "_zod" in obj || isZodTypeLike(obj); -} -function isZodRawShapeCompat(obj) { - if (typeof obj !== "object" || obj === null) { - return false; - } - if (isZodSchemaInstance(obj)) { - return false; - } - if (Object.keys(obj).length === 0) { - return true; - } - return Object.values(obj).some(isZodTypeLike); -} -function getZodSchemaObject(schema) { - if (!schema) { - return void 0; - } - if (isZodRawShapeCompat(schema)) { - return objectFromShape(schema); - } - return schema; -} -function promptArgumentsFromSchema(schema) { - const shape = getObjectShape(schema); - if (!shape) - return []; - return Object.entries(shape).map(([name, field]) => { - const description = getSchemaDescription(field); - const isOptional = isSchemaOptional(field); - return { - name, - description, - required: !isOptional - }; - }); -} -function getMethodValue(schema) { - const shape = getObjectShape(schema); - const methodSchema = shape?.method; - if (!methodSchema) { - throw new Error("Schema is missing a method literal"); - } - const value = getLiteralValue(methodSchema); - if (typeof value === "string") { - return value; - } - throw new Error("Schema method literal must be a string"); -} -function createCompletionResult(suggestions) { - return { - completion: { - values: suggestions.slice(0, 100), - total: suggestions.length, - hasMore: suggestions.length > 100 - } - }; -} -var EMPTY_COMPLETION_RESULT = { - completion: { - values: [], - hasMore: false - } -}; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js -import process2 from "process"; - -// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js -var ReadBuffer = class { - append(chunk) { - this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk; - } - readMessage() { - if (!this._buffer) { - return null; - } - const index = this._buffer.indexOf("\n"); - if (index === -1) { - return null; - } - const line = this._buffer.toString("utf8", 0, index).replace(/\r$/, ""); - this._buffer = this._buffer.subarray(index + 1); - return deserializeMessage(line); - } - clear() { - this._buffer = void 0; - } -}; -function deserializeMessage(line) { - return JSONRPCMessageSchema.parse(JSON.parse(line)); -} -function serializeMessage(message) { - return JSON.stringify(message) + "\n"; -} - -// node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js -var StdioServerTransport = class { - constructor(_stdin = process2.stdin, _stdout = process2.stdout) { - this._stdin = _stdin; - this._stdout = _stdout; - this._readBuffer = new ReadBuffer(); - this._started = false; - this._ondata = (chunk) => { - this._readBuffer.append(chunk); - this.processReadBuffer(); - }; - this._onerror = (error2) => { - this.onerror?.(error2); - }; - } - /** - * Starts listening for messages on stdin. - */ - async start() { - if (this._started) { - throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically."); - } - this._started = true; - this._stdin.on("data", this._ondata); - this._stdin.on("error", this._onerror); - } - processReadBuffer() { - while (true) { - try { - const message = this._readBuffer.readMessage(); - if (message === null) { - break; - } - this.onmessage?.(message); - } catch (error2) { - this.onerror?.(error2); - } - } - } - async close() { - this._stdin.off("data", this._ondata); - this._stdin.off("error", this._onerror); - const remainingDataListeners = this._stdin.listenerCount("data"); - if (remainingDataListeners === 0) { - this._stdin.pause(); - } - this._readBuffer.clear(); - this.onclose?.(); - } - send(message) { - return new Promise((resolve) => { - const json = serializeMessage(message); - if (this._stdout.write(json)) { - resolve(); - } else { - this._stdout.once("drain", resolve); - } - }); - } -}; - -// lib/cache.ts -import Database from "better-sqlite3"; -import { mkdirSync } from "fs"; -import { dirname } from "path"; - -// lib/api-client.ts -async function fetchUserSummary() { - const config2 = getConfig(); - const url = `${config2.serverUrl}/api/analysis/user/summary`; - const response = await fetch(url, { - method: "GET", - headers: { - Accept: "application/json" - }, - signal: AbortSignal.timeout(1e4) - }); - if (!response.ok) { - const body = await response.json().catch(() => ({})); - throw new Error( - `Server error (${response.status}): ${body.message ?? "Unknown error"}` - ); - } - const data = await response.json(); - return data.summary; -} -async function verifyAuth() { - const config2 = getConfig(); - try { - const response = await fetch(`${config2.serverUrl}/api/auth/me`, { - headers: { - Accept: "application/json" - }, - signal: AbortSignal.timeout(5e3) - }); - if (!response.ok) return null; - const data = await response.json(); - return data; - } catch { - return null; - } -} - -// lib/cache.ts -var CACHE_TTL_MS = 24 * 60 * 60 * 1e3; -var db = null; -function getDb() { - if (db) return db; - const dbPath = getCacheDbPath(); - mkdirSync(dirname(dbPath), { recursive: true }); - db = new Database(dbPath); - db.pragma("journal_mode = WAL"); - db.pragma("foreign_keys = ON"); - db.exec(` - CREATE TABLE IF NOT EXISTS cached_insights ( - user_id TEXT PRIMARY KEY, - result_id TEXT NOT NULL, - profile_json TEXT NOT NULL, - growth_json TEXT NOT NULL, - insights_json TEXT NOT NULL, - fetched_at TEXT NOT NULL - ) - `); - return db; -} -function setCachedSummary(userId, summary) { - const database = getDb(); - database.prepare( - `INSERT OR REPLACE INTO cached_insights - (user_id, result_id, profile_json, growth_json, insights_json, fetched_at) - VALUES (?, ?, ?, ?, ?, ?)` - ).run( - userId, - summary.resultId, - JSON.stringify({ - resultId: summary.resultId, - analyzedAt: summary.analyzedAt, - profile: summary.profile - }), - JSON.stringify(summary.growthAreas), - JSON.stringify({ - strengths: summary.strengths, - antiPatterns: summary.antiPatterns, - kpt: summary.kpt - }), - (/* @__PURE__ */ new Date()).toISOString() - ); -} -function getCachedSummary(userId) { - const database = getDb(); - const row = database.prepare("SELECT * FROM cached_insights WHERE user_id = ?").get(userId); - if (!row) return null; - const profile = JSON.parse(row.profile_json); - const growthAreas = JSON.parse(row.growth_json); - const insights = JSON.parse(row.insights_json); - return { - resultId: profile.resultId, - analyzedAt: profile.analyzedAt, - profile: profile.profile, - growthAreas, - strengths: insights.strengths, - antiPatterns: insights.antiPatterns, - kpt: insights.kpt - }; -} -function isCacheStale(userId) { - const database = getDb(); - const row = database.prepare("SELECT fetched_at FROM cached_insights WHERE user_id = ?").get(userId); - if (!row) return true; - const fetchedAt = new Date(row.fetched_at).getTime(); - return Date.now() - fetchedAt > CACHE_TTL_MS; -} -async function getSummaryWithCache(userId) { - const cached = getCachedSummary(userId); - if (cached && !isCacheStale(userId)) { - return cached; - } - try { - const fresh = await fetchUserSummary(); - if (fresh) { - setCachedSummary(userId, fresh); - return fresh; - } - return cached; - } catch { - return cached; - } -} -function closeCache() { - if (db) { - db.close(); - db = null; - } -} - -// lib/results-db.ts -import Database2 from "better-sqlite3"; -import { mkdirSync as mkdirSync2, readFileSync } from "fs"; -import { join } from "path"; - -// lib/stage-db.ts -var migratedDb = null; -var REQUIRED_STAGE_NAMES = [ - "sessionSummaries", - // 5 extractors (v2) - "extractAiPartnership", - "extractSessionCraft", - "extractToolMastery", - "extractSkillResilience", - "extractSessionMastery", - // 5 domain writers (v2) - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery", - // Context + classification - "projectSummaries", - "weeklyInsights", - "typeClassification", - "evidenceVerification", - "contentWriter" -]; -function getDb3() { - const db3 = getDb2(); - if (migratedDb !== db3) { - db3.exec(` - CREATE TABLE IF NOT EXISTS stage_outputs ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, - stage TEXT NOT NULL, - data_json TEXT NOT NULL, - created_at TEXT NOT NULL DEFAULT (datetime('now')), - UNIQUE(run_id, stage) - ); - - CREATE INDEX IF NOT EXISTS idx_stage_outputs_run ON stage_outputs(run_id); - CREATE INDEX IF NOT EXISTS idx_stage_outputs_stage ON stage_outputs(stage); - - CREATE TABLE IF NOT EXISTS stage_statuses ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, - stage TEXT NOT NULL, - required INTEGER NOT NULL DEFAULT 0, - status TEXT NOT NULL, - attempt_count INTEGER NOT NULL DEFAULT 0, - last_error TEXT, - created_at TEXT NOT NULL DEFAULT (datetime('now')), - updated_at TEXT NOT NULL DEFAULT (datetime('now')), - UNIQUE(run_id, stage) - ); - - CREATE INDEX IF NOT EXISTS idx_stage_statuses_run ON stage_statuses(run_id); - CREATE INDEX IF NOT EXISTS idx_stage_statuses_stage ON stage_statuses(stage); - `); - migratedDb = db3; - } - return db3; -} -function isRequiredStage(stage) { - return REQUIRED_STAGE_NAMES.includes(stage); -} -function recordStageStatus(runId, stage, params) { - const database = getDb3(); - database.prepare(` - INSERT INTO stage_statuses ( - run_id, - stage, - required, - status, - attempt_count, - last_error, - created_at, - updated_at - ) VALUES (?, ?, ?, ?, 1, ?, datetime('now'), datetime('now')) - ON CONFLICT(run_id, stage) DO UPDATE SET - required = excluded.required, - status = excluded.status, - attempt_count = stage_statuses.attempt_count + 1, - last_error = excluded.last_error, - updated_at = datetime('now') - `).run( - runId, - stage, - params.required ?? isRequiredStage(stage) ? 1 : 0, - params.status, - params.lastError ?? null - ); -} -function getStageStatuses(runId) { - const database = getDb3(); - const rows = database.prepare(` - SELECT run_id, stage, required, status, attempt_count, last_error, updated_at, created_at - FROM stage_statuses - WHERE run_id = ? - ORDER BY stage - `).all(runId); - return rows.map((row) => ({ - runId: row.run_id, - stage: row.stage, - required: row.required === 1, - status: row.status, - attemptCount: row.attempt_count, - lastError: row.last_error, - updatedAt: row.updated_at, - createdAt: row.created_at - })); -} -function saveStageOutput(runId, stage, data) { - const database = getDb3(); - database.prepare( - `INSERT OR REPLACE INTO stage_outputs (run_id, stage, data_json) - VALUES (?, ?, ?)` - ).run(runId, stage, JSON.stringify(data)); -} -function getStageOutput(runId, stage) { - const database = getDb3(); - const row = database.prepare("SELECT data_json FROM stage_outputs WHERE run_id = ? AND stage = ?").get(runId, stage); - return row ? JSON.parse(row.data_json) : null; -} -function getAllStageOutputs(runId) { - const database = getDb3(); - const rows = database.prepare("SELECT stage, data_json FROM stage_outputs WHERE run_id = ? ORDER BY stage").all(runId); - const result = {}; - for (const row of rows) { - result[row.stage] = JSON.parse(row.data_json); - } - return result; -} -function closeStageDb() { - migratedDb = null; -} - -// lib/results-db.ts -var DB_FILE = "results.db"; -var db2 = null; -function ensureColumn(database, tableName, columnName, definition18) { - const columns = database.prepare(`PRAGMA table_info(${tableName})`).all(); - if (!columns.some((column) => column.name === columnName)) { - database.exec(`ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${definition18}`); - } -} -function getDb2() { - if (db2) return db2; - const dataDir = getPluginDataDir(); - mkdirSync2(dataDir, { recursive: true }); - db2 = new Database2(join(dataDir, DB_FILE)); - db2.pragma("journal_mode = WAL"); - db2.pragma("foreign_keys = ON"); - db2.exec(` - CREATE TABLE IF NOT EXISTS analysis_runs ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - analyzed_at TEXT NOT NULL, - metrics_json TEXT NOT NULL, - scores_json TEXT NOT NULL, - type_json TEXT, - content_json TEXT, - phase1_output_json TEXT, - activity_sessions_json TEXT, - evaluation_json TEXT, - created_at TEXT NOT NULL DEFAULT (datetime('now')) - ); - - CREATE TABLE IF NOT EXISTS domain_results ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE, - domain TEXT NOT NULL, - score REAL NOT NULL, - confidence REAL NOT NULL DEFAULT 0.0, - data_json TEXT NOT NULL, - created_at TEXT NOT NULL DEFAULT (datetime('now')), - UNIQUE(run_id, domain) - ); - - CREATE INDEX IF NOT EXISTS idx_domain_results_domain ON domain_results(domain); - CREATE INDEX IF NOT EXISTS idx_domain_results_run ON domain_results(run_id); - `); - ensureColumn(db2, "analysis_runs", "phase1_output_json", "TEXT"); - ensureColumn(db2, "analysis_runs", "activity_sessions_json", "TEXT"); - ensureColumn(db2, "analysis_runs", "evaluation_json", "TEXT"); - return db2; -} -function createAnalysisRun(params) { - const database = getDb2(); - const analyzedAt = params.analyzedAt ?? (/* @__PURE__ */ new Date()).toISOString(); - const result = database.prepare(` - INSERT INTO analysis_runs ( - analyzed_at, - metrics_json, - scores_json, - phase1_output_json, - activity_sessions_json - ) - VALUES (?, ?, ?, ?, ?) - `).run( - analyzedAt, - JSON.stringify(params.metrics), - JSON.stringify(params.scores), - params.phase1Output ? JSON.stringify(params.phase1Output) : null, - params.activitySessions ? JSON.stringify(params.activitySessions) : null - ); - return Number(result.lastInsertRowid); -} -function getCurrentRunId() { - try { - const runIdStr = readFileSync(join(getPluginDataDir(), "current-run-id.txt"), "utf-8"); - return parseInt(runIdStr.trim(), 10); - } catch { - return getLatestRunId(); - } -} -function getLatestRunId() { - const database = getDb2(); - const row = database.prepare("SELECT id FROM analysis_runs ORDER BY id DESC LIMIT 1").get(); - return row?.id ?? null; -} -function getAnalysisRun(runId) { - const database = getDb2(); - const row = database.prepare("SELECT * FROM analysis_runs WHERE id = ?").get(runId); - if (!row) return null; - return { - id: row.id, - analyzedAt: row.analyzed_at, - metrics: JSON.parse(row.metrics_json), - scores: JSON.parse(row.scores_json), - typeResult: row.type_json ? JSON.parse(row.type_json) : null, - phase1Output: row.phase1_output_json ? JSON.parse(row.phase1_output_json) : null, - activitySessions: row.activity_sessions_json ? JSON.parse(row.activity_sessions_json) : null, - evaluation: row.evaluation_json ? JSON.parse(row.evaluation_json) : null, - content: row.content_json ? JSON.parse(row.content_json) : null - }; -} -function saveDomainResult(runId, result) { - const database = getDb2(); - database.prepare(` - INSERT OR REPLACE INTO domain_results (run_id, domain, score, confidence, data_json) - VALUES (?, ?, ?, ?, ?) - `).run( - runId, - result.domain, - result.overallScore, - result.confidenceScore, - JSON.stringify(result) - ); -} -function getDomainResults(runId) { - const database = getDb2(); - const rows = database.prepare("SELECT data_json FROM domain_results WHERE run_id = ? ORDER BY domain").all(runId); - return rows.map((row) => JSON.parse(row.data_json)); -} -function getDomainResult(runId, domain) { - const database = getDb2(); - const row = database.prepare("SELECT data_json FROM domain_results WHERE run_id = ? AND domain = ?").get(runId, domain); - return row ? JSON.parse(row.data_json) : null; -} -function saveTypeResult(runId, typeResult) { - const database = getDb2(); - database.prepare("UPDATE analysis_runs SET type_json = ? WHERE id = ?").run(JSON.stringify(typeResult), runId); -} -function saveAssembledArtifacts(runId, activitySessions, evaluation) { - const database = getDb2(); - database.prepare(` - UPDATE analysis_runs - SET activity_sessions_json = ?, evaluation_json = ? - WHERE id = ? - `).run(JSON.stringify(activitySessions), JSON.stringify(evaluation), runId); -} -function assembleCanonicalRun(runId = getLatestRunId() ?? void 0) { - if (!runId) return null; - const run = getAnalysisRun(runId); - if (!run?.phase1Output) return null; - const stageOutputs = getAllStageOutputs(runId); - const assembledRun = assembleCanonicalAnalysisRun({ - runId, - analyzedAt: run.analyzedAt, - phase1Output: run.phase1Output, - deterministicScores: run.scores, - stageOutputs, - typeResult: run.typeResult, - domainResults: getDomainResults(runId) - }); - saveAssembledArtifacts(runId, assembledRun.activitySessions, assembledRun.evaluation); - return assembledRun; -} -function closeResultsDb() { - if (db2) { - db2.close(); - db2 = null; - } -} - -// mcp/tools/get-developer-profile.ts -var definition = { - name: "get_developer_profile", - description: "Get the current developer's AI collaboration profile \u2014 their primary type (architect/analyst/conductor/speedrunner/trendsetter), control level (navigator/collaborator/delegator), domain scores (0-100), and a brief personality summary. Use this to understand how the developer works with AI.", - inputSchema: { - type: "object", - properties: {}, - required: [] - } -}; -function formatResult(summary) { - if (!summary) { - return JSON.stringify({ - status: "no_data", - message: "No analysis available yet. The developer needs to run at least one analysis first." - }); - } - const { profile } = summary; - return JSON.stringify({ - primaryType: profile.primaryType, - controlLevel: profile.controlLevel, - matrixName: profile.matrixName, - personalitySummary: profile.personalitySummary, - domainScores: profile.domainScores, - analyzedAt: summary.analyzedAt - }); -} - -// mcp/tools/get-growth-areas.ts -var definition2 = { - name: "get_growth_areas", - description: "Get the developer's top growth areas \u2014 specific areas where they can improve their AI collaboration skills. Each area includes a title, domain, severity, and actionable recommendation. Optionally filter by domain (aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery).", - inputSchema: { - type: "object", - properties: { - domain: { - type: "string", - description: "Filter by domain key. One of: aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery", - enum: [ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery" - ] - } - }, - required: [] - } -}; -function formatResult2(summary, args) { - if (!summary) { - return JSON.stringify({ - status: "no_data", - message: "No analysis available yet. The developer needs to run at least one analysis first." - }); - } - let areas = summary.growthAreas; - if (args.domain) { - areas = areas.filter((a) => a.domain === args.domain); - } - const top = areas.slice(0, 3); - return JSON.stringify({ - growthAreas: top.map((a) => ({ - title: a.title, - domain: a.domain, - severity: a.severity, - recommendation: a.recommendation - })), - totalCount: areas.length, - analyzedAt: summary.analyzedAt - }); -} - -// mcp/tools/get-recent-insights.ts -var definition3 = { - name: "get_recent_insights", - description: `Get the developer's recent analysis insights. Choose a category: "strengths" for top skills, "anti_patterns" for inefficiency patterns to avoid, or "kpt" for a Keep/Problem/Try summary. Defaults to "kpt" which gives the most actionable overview.`, - inputSchema: { - type: "object", - properties: { - category: { - type: "string", - description: 'Category of insights to return. "strengths" = top strengths by domain, "anti_patterns" = inefficiency patterns detected, "kpt" = Keep/Problem/Try actionable summary', - enum: ["strengths", "anti_patterns", "kpt"], - default: "kpt" - } - }, - required: [] - } -}; -function formatResult3(summary, args) { - if (!summary) { - return JSON.stringify({ - status: "no_data", - message: "No analysis available yet. The developer needs to run at least one analysis first." - }); - } - const category = args.category ?? "kpt"; - switch (category) { - case "strengths": - return JSON.stringify({ - strengths: summary.strengths.map((s) => ({ - domain: s.domain, - domainLabel: s.domainLabel, - topStrength: s.topStrength, - score: s.domainScore - })), - analyzedAt: summary.analyzedAt - }); - case "anti_patterns": - return JSON.stringify({ - antiPatterns: summary.antiPatterns.map((ap) => ({ - pattern: ap.pattern, - frequency: ap.frequency, - impact: ap.impact - })), - analyzedAt: summary.analyzedAt - }); - case "kpt": - default: - return JSON.stringify({ - keep: summary.kpt.keep, - problem: summary.kpt.problem, - tryNext: summary.kpt.tryNext, - analyzedAt: summary.analyzedAt - }); - } -} - -// lib/core/multi-source-session-scanner.ts -import { mkdir, readFile as readFile2, writeFile } from "fs/promises"; -import { join as join7 } from "path"; - -// lib/scanner/project-name-resolver.ts -import { readdirSync, statSync } from "fs"; -import { join as join2 } from "path"; -import { homedir } from "os"; - -// lib/scanner/levenshtein.ts -function levenshteinDistance(a, b) { - const m = a.length; - const n = b.length; - if (m === 0) return n; - if (n === 0) return m; - let prev = new Array(n + 1); - let curr = new Array(n + 1); - for (let j = 0; j <= n; j++) { - prev[j] = j; - } - for (let i = 1; i <= m; i++) { - curr[0] = i; - for (let j = 1; j <= n; j++) { - const cost = a[i - 1] === b[j - 1] ? 0 : 1; - curr[j] = Math.min( - prev[j] + 1, - curr[j - 1] + 1, - prev[j - 1] + cost - ); - } - [prev, curr] = [curr, prev]; - } - return prev[n]; -} - -// lib/scanner/path-encoding.ts -function isWindowsEncodedPath(encoded) { - return /^[A-Za-z]--/.test(encoded); -} -function decodeProjectPathCrossPlatform(encoded) { - if (isWindowsEncodedPath(encoded)) { - const driveLetter = encoded[0]; - const rest = encoded.slice(3); - if (!rest) return `${driveLetter}:/`; - return `${driveLetter}:/${rest.replace(/-/g, "/")}`; - } - if (encoded.startsWith("-")) { - return encoded.replace(/-/g, "/"); - } - return encoded; -} - -// lib/scanner/project-name-resolver.ts -var UNIX_TEMP_PREFIXES = ["-private-var-", "-tmp-", "-temp-", "-var-folders-"]; -var WINDOWS_TEMP_SEGMENTS = ["appdata-local-temp", "temp", "tmp"]; -var CONTAINER_DIRS = /* @__PURE__ */ new Set([ - "projects", - "repos", - "code", - "src", - "work", - "dev", - "workspace", - "github", - "development", - "coding", - "repo", - "git" -]); -var cache = /* @__PURE__ */ new Map(); -function dirExists(path) { - try { - return statSync(path).isDirectory(); - } catch { - return false; - } -} -function findClosestDirectory(parentPath, targetName) { - try { - const entries = readdirSync(parentPath, { withFileTypes: true }); - let bestMatch = null; - let bestDistance = Infinity; - for (const entry of entries) { - if (!entry.isDirectory()) continue; - const dist = levenshteinDistance(entry.name.toLowerCase(), targetName.toLowerCase()); - if (dist > 0 && dist <= 1 && dist < bestDistance) { - bestDistance = dist; - bestMatch = entry.name; - } - } - return bestMatch; - } catch { - return null; - } -} -function resolveSegments(basePath, segments) { - if (segments.length === 0) return []; - for (let len = segments.length; len >= 1; len--) { - const candidate = segments.slice(0, len).join("-"); - const candidatePath = basePath ? join2(basePath, candidate) : `/${candidate}`; - if (dirExists(candidatePath)) { - const rest = resolveSegments(candidatePath, segments.slice(len)); - return [candidate, ...rest]; - } - } - const fallbackName = segments.join("-"); - if (basePath && fallbackName.length >= 4) { - const fuzzyMatch = findClosestDirectory(basePath, fallbackName); - if (fuzzyMatch) return [fuzzyMatch]; - } - return [fallbackName]; -} -function resolveProjectName(encodedDirName) { - const cached = cache.get(encodedDirName); - if (cached !== void 0) return cached; - const result = resolveProjectNameUncached(encodedDirName); - cache.set(encodedDirName, result); - return result; -} -function resolveProjectNameUncached(encodedDirName) { - if (isWindowsEncodedPath(encodedDirName)) { - return resolveWindowsPath(encodedDirName); - } - if (!encodedDirName.startsWith("-")) { - return encodedDirName || "unknown"; - } - const lower = encodedDirName.toLowerCase(); - for (const prefix of UNIX_TEMP_PREFIXES) { - if (lower.startsWith(prefix)) { - return "(temp)"; - } - } - const segments = encodedDirName.slice(1).split("-").filter(Boolean); - if (segments.length === 0) return "unknown"; - const home = homedir(); - const homeParts = home.split(/[/\\]/).filter(Boolean); - let startSegments = segments; - if (homeParts.length > 0 && segments.length > homeParts.length) { - let matchesHome = true; - for (let i = 0; i < homeParts.length; i++) { - if (segments[i] !== homeParts[i]) { - matchesHome = false; - break; - } - } - if (matchesHome) { - startSegments = segments.slice(homeParts.length); - if (startSegments.length === 0) return "unknown"; - const resolved2 = resolveSegments(home, startSegments); - return stripContainerDirs(resolved2); - } - } - const resolved = resolveSegments("", segments); - if (resolved.length === 0) return "unknown"; - return stripContainerDirs(resolved); -} -function resolveWindowsPath(encodedDirName) { - const driveLetter = encodedDirName[0]; - const rest = encodedDirName.slice(3); - if (!rest) return "unknown"; - const segments = rest.split("-").filter(Boolean); - if (segments.length === 0) return "unknown"; - const lowerRest = rest.toLowerCase(); - for (const tempSeg of WINDOWS_TEMP_SEGMENTS) { - if (lowerRest.startsWith(tempSeg)) { - return "(temp)"; - } - } - const home = homedir(); - const homeParts = home.split(/[/\\]/).filter(Boolean); - const homePartsNoDrive = homeParts[0]?.match(/^[A-Za-z]:$/) ? homeParts.slice(1) : homeParts; - if (homePartsNoDrive.length > 0 && segments.length > homePartsNoDrive.length) { - let matchesHome = true; - for (let i = 0; i < homePartsNoDrive.length; i++) { - if (segments[i] !== homePartsNoDrive[i]) { - matchesHome = false; - break; - } - } - if (matchesHome) { - const afterHome = segments.slice(homePartsNoDrive.length); - if (afterHome.length === 0) return "unknown"; - const resolved2 = resolveSegments(home, afterHome); - return stripContainerDirs(resolved2); - } - } - const driveRoot = `${driveLetter}:/`; - const resolved = resolveSegments(driveRoot, segments); - if (resolved.length === 0) return "unknown"; - return stripContainerDirs(resolved); -} -function stripContainerDirs(parts) { - if (parts.length === 0) return "unknown"; - let start = 0; - while (start < parts.length - 1 && CONTAINER_DIRS.has(parts[start].toLowerCase())) { - start++; - } - const remaining = parts.slice(start); - return remaining.join("/") || "unknown"; -} - -// lib/scanner/sources/base.ts -var BaseSessionSource = class { - /** - * Decode project path from encoded directory name. - * Handles both Unix (-Users-dev-app) and Windows (C--alphacut) formats. - */ - decodeProjectPath(encoded) { - return decodeProjectPathCrossPlatform(encoded); - } - /** - * Resolve project name from encoded directory name using filesystem probing - */ - resolveProjectName(encodedDirName) { - return resolveProjectName(encodedDirName); - } - /** - * Get project name from path (last segment) - * @deprecated Use resolveProjectName() for accurate names - */ - getProjectName(projectPath) { - const parts = projectPath.split(/[/\\]/).filter(Boolean); - const filtered = parts.filter((p) => !/^[A-Za-z]:$/.test(p)); - return filtered[filtered.length - 1] || "unknown"; - } - /** - * Calculate session duration in seconds - */ - calculateDuration(startTime, endTime) { - return Math.floor((endTime.getTime() - startTime.getTime()) / 1e3); - } - /** - * Compute session statistics from parsed messages - */ - computeStats(messages) { - let userMessageCount = 0; - let assistantMessageCount = 0; - let toolCallCount = 0; - let totalInputTokens = 0; - let totalOutputTokens = 0; - const toolsUsed = /* @__PURE__ */ new Set(); - for (const msg of messages) { - if (msg.role === "user") { - userMessageCount++; - } else { - assistantMessageCount++; - if (msg.toolCalls) { - toolCallCount += msg.toolCalls.length; - for (const tool of msg.toolCalls) { - toolsUsed.add(tool.name); - } - } - if (msg.tokenUsage) { - totalInputTokens += msg.tokenUsage.input; - totalOutputTokens += msg.tokenUsage.output; - } - } - } - return { - userMessageCount, - assistantMessageCount, - toolCallCount, - uniqueToolsUsed: Array.from(toolsUsed).sort(), - totalInputTokens, - totalOutputTokens - }; - } -}; - -// lib/scanner/sources/claude-code.ts -import { readFile, readdir, stat } from "fs/promises"; -import { join as join3, basename } from "path"; -import { homedir as homedir2 } from "os"; -var CLAUDE_PROJECTS_DIR = join3(homedir2(), ".claude", "projects"); -var ClaudeCodeSource = class extends BaseSessionSource { - name = "claude-code"; - displayName = "Claude Code"; - baseDir; - constructor(baseDir) { - super(); - this.baseDir = baseDir ?? CLAUDE_PROJECTS_DIR; - } - getBaseDir() { - return this.baseDir; - } - async isAvailable() { - try { - await stat(this.baseDir); - return true; - } catch { - return false; - } - } - async collectFileMetadata(config2) { - const minSize = config2?.minFileSize ?? 0; - const maxSize = config2?.maxFileSize ?? Infinity; - const projectDirs = await this.listProjectDirs(); - const allFiles = []; - for (const dir of projectDirs) { - const files = await this.listSessionFiles(dir); - for (const file of files) { - try { - const stats = await stat(file); - if (stats.isFile() && stats.size >= minSize && stats.size <= maxSize) { - allFiles.push({ - filePath: file, - fileSize: stats.size, - mtime: stats.mtime, - projectDirName: basename(dir), - source: this.name - }); - } - } catch { - } - } - } - return allFiles; - } - async extractMetadata(filePath, content) { - const lines = content.split("\n").filter((l) => l.trim()); - if (lines.length === 0) return null; - const fileName = basename(filePath, ".jsonl"); - let messageCount = 0; - let firstTimestamp = null; - let lastTimestamp = null; - for (const line of lines) { - const parsed = this.parseJSONLLine(line); - if (parsed && (parsed.type === "user" || parsed.type === "assistant")) { - messageCount++; - const ts = new Date(parsed.timestamp); - if (!firstTimestamp || ts < firstTimestamp) { - firstTimestamp = ts; - } - if (!lastTimestamp || ts > lastTimestamp) { - lastTimestamp = ts; - } - } - } - if (!firstTimestamp || !lastTimestamp) return null; - const projectDirName = basename(join3(filePath, "..")); - const projectPath = this.decodeProjectPath(projectDirName); - const durationSeconds = this.calculateDuration(firstTimestamp, lastTimestamp); - return { - sessionId: fileName, - projectPath, - projectName: this.resolveProjectName(projectDirName), - timestamp: firstTimestamp, - messageCount, - durationSeconds, - filePath, - source: this.name - }; - } - async parseSessionContent(sessionId, projectPath, projectName, content) { - const lines = this.parseJSONLContent(content); - if (lines.length === 0) return null; - const timestamps = lines.map((m) => new Date(m.timestamp)); - const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime()))); - const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime()))); - const durationSeconds = this.calculateDuration(startTime, endTime); - const claudeCodeVersion = lines[0].version || "unknown"; - const toolResultsMap = /* @__PURE__ */ new Map(); - for (const line of lines) { - if (line.type === "user") { - const msgContent = line.message.content; - if (Array.isArray(msgContent)) { - for (const block of msgContent) { - if (block.type === "tool_result" && "tool_use_id" in block) { - const resultContent = typeof block.content === "string" ? block.content : JSON.stringify(block.content); - toolResultsMap.set(block.tool_use_id, { - content: resultContent, - isError: block.is_error ?? false - }); - } - } - } - } - } - const messages = []; - for (const line of lines) { - if (line.type === "user") { - const textContent = this.extractTextContent(line.message.content); - if (!textContent.trim()) continue; - messages.push({ - uuid: line.uuid, - role: "user", - timestamp: new Date(line.timestamp), - content: textContent, - ...line.isMeta ? { isMeta: true } : {}, - ...typeof line.sourceToolUseID === "string" ? { sourceToolUseID: line.sourceToolUseID } : {}, - ...line.toolUseResult !== void 0 ? { toolUseResult: line.toolUseResult } : {} - }); - } else if (line.type === "assistant") { - const textContent = this.extractTextContent(line.message.content); - const toolCalls = Array.isArray(line.message.content) ? this.extractToolCalls(line.message.content, toolResultsMap) : void 0; - messages.push({ - uuid: line.uuid, - role: "assistant", - timestamp: new Date(line.timestamp), - content: textContent, - toolCalls, - tokenUsage: line.message.usage ? { - input: line.message.usage.input_tokens, - output: line.message.usage.output_tokens - } : void 0 - }); - } - } - if (messages.length === 0) return null; - const stats = this.computeStats(messages); - return { - sessionId, - projectPath, - projectName, - startTime, - endTime, - durationSeconds, - claudeCodeVersion, - messages, - stats, - source: this.name - }; - } - async readSessionContent(filePath) { - return readFile(filePath, "utf-8"); - } - // ───────────────────────────────────────────────────────────────────────── - // Private helper methods - // ───────────────────────────────────────────────────────────────────────── - async listProjectDirs() { - try { - const entries = await readdir(this.baseDir); - const dirs = []; - for (const entry of entries) { - const fullPath = join3(this.baseDir, entry); - try { - const stats = await stat(fullPath); - if (stats.isDirectory()) { - dirs.push(fullPath); - } - } catch { - } - } - return dirs; - } catch { - return []; - } - } - async listSessionFiles(projectDir) { - try { - const files = await readdir(projectDir); - return files.filter((f) => f.endsWith(".jsonl")).map((f) => join3(projectDir, f)); - } catch { - return []; - } - } - parseJSONLLine(line) { - const trimmed = line.trim(); - if (!trimmed) return null; - try { - return JSON.parse(trimmed); - } catch { - return null; - } - } - parseJSONLContent(content) { - const lines = []; - for (const line of content.split("\n")) { - const trimmed = line.trim(); - if (!trimmed) continue; - try { - const parsed = JSON.parse(trimmed); - if (parsed.type === "user" || parsed.type === "assistant") { - lines.push(parsed); - } - } catch { - } - } - return lines; - } - extractTextContent(content) { - if (typeof content === "string") return content; - const textParts = []; - for (const block of content) { - if (block.type === "text" && "text" in block) { - textParts.push(block.text); - } - } - return textParts.join("\n"); - } - extractToolCalls(content, toolResultsMap) { - const toolCalls = []; - for (const block of content) { - if (block.type === "tool_use" && "id" in block && "name" in block) { - const result = toolResultsMap.get(block.id); - toolCalls.push({ - id: block.id, - name: block.name, - input: block.input || {}, - result: result?.content, - isError: result?.isError - }); - } - } - return toolCalls.length > 0 ? toolCalls : void 0; - } -}; -var claudeCodeSource = new ClaudeCodeSource(); - -// lib/scanner/sources/cursor.ts -import { readdir as readdir2, stat as stat2 } from "fs/promises"; -import { join as join4, basename as basename2, dirname as dirname2 } from "path"; -import { homedir as homedir3 } from "os"; - -// lib/scanner/tool-mapping.ts -var TOOL_MAPPING = { - /** - * Claude Code uses PascalCase tool names - * No mapping needed - this is the canonical format - */ - "claude-code": {}, - /** - * Cursor uses snake_case tool names - * Map to Claude Code equivalents - */ - "cursor": { - // File operations - "read_file": "Read", - "write_file": "Write", - "edit_file": "Edit", - "list_dir": "Bash", - // ls equivalent - "list_directory": "Bash", - "LS": "Bash", - // Cursor's PascalCase variant - // Search operations - "grep_search": "Grep", - "file_search": "Glob", - "codebase_search": "Grep", - "search": "Grep", - // Terminal operations - "run_terminal_cmd": "Bash", - "run_command": "Bash", - "terminal": "Bash", - // Web operations - "web_search": "WebSearch", - "fetch_url": "WebFetch", - "browser": "WebFetch", - // Code operations - "code_edit": "Edit", - "apply_diff": "Edit", - "insert_code": "Edit", - "replace_code": "Edit", - "ApplyPatch": "Edit", - // Cursor's PascalCase variant - // Shell operations (Cursor uses 'Shell' directly) - "Shell": "Bash", - // Notebook operations - "notebook_edit": "NotebookEdit", - "jupyter": "NotebookEdit", - // MCP/Plugin operations - "mcp_call": "Skill", - "plugin": "Skill", - // Task/Agent operations - "spawn_agent": "Task", - "delegate": "Task", - // Misc - "ask_user": "AskUserQuestion", - "user_input": "AskUserQuestion" - }, - /** - * Cursor Composer uses the same snake_case tool names as Cursor - * Reuses the same mapping for consistency - */ - "cursor-composer": { - // File operations - "read_file": "Read", - "write_file": "Write", - "edit_file": "Edit", - "list_dir": "Bash", - "list_directory": "Bash", - "LS": "Bash", - // Search operations - "grep_search": "Grep", - "file_search": "Glob", - "codebase_search": "Grep", - "search": "Grep", - // Terminal operations - "run_terminal_cmd": "Bash", - "run_command": "Bash", - "terminal": "Bash", - // Web operations - "web_search": "WebSearch", - "fetch_url": "WebFetch", - "browser": "WebFetch", - // Code operations - "code_edit": "Edit", - "apply_diff": "Edit", - "insert_code": "Edit", - "replace_code": "Edit", - "ApplyPatch": "Edit", - // Shell operations - "Shell": "Bash", - // Notebook operations - "notebook_edit": "NotebookEdit", - "jupyter": "NotebookEdit", - // MCP/Plugin operations - "mcp_call": "Skill", - "plugin": "Skill", - // Task/Agent operations - "spawn_agent": "Task", - "delegate": "Task", - // Misc - "ask_user": "AskUserQuestion", - "user_input": "AskUserQuestion" - } -}; -function normalizeToolName(toolName, source) { - const mapping = TOOL_MAPPING[source]; - if (mapping && toolName in mapping) { - return mapping[toolName]; - } - return toolName; -} -var CURSOR_COMPOSER_TOOL_IDS = { - 15: "run_terminal_cmd", - 38: "edit_file", - 39: "list_dir", - 40: "write_file" -}; -function resolveComposerToolId(numericId) { - const toolName = CURSOR_COMPOSER_TOOL_IDS[numericId]; - if (toolName) { - return normalizeToolName(toolName, "cursor-composer"); - } - return `tool_${numericId}`; -} - -// lib/scanner/sources/sqlite-loader.ts -var cachedConstructor = null; -var loadAttempted = false; -async function loadSqlite() { - if (loadAttempted) return cachedConstructor; - loadAttempted = true; - try { - const sqlite = await import("better-sqlite3"); - cachedConstructor = sqlite.default ?? sqlite; - return cachedConstructor; - } catch { - return null; - } -} - -// lib/scanner/sources/cursor.ts -var CURSOR_CHATS_DIR = join4(homedir3(), ".cursor", "chats"); -var CursorSource = class extends BaseSessionSource { - name = "cursor"; - displayName = "Cursor"; - baseDir; - constructor(baseDir) { - super(); - this.baseDir = baseDir ?? CURSOR_CHATS_DIR; - } - getBaseDir() { - return this.baseDir; - } - async isAvailable() { - try { - await stat2(this.baseDir); - const Database3 = await loadSqlite(); - return Database3 !== null; - } catch { - return false; - } - } - async collectFileMetadata(config2) { - const minSize = config2?.minFileSize ?? 0; - const maxSize = config2?.maxFileSize ?? Infinity; - const allFiles = []; - try { - const workspaceDirs = await this.listWorkspaceDirs(); - for (const workspaceDir of workspaceDirs) { - const sessionDirs = await this.listSessionDirs(workspaceDir); - for (const sessionDir of sessionDirs) { - const storeDbPath = join4(sessionDir, "store.db"); - try { - const stats = await stat2(storeDbPath); - if (stats.isFile() && stats.size >= minSize && stats.size <= maxSize) { - const workspaceHash = basename2(workspaceDir); - allFiles.push({ - filePath: storeDbPath, - fileSize: stats.size, - mtime: stats.mtime, - projectDirName: workspaceHash, - source: this.name - }); - } - } catch { - } - } - } - } catch { - } - return allFiles; - } - async extractMetadata(filePath, _content) { - const Database3 = await loadSqlite(); - if (!Database3) return null; - try { - const db3 = new Database3(filePath); - try { - const conversation = this.parseConversation(db3); - if (!conversation || conversation.messages.length === 0) { - db3.close(); - return null; - } - const messages = conversation.messages.filter( - (m) => m.role === "user" || m.role === "assistant" - ); - if (messages.length === 0) { - db3.close(); - return null; - } - const timestamps = messages.map((m) => this.extractTimestamp(m)).filter((t) => t !== null); - if (timestamps.length === 0) { - db3.close(); - return null; - } - const firstTimestamp = new Date( - Math.min(...timestamps.map((t) => t.getTime())) - ); - const lastTimestamp = new Date( - Math.max(...timestamps.map((t) => t.getTime())) - ); - const sessionDir = dirname2(filePath); - const sessionId = basename2(sessionDir); - const workspaceDir = dirname2(sessionDir); - const workspaceHash = basename2(workspaceDir); - const projectPath = conversation.metadata?.workspacePath ?? conversation.metadata?.projectPath ?? this.decodeProjectPath(workspaceHash); - db3.close(); - return { - sessionId, - projectPath, - projectName: this.getProjectName(projectPath), - timestamp: firstTimestamp, - messageCount: messages.length, - durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp), - filePath, - source: this.name - }; - } catch { - db3.close(); - return null; - } - } catch { - return null; - } - } - async parseSessionContent(sessionId, projectPath, _projectName, _content) { - return null; - } - /** - * Parse session directly from SQLite file - */ - async parseFromFile(filePath) { - const Database3 = await loadSqlite(); - if (!Database3) return null; - let db3 = null; - try { - db3 = new Database3(filePath); - const conversation = this.parseConversation(db3); - if (!conversation || conversation.messages.length === 0) { - return null; - } - const sessionDir = dirname2(filePath); - const sessionId = basename2(sessionDir); - const workspaceDir = dirname2(sessionDir); - const workspaceHash = basename2(workspaceDir); - const projectPath = conversation.metadata?.workspacePath ?? conversation.metadata?.projectPath ?? this.decodeProjectPath(workspaceHash); - const toolResultsMap = /* @__PURE__ */ new Map(); - for (const msg of conversation.messages) { - if (msg.role === "tool") { - if (Array.isArray(msg.content)) { - for (const block of msg.content) { - if (block.type === "tool-result") { - const resultBlock = block; - if (resultBlock.toolCallId) { - const resultText = resultBlock.result || ""; - const isError = resultText.toLowerCase().includes("error"); - toolResultsMap.set(resultBlock.toolCallId, { - content: resultText, - isError, - toolName: resultBlock.toolName || "unknown" - }); - } - } - } - } - if (msg.toolResults) { - for (const result of msg.toolResults) { - const toolId = result.tool_use_id ?? result.toolCallId; - if (toolId) { - toolResultsMap.set(toolId, { - content: result.content, - isError: result.isError ?? result.is_error ?? false, - toolName: "unknown" - }); - } - } - } - } - } - const messages = []; - for (const msg of conversation.messages) { - if (msg.role === "user") { - const content = typeof msg.content === "string" ? msg.content : msg.text ?? ""; - if (!content.trim()) continue; - messages.push({ - uuid: msg.id ?? this.generateUUID(), - role: "user", - timestamp: this.extractTimestamp(msg) ?? /* @__PURE__ */ new Date(), - content - }); - } else if (msg.role === "assistant") { - const { textContent, toolCallBlocks } = this.parseAssistantContent(msg); - const toolCalls = this.extractToolCallsFromBlocks(toolCallBlocks, toolResultsMap); - const legacyToolCalls = this.extractLegacyToolCalls(msg, toolResultsMap); - const allToolCalls = toolCalls.length > 0 ? toolCalls : legacyToolCalls && legacyToolCalls.length > 0 ? legacyToolCalls : void 0; - messages.push({ - uuid: msg.id ?? this.generateUUID(), - role: "assistant", - timestamp: this.extractTimestamp(msg) ?? /* @__PURE__ */ new Date(), - content: textContent, - toolCalls: allToolCalls - }); - } - } - if (messages.length === 0) return null; - const timestamps = messages.map((m) => m.timestamp); - const startTime = new Date( - Math.min(...timestamps.map((t) => t.getTime())) - ); - const endTime = new Date( - Math.max(...timestamps.map((t) => t.getTime())) - ); - const stats = this.computeStats(messages); - return { - sessionId, - projectPath, - startTime, - endTime, - durationSeconds: this.calculateDuration(startTime, endTime), - claudeCodeVersion: "cursor", - // Use 'cursor' as version identifier - messages, - stats, - source: this.name - }; - } catch { - return null; - } finally { - db3?.close(); - } - } - async readSessionContent(filePath) { - return ""; - } - // ───────────────────────────────────────────────────────────────────────── - // Private helper methods - // ───────────────────────────────────────────────────────────────────────── - /** - * List all subdirectories within a given directory - */ - async listSubdirectories(parentDir) { - try { - const entries = await readdir2(parentDir); - const dirs = []; - for (const entry of entries) { - const fullPath = join4(parentDir, entry); - try { - const stats = await stat2(fullPath); - if (stats.isDirectory()) { - dirs.push(fullPath); - } - } catch { - } - } - return dirs; - } catch { - return []; - } - } - async listWorkspaceDirs() { - return this.listSubdirectories(this.baseDir); - } - async listSessionDirs(workspaceDir) { - return this.listSubdirectories(workspaceDir); - } - parseConversation(db3) { - try { - const stmt = db3.prepare("SELECT id, data FROM blobs"); - const rows = stmt.all(); - if (rows.length === 0) return null; - const messages = []; - let metadata; - for (const row of rows) { - try { - const data = this.parseBlob(row.data); - if (!data) continue; - if (data.messages && Array.isArray(data.messages)) { - messages.push(...data.messages); - } else if (data.role) { - const msg = { - id: data.id ?? row.id, - role: data.role, - // Preserve content array for assistant messages (contains tool-call blocks) - content: data.content, - text: data.text, - timestamp: data.timestamp, - createdAt: data.createdAt, - toolCalls: data.toolCalls ?? data.tool_calls, - signature: data.signature - }; - if (Array.isArray(data.content) && msg.role === "tool") { - for (const block of data.content) { - if (block.type === "tool-result" && typeof block.result === "string") { - const toolId = block.toolCallId; - if (toolId) { - msg.toolResults = msg.toolResults ?? []; - msg.toolResults.push({ - toolCallId: toolId, - content: block.result, - isError: block.result.toLowerCase().includes("error") - }); - } - } - } - } - if (msg.role !== "system") { - messages.push(msg); - } - } - if (data.metadata || data.workspacePath) { - metadata = { - workspacePath: data.workspacePath ?? data.metadata?.workspacePath, - projectPath: data.projectPath ?? data.metadata?.projectPath, - createdAt: data.createdAt ?? data.metadata?.createdAt, - updatedAt: data.updatedAt ?? data.metadata?.updatedAt - }; - } - } catch { - } - } - messages.sort((a, b) => { - const tsA = this.extractTimestamp(a); - const tsB = this.extractTimestamp(b); - if (!tsA || !tsB) return 0; - return tsA.getTime() - tsB.getTime(); - }); - return { - id: this.generateUUID(), - messages, - metadata - }; - } catch { - return null; - } - } - parseBlob(data) { - try { - const text = data.toString("utf-8"); - return JSON.parse(text); - } catch { - } - try { - const zlib = __require("zlib"); - const decompressed = zlib.inflateSync(data); - return JSON.parse(decompressed.toString("utf-8")); - } catch { - } - try { - return this.parseProtobuf(data); - } catch { - } - return null; - } - /** - * Parse a varint from buffer at given offset - * Protobuf uses variable-length encoding for integers - */ - parseVarint(data, offset) { - if (offset >= data.length) return null; - let value = 0; - let shift = 0; - let bytesRead = 0; - const MAX_VARINT_BYTES = 10; - while (offset + bytesRead < data.length) { - const byte = data[offset + bytesRead]; - value |= (byte & 127) << shift; - bytesRead++; - const isLastByte = (byte & 128) === 0; - if (isLastByte) break; - shift += 7; - if (bytesRead > MAX_VARINT_BYTES) return null; - } - return { value, bytesRead }; - } - /** - * Parse Cursor protobuf blob format - * - * Cursor stores some messages in a simple protobuf format: - * - field1 (wire2): text content (message body, tool results) - * - field2 (wire2): UUID (message ID) - * - field3 (wire2): usually empty - * - field4 (wire2): nested JSON (full message object) - * - * Wire type 2 = length-delimited (string, bytes, embedded messages) - */ - parseProtobuf(data) { - const fields = /* @__PURE__ */ new Map(); - let offset = 0; - while (offset < data.length) { - const tagVarint = this.parseVarint(data, offset); - if (!tagVarint) break; - const tag = tagVarint.value; - const fieldNumber = tag >> 3; - const wireType = tag & 7; - offset += tagVarint.bytesRead; - let fieldContent; - switch (wireType) { - case 0: { - const varint = this.parseVarint(data, offset); - if (!varint) break; - fieldContent = varint.value; - offset += varint.bytesRead; - break; - } - case 1: { - if (offset + 8 > data.length) return null; - fieldContent = data.subarray(offset, offset + 8); - offset += 8; - break; - } - case 2: { - const lengthVarint = this.parseVarint(data, offset); - if (!lengthVarint) return null; - const length = lengthVarint.value; - offset += lengthVarint.bytesRead; - if (offset + length > data.length) return null; - fieldContent = data.subarray(offset, offset + length); - offset += length; - break; - } - case 5: { - if (offset + 4 > data.length) return null; - fieldContent = data.subarray(offset, offset + 4); - offset += 4; - break; - } - default: - return null; - } - if (!fields.has(fieldNumber)) { - fields.set(fieldNumber, []); - } - fields.get(fieldNumber).push({ wireType, content: fieldContent }); - } - return this.mapProtobufFields(fields); - } - /** - * Map protobuf fields to a message-like structure - */ - mapProtobufFields(fields) { - const field4 = fields.get(4); - if (field4 && field4.length > 0) { - for (const { content } of field4) { - if (Buffer.isBuffer(content)) { - try { - const jsonStr = content.toString("utf-8"); - const parsed = JSON.parse(jsonStr); - if (parsed && (parsed.role || parsed.messages || parsed.content)) { - return parsed; - } - } catch { - } - } - } - } - const result = {}; - const field1 = fields.get(1); - if (field1 && field1.length > 0) { - const { content } = field1[0]; - if (Buffer.isBuffer(content)) { - const text = content.toString("utf-8"); - if (text.length > 0 && this.isPrintableText(text)) { - result.text = text; - } - } - } - const field2 = fields.get(2); - if (field2 && field2.length > 0) { - const { content } = field2[0]; - if (Buffer.isBuffer(content)) { - const uuid = content.toString("utf-8"); - if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid)) { - result.id = uuid; - } - } - } - if (Object.keys(result).length > 0) { - return result; - } - return null; - } - /** - * Check if a string is printable text (not binary garbage) - */ - isPrintableText(str) { - const sample = str.substring(0, 100); - return /^[\x20-\x7E\n\r\t\u00A0-\uFFFF]+$/.test(sample); - } - /** - * Convert Unix timestamp to Date, handling both seconds and milliseconds - */ - unixToDate(timestamp) { - const MILLISECONDS_THRESHOLD = 1e12; - const normalizedTs = timestamp > MILLISECONDS_THRESHOLD ? timestamp : timestamp * 1e3; - return new Date(normalizedTs); - } - extractTimestamp(msg) { - if (msg.timestamp) return new Date(msg.timestamp); - if (msg.createdAt) return this.unixToDate(msg.createdAt); - return null; - } - /** - * Parse assistant message content array to extract text and tool-call blocks - * Cursor stores tool calls in the content array with type: 'tool-call' - */ - parseAssistantContent(msg) { - const textParts = []; - const toolCallBlocks = []; - if (typeof msg.content === "string") { - return { textContent: msg.content, toolCallBlocks: [] }; - } - if (!Array.isArray(msg.content)) { - return { textContent: msg.text ?? "", toolCallBlocks: [] }; - } - for (const block of msg.content) { - if (block.type === "text" && typeof block.text === "string") { - textParts.push(block.text); - } else if (block.type === "reasoning" && typeof block.text === "string") { - textParts.push(block.text); - } else if (block.type === "tool-call") { - const toolBlock = block; - if (toolBlock.toolCallId && toolBlock.toolName) { - toolCallBlocks.push(toolBlock); - } - } - } - return { - textContent: textParts.join("\n"), - toolCallBlocks - }; - } - /** - * Extract tool calls from Cursor's tool-call blocks - */ - extractToolCallsFromBlocks(blocks, toolResultsMap) { - const toolCalls = []; - for (const block of blocks) { - const id = block.toolCallId; - const name = block.toolName; - const input = block.args || {}; - const result = toolResultsMap.get(id); - const normalizedName = normalizeToolName(name, this.name); - toolCalls.push({ - id, - name: normalizedName, - input, - result: result?.content, - isError: result?.isError - }); - } - return toolCalls; - } - /** - * Extract tool calls from legacy toolCalls/tool_calls fields - */ - extractLegacyToolCalls(msg, toolResultsMap) { - const rawCalls = msg.toolCalls ?? msg.tool_calls ?? []; - if (rawCalls.length === 0) return void 0; - const toolCalls = []; - for (const call of rawCalls) { - const name = call.name ?? call.function?.name ?? "unknown"; - const id = call.id ?? this.generateUUID(); - let input = {}; - if (call.input) { - input = call.input; - } else if (call.arguments) { - try { - input = typeof call.arguments === "string" ? JSON.parse(call.arguments) : call.arguments; - } catch { - input = { raw: call.arguments }; - } - } else if (call.function?.arguments) { - try { - input = typeof call.function.arguments === "string" ? JSON.parse(call.function.arguments) : call.function.arguments; - } catch { - input = { raw: call.function.arguments }; - } - } - const result = toolResultsMap.get(id); - const normalizedName = normalizeToolName(name, this.name); - toolCalls.push({ - id, - name: normalizedName, - input, - result: result?.content, - isError: result?.isError - }); - } - return toolCalls.length > 0 ? toolCalls : void 0; - } - generateUUID() { - return "cursor-" + Math.random().toString(36).substring(2, 15); - } -}; -var cursorSource = new CursorSource(); - -// lib/scanner/sources/cursor-composer.ts -import { stat as stat3 } from "fs/promises"; - -// lib/scanner/sources/cursor-paths.ts -import { join as join5 } from "path"; -import { homedir as homedir4, platform } from "os"; -function getCursorUserDir() { - const home = homedir4(); - switch (platform()) { - case "darwin": - return join5(home, "Library", "Application Support", "Cursor", "User"); - case "win32": - return join5(process.env.APPDATA ?? join5(home, "AppData", "Roaming"), "Cursor", "User"); - default: - return join5(home, ".config", "Cursor", "User"); - } -} -function getCursorGlobalStoragePath() { - return join5(getCursorUserDir(), "globalStorage"); -} -function getCursorGlobalStateDbPath() { - return join5(getCursorGlobalStoragePath(), "state.vscdb"); -} - -// lib/scanner/sources/cursor-composer.ts -var CursorComposerSource = class extends BaseSessionSource { - name = "cursor-composer"; - displayName = "Cursor Composer"; - dbPath; - constructor(dbPath) { - super(); - this.dbPath = dbPath ?? getCursorGlobalStateDbPath(); - } - getBaseDir() { - return this.dbPath; - } - async isAvailable() { - try { - await stat3(this.dbPath); - const Database3 = await loadSqlite(); - return Database3 !== null; - } catch { - return false; - } - } - /** - * Collect file metadata for all composer sessions in state.vscdb. - * - * Each composerId becomes a virtual "file" entry with a synthetic path - * of the form: state.vscdb#{composerId} - */ - async collectFileMetadata(config2) { - const Database3 = await loadSqlite(); - if (!Database3) return []; - let db3 = null; - try { - db3 = new Database3(this.dbPath, { readonly: true }); - const composerIds = this.listComposerIds(db3); - const results = []; - for (const composerId of composerIds) { - try { - const data = this.getComposerData(db3, composerId); - if (!data) continue; - const bubbleCount = this.countBubbles(db3, composerId); - const estimatedSize = bubbleCount * 2048; - if (config2?.minFileSize && estimatedSize < config2.minFileSize) continue; - if (config2?.maxFileSize && estimatedSize > config2.maxFileSize) continue; - const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbles(db3, composerId) ?? "unknown"; - const createdAt = data.createdAt ? new Date(data.createdAt) : /* @__PURE__ */ new Date(); - const lastUpdated = data.lastUpdatedAt ? new Date(data.lastUpdatedAt) : createdAt; - results.push({ - filePath: `${this.dbPath}#${composerId}`, - fileSize: estimatedSize, - mtime: lastUpdated, - projectDirName: this.encodeProjectDir(projectDir), - source: this.name - }); - } catch { - } - } - return results; - } catch { - return []; - } finally { - db3?.close(); - } - } - async extractMetadata(filePath, _content) { - const composerId = this.extractComposerId(filePath); - if (!composerId) return null; - const Database3 = await loadSqlite(); - if (!Database3) return null; - let db3 = null; - try { - db3 = new Database3(this.dbPath, { readonly: true }); - const data = this.getComposerData(db3, composerId); - if (!data) return null; - const bubbles = this.getBubbles(db3, composerId); - const conversationBubbles = bubbles.filter((b) => b.type === 1 || b.type === 2); - if (conversationBubbles.length === 0) return null; - const timestamps = conversationBubbles.map((b) => b.createdAt ? new Date(b.createdAt) : null).filter((t) => t !== null && !isNaN(t.getTime())); - if (timestamps.length === 0) return null; - const firstTimestamp = new Date(Math.min(...timestamps.map((t) => t.getTime()))); - const lastTimestamp = new Date(Math.max(...timestamps.map((t) => t.getTime()))); - const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbleList(bubbles) ?? "unknown"; - return { - sessionId: composerId, - projectPath: projectDir, - projectName: this.getProjectName(projectDir), - timestamp: firstTimestamp, - messageCount: conversationBubbles.length, - durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp), - filePath, - source: this.name - }; - } catch { - return null; - } finally { - db3?.close(); - } - } - async parseSessionContent(_sessionId, _projectPath, _projectName, _content) { - return null; - } - /** - * Parse a composer session directly from state.vscdb - */ - async parseFromFile(filePath) { - const composerId = this.extractComposerId(filePath); - if (!composerId) return null; - const Database3 = await loadSqlite(); - if (!Database3) return null; - let db3 = null; - try { - db3 = new Database3(this.dbPath, { readonly: true }); - const data = this.getComposerData(db3, composerId); - if (!data) return null; - const bubbles = this.getBubbles(db3, composerId); - if (bubbles.length === 0) return null; - const messages = this.convertBubblesToMessages(bubbles); - if (messages.length === 0) return null; - const timestamps = messages.map((m) => m.timestamp); - const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime()))); - const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime()))); - const projectDir = data.workspaceProjectDir ?? this.getProjectDirFromBubbleList(bubbles) ?? "unknown"; - const stats = this.computeStats(messages); - return { - sessionId: composerId, - projectPath: projectDir, - projectName: this.getProjectName(projectDir), - startTime, - endTime, - durationSeconds: this.calculateDuration(startTime, endTime), - claudeCodeVersion: "cursor-composer", - messages, - stats, - source: this.name - }; - } catch { - return null; - } finally { - db3?.close(); - } - } - async readSessionContent(_filePath) { - return ""; - } - // ───────────────────────────────────────────────────────────────────────── - // Private: Database query helpers - // ───────────────────────────────────────────────────────────────────────── - /** - * List all composer IDs from composerData:* keys - */ - listComposerIds(db3) { - const stmt = db3.prepare( - "SELECT key FROM cursorDiskKV WHERE key LIKE 'composerData:%'" - ); - const rows = stmt.all(); - return rows.map((r) => r.key.replace("composerData:", "")); - } - /** - * Get composer metadata for a specific composer ID - */ - getComposerData(db3, composerId) { - const stmt = db3.prepare( - "SELECT value FROM cursorDiskKV WHERE key = ?" - ); - const row = stmt.get(`composerData:${composerId}`); - if (!row?.value) return null; - try { - return JSON.parse(row.value); - } catch { - return null; - } - } - /** - * Count bubbles for a composer session - */ - countBubbles(db3, composerId) { - const stmt = db3.prepare( - "SELECT COUNT(*) as count FROM cursorDiskKV WHERE key LIKE ?" - ); - const row = stmt.get(`bubbleId:${composerId}:%`); - return row?.count ?? 0; - } - /** - * Get all bubbles for a composer session, sorted by creation time - */ - getBubbles(db3, composerId) { - const stmt = db3.prepare( - "SELECT key, value FROM cursorDiskKV WHERE key LIKE ?" - ); - const rows = stmt.all(`bubbleId:${composerId}:%`); - const bubbles = []; - for (const row of rows) { - try { - const bubble = JSON.parse(row.value); - bubbles.push(bubble); - } catch { - } - } - bubbles.sort((a, b) => { - const timeA = a.createdAt ? new Date(a.createdAt).getTime() : 0; - const timeB = b.createdAt ? new Date(b.createdAt).getTime() : 0; - return timeA - timeB; - }); - return bubbles; - } - /** - * Get project directory from the first bubble that has workspaceProjectDir - */ - getProjectDirFromBubbles(db3, composerId) { - const stmt = db3.prepare( - "SELECT value FROM cursorDiskKV WHERE key LIKE ? LIMIT 20" - ); - const rows = stmt.all(`bubbleId:${composerId}:%`); - for (const row of rows) { - try { - const bubble = JSON.parse(row.value); - if (bubble.workspaceProjectDir) { - return bubble.workspaceProjectDir; - } - } catch { - } - } - return null; - } - /** - * Get project directory from already-loaded bubbles - */ - getProjectDirFromBubbleList(bubbles) { - for (const bubble of bubbles) { - if (bubble.workspaceProjectDir) { - return bubble.workspaceProjectDir; - } - } - return null; - } - // ───────────────────────────────────────────────────────────────────────── - // Private: Bubble → ParsedMessage conversion - // ───────────────────────────────────────────────────────────────────────── - /** - * Convert sorted bubbles into ParsedMessages. - * - * Conversion rules: - * - User bubbles (type=1): → ParsedMessage { role: 'user' } - * - Assistant text bubbles (type=2, has text): → ParsedMessage { role: 'assistant' } - * - Assistant tool bubbles (type=2, has toolFormerData): → append toolCall to previous assistant message - * - Thinking bubbles (type=2, has thinking): → skip (not relevant for analysis) - * - Empty bubbles (type=2, no text, no tool): → skip - * - * Consecutive assistant tool bubbles are merged into the preceding text message. - */ - convertBubblesToMessages(bubbles) { - const messages = []; - let currentAssistant = null; - for (const bubble of bubbles) { - if (bubble.type === 1) { - const text = bubble.text?.trim(); - if (!text) continue; - currentAssistant = null; - messages.push({ - uuid: this.generateUUID(), - role: "user", - timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), - content: text - }); - } else if (bubble.type === 2) { - const hasText = bubble.text && bubble.text.trim().length > 0; - const hasTool = bubble.toolFormerData != null; - const hasThinking = bubble.thinking?.text != null; - if (hasThinking && !hasText && !hasTool) { - continue; - } - if (hasText) { - currentAssistant = { - uuid: this.generateUUID(), - role: "assistant", - timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), - content: bubble.text.trim(), - toolCalls: [], - tokenUsage: this.extractTokenUsage(bubble) - }; - messages.push(currentAssistant); - } - if (hasTool) { - const toolCall = this.convertToolFormerData(bubble.toolFormerData); - if (toolCall) { - if (currentAssistant) { - if (!currentAssistant.toolCalls) { - currentAssistant.toolCalls = []; - } - currentAssistant.toolCalls.push(toolCall); - } else { - currentAssistant = { - uuid: this.generateUUID(), - role: "assistant", - timestamp: bubble.createdAt ? new Date(bubble.createdAt) : /* @__PURE__ */ new Date(), - content: "", - toolCalls: [toolCall], - tokenUsage: this.extractTokenUsage(bubble) - }; - messages.push(currentAssistant); - } - } - } - if (bubble.tokenCount && currentAssistant) { - const usage = this.extractTokenUsage(bubble); - if (usage && (usage.input > 0 || usage.output > 0)) { - currentAssistant.tokenUsage = usage; - } - } - } - } - for (const msg of messages) { - if (msg.toolCalls && msg.toolCalls.length === 0) { - delete msg.toolCalls; - } - } - return messages; - } - /** - * Convert toolFormerData to a ToolCall - */ - convertToolFormerData(toolData) { - const toolName = resolveComposerToolId(toolData.tool); - let input = {}; - if (toolData.rawArgs) { - try { - input = JSON.parse(toolData.rawArgs); - } catch { - input = { raw: toolData.rawArgs }; - } - } - return { - id: toolData.toolCallId ?? this.generateUUID(), - name: toolName, - input - }; - } - /** - * Extract token usage from bubble - */ - extractTokenUsage(bubble) { - if (!bubble.tokenCount) return void 0; - const input = bubble.tokenCount.inputTokens ?? 0; - const output = bubble.tokenCount.outputTokens ?? 0; - if (input === 0 && output === 0) return void 0; - return { input, output }; - } - // ───────────────────────────────────────────────────────────────────────── - // Private: Utility helpers - // ───────────────────────────────────────────────────────────────────────── - /** - * Extract composerId from synthetic file path: state.vscdb#{composerId} - */ - extractComposerId(filePath) { - const hashIndex = filePath.indexOf("#"); - if (hashIndex === -1) return null; - return filePath.substring(hashIndex + 1); - } - /** - * Encode a project directory path into a safe directory name. - * Replaces '/' with '-' for consistency with ClaudeCodeSource encoding. - */ - encodeProjectDir(projectDir) { - return projectDir.replace(/\//g, "-"); - } - generateUUID() { - return "composer-" + Math.random().toString(36).substring(2, 15); - } -}; -var cursorComposerSource = new CursorComposerSource(); - -// lib/scanner/sources/claude-discovery.ts -import { readdir as readdir3, stat as stat4, realpath } from "fs/promises"; -import { join as join6 } from "path"; -import { homedir as homedir5 } from "os"; -async function validateClaudeDataDir(dir) { - try { - const projectsDir = join6(dir, "projects"); - const projectsStat = await stat4(projectsDir); - if (!projectsStat.isDirectory()) return false; - const entries = await readdir3(projectsDir); - for (const entry of entries) { - if (!entry.startsWith("-") && !isWindowsEncodedPath(entry)) continue; - const entryPath = join6(projectsDir, entry); - const entryStat = await stat4(entryPath); - if (!entryStat.isDirectory()) continue; - const files = await readdir3(entryPath); - if (files.some((f) => f.endsWith(".jsonl"))) { - return true; - } - } - return false; - } catch { - return false; - } -} -async function discoverClaudeDataDirs() { - const discovered = /* @__PURE__ */ new Map(); - const addIfValid = async (dir) => { - try { - const projectsDir = join6(dir, "projects"); - const resolved = await realpath(projectsDir); - if (discovered.has(resolved)) return true; - if (await validateClaudeDataDir(dir)) { - discovered.set(resolved, projectsDir); - return true; - } - } catch { - } - return false; - }; - const defaultDir = join6(homedir5(), ".claude"); - await addIfValid(defaultDir); - if (discovered.size > 0) { - return Array.from(discovered.values()); - } - try { - const home = homedir5(); - const entries = await readdir3(home); - for (const entry of entries) { - if (!entry.startsWith(".claude")) continue; - if (entry === ".claude") continue; - const candidateDir = join6(home, entry); - try { - const s = await stat4(candidateDir); - if (s.isDirectory()) { - await addIfValid(candidateDir); - } - } catch { - } - } - } catch { - } - return Array.from(discovered.values()); -} - -// lib/scanner/index.ts -var SourceRegistry = class { - sources = []; - claudeInitialized = false; - constructor() { - this.register(new CursorSource()); - this.register(new CursorComposerSource()); - } - /** - * Register a new session source - */ - register(source) { - this.sources.push(source); - } - /** - * Get all registered sources - */ - getAll() { - return [...this.sources]; - } - /** - * Get available sources (directory exists, dependencies met). - * Lazily initializes Claude Code sources on first call. - */ - async getAvailable() { - if (!this.claudeInitialized) { - await this.initClaudeSources(); - this.claudeInitialized = true; - } - const available = []; - for (const source of this.sources) { - if (await source.isAvailable()) { - available.push(source); - } - } - return available; - } - /** - * Get a specific source by name - */ - get(name) { - return this.sources.find((s) => s.name === name); - } - /** - * Discover and register Claude Code sources from available data directories. - */ - async initClaudeSources() { - const dirs = await discoverClaudeDataDirs(); - for (const dir of dirs) { - this.register(new ClaudeCodeSource(dir)); - } - } -}; -var sourceRegistry = new SourceRegistry(); -var MultiSourceScanner = class { - constructor(registry2 = sourceRegistry) { - this.registry = registry2; - } - /** - * Collect file metadata from all available sources - */ - async collectAllFileMetadata(config2) { - const sources = await this.getFilteredSources(config2); - const allFiles = []; - const sourceStats = /* @__PURE__ */ new Map(); - for (const source of sources) { - const files = await source.collectFileMetadata({ - minFileSize: config2?.minFileSize, - maxFileSize: config2?.maxFileSize - }); - allFiles.push(...files); - sourceStats.set(source.name, files.length); - } - return { files: allFiles, sourceStats }; - } - /** - * Extract metadata for a file from the appropriate source - */ - async extractMetadata(file) { - const source = this.registry.get(file.source); - if (!source) return null; - try { - const content = await source.readSessionContent(file.filePath); - return source.extractMetadata(file.filePath, content); - } catch { - return null; - } - } - /** - * Parse a session from the appropriate source - */ - async parseSession(metadata) { - const source = this.registry.get(metadata.source); - if (!source) return null; - try { - if (metadata.source === "cursor") { - const cursorSource2 = source; - return cursorSource2.parseFromFile(metadata.filePath); - } - if (metadata.source === "cursor-composer") { - const composerSource = source; - return composerSource.parseFromFile(metadata.filePath); - } - const content = await source.readSessionContent(metadata.filePath); - return source.parseSessionContent( - metadata.sessionId, - metadata.projectPath, - metadata.projectName, - content - ); - } catch { - return null; - } - } - /** - * Get available source names - */ - async getAvailableSources() { - const sources = await this.registry.getAvailable(); - return sources.map((s) => s.name); - } - /** - * Check source availability status. - * Triggers lazy Claude source init if not yet done. - */ - async getSourceStatus() { - const available = await this.registry.getAvailable(); - const status = /* @__PURE__ */ new Map(); - for (const source of this.registry.getAll()) { - status.set(source.name, available.some((s) => s === source)); - } - return status; - } - // ───────────────────────────────────────────────────────────────────────── - // Private helpers - // ───────────────────────────────────────────────────────────────────────── - async getFilteredSources(config2) { - let sources = await this.registry.getAvailable(); - if (config2?.includeSources && config2.includeSources.length > 0) { - sources = sources.filter((s) => config2.includeSources.includes(s.name)); - } - if (config2?.excludeSources && config2.excludeSources.length > 0) { - sources = sources.filter((s) => !config2.excludeSources.includes(s.name)); - } - return sources; - } -}; -var multiSourceScanner = new MultiSourceScanner(); - -// lib/project-filters.ts -var TEMP_PROJECT_PREFIXES = [ - "private/tmp/", - "tmp/", - "temp/", - "var/folders/", - "private/var/" -]; -function normalizeSlashes(value) { - return value.trim().replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, ""); -} -function normalizeProjectNameValue(value) { - const normalized = value ? normalizeSlashes(value) : ""; - if (!normalized) { - return "unknown"; - } - const lower = normalized.toLowerCase(); - if (TEMP_PROJECT_PREFIXES.some((prefix) => lower.startsWith(prefix))) { - const segments = normalized.split("/").filter(Boolean); - return segments[segments.length - 1] ?? normalized; - } - return normalized; -} -function normalizeProjectFilter(value) { - const normalized = normalizeSlashes(value); - if (!normalized) { - return ""; - } - const segments = normalized.split("/").filter(Boolean); - return segments[segments.length - 1] ?? normalized; -} -function normalizeProjectFilters(includeProjects) { - if (!includeProjects?.length) { - return includeProjects; - } - const normalized = Array.from( - new Set(includeProjects.map(normalizeProjectFilter).filter(Boolean)) - ); - return normalized.length ? normalized : void 0; -} - -// lib/core/multi-source-session-scanner.ts -function getParsedSessionsCachePath() { - return join7(getScanCacheDir(), "parsed-sessions.json"); -} -function isNonNull(value) { - return value !== null; -} -function serializeParsedSession(session) { - let projectName = session.projectName; - if (!projectName && session.projectPath) { - const encoded = session.projectPath.replace(/\//g, "-"); - projectName = resolveProjectName(encoded); - } - projectName = normalizeProjectNameValue(projectName); - return { - sessionId: session.sessionId, - projectPath: session.projectPath, - projectName, - startTime: session.startTime.toISOString(), - endTime: session.endTime.toISOString(), - durationSeconds: session.durationSeconds, - claudeCodeVersion: session.claudeCodeVersion, - messages: session.messages.map((message) => ({ - uuid: message.uuid, - role: message.role, - timestamp: message.timestamp.toISOString(), - content: message.content, - toolCalls: message.toolCalls, - tokenUsage: message.tokenUsage - })), - stats: session.stats, - source: session.source - }; -} -async function scanAndCacheParsedSessions() { - const { files } = await multiSourceScanner.collectAllFileMetadata({ - minFileSize: 1024, - maxFileSize: 50 * 1024 * 1024 - }); - const metadata = (await Promise.all(files.map((file) => multiSourceScanner.extractMetadata(file)))).filter(isNonNull).sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime()); - const parsedSessions = (await Promise.all(metadata.map((item) => multiSourceScanner.parseSession(item)))).filter(isNonNull).map(serializeParsedSession).sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime()); - await cacheParsedSessions(parsedSessions); - return parsedSessions; -} -async function cacheParsedSessions(sessions) { - const scanCacheDir = getScanCacheDir(); - const cachePath = getParsedSessionsCachePath(); - await mkdir(scanCacheDir, { recursive: true }); - await writeFile(cachePath, JSON.stringify(sessions, null, 2), "utf-8"); - return cachePath; -} -async function readCachedParsedSessions() { - try { - const raw = await readFile2(getParsedSessionsCachePath(), "utf-8"); - return JSON.parse(raw); - } catch (error2) { - if (error2 instanceof Error && "code" in error2 && error2.code === "ENOENT") { - return []; - } - throw error2; - } -} - -// mcp/tools/scan-sessions.ts -var definition4 = { - name: "scan_sessions", - description: "Scan Claude Code and Cursor session logs on this machine. Returns session metadata (count, date range, projects, total messages, and sources). Use this as the first step before running extract_data. Does not return full session content." -}; -async function execute(args) { - const allSessions = await scanAndCacheParsedSessions(); - const includeProjects = normalizeProjectFilters(args.includeProjects); - if (allSessions.length === 0) { - return JSON.stringify({ - status: "no_sessions", - message: "No supported Claude Code or Cursor sessions found on this machine." - }); - } - const allProjectNames = [...new Set(allSessions.map((s) => normalizeProjectNameValue(s.projectName)))]; - const allProjects = allProjectNames.map((name) => ({ - name, - sessionCount: allSessions.filter((s) => normalizeProjectNameValue(s.projectName) === name).length - })).sort((a, b) => b.sessionCount - a.sessionCount); - const sessions = includeProjects?.length ? allSessions.filter((s) => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; - if (sessions.length === 0) { - return JSON.stringify({ - status: "no_sessions_after_filter", - allProjects, - message: `No sessions match the selected projects. ${allSessions.length} total sessions available across ${allProjectNames.length} projects.` - }); - } - const projectNames = [...new Set(sessions.map((s) => normalizeProjectNameValue(s.projectName)))]; - const totalMessages = sessions.reduce((sum, s) => sum + s.messages.length, 0); - const totalDuration = sessions.reduce((sum, s) => sum + s.durationSeconds, 0); - const sourceCounts = sessions.reduce((acc, session) => { - const source = session.source ?? "unknown"; - acc[source] = (acc[source] ?? 0) + 1; - return acc; - }, {}); - const earliest = sessions[sessions.length - 1]; - const latest = sessions[0]; - const pending = isAnalysisPending(); - const analysisState = getAnalysisLifecycleState(); - return JSON.stringify({ - status: "ok", - sessionCount: sessions.length, - projectCount: projectNames.length, - projects: projectNames.slice(0, 10), - allProjects, - sources: sourceCounts, - totalMessages, - totalDurationMinutes: Math.round(totalDuration / 60), - dateRange: { - earliest: earliest.startTime, - latest: latest.startTime - }, - avgMessagesPerSession: Math.round(totalMessages / sessions.length), - analysisState, - analysisPending: pending, - message: pending ? `Found ${sessions.length} sessions. A queued BetterPrompt analysis is pending and will be injected on the next session start. You can also run the analyze skill now.` : `Found ${sessions.length} sessions across ${projectNames.length} projects. Call extract_data to run Phase 1 extraction.` - }); -} - -// mcp/tools/extract-data.ts -import { writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises"; -import { join as join8 } from "path"; - -// lib/core/data-extractor.ts -var MAX_TEXT_LENGTH = 2e3; -var SKILL_INJECTION_PREFIX = "Base directory for this skill:"; -var KNOWN_SLASH_COMMANDS = /* @__PURE__ */ new Set([ - "plan", - "review", - "commit", - "compact", - "clear", - "help", - "init", - "sisyphus", - "orchestrator", - "ultrawork", - "ralph-loop", - "deepsearch", - "analyze", - "prometheus", - "cancel-ralph", - "update", - "bug", - "config", - "cost", - "doctor", - "login", - "logout", - "memory", - "model", - "permissions", - "project", - "status", - "terminal-setup", - "vim", - "fast" -]); -var CLEAR_COMMAND_PATTERNS = [ - /^\/clear\b/m, - /\/clear<\/command-name>/ -]; -var INSIGHT_BLOCK_PATTERN = /`★\s*Insight\s*─+`\n([\s\S]*?)\n`─+`/g; -function stripSystemTags(content) { - return content.replace(/[\s\S]*?<\/system-reminder>/g, "").replace(/([\s\S]*?)<\/command-name>/g, "$1").replace(/[\s\S]*?<\/EXTREMELY_IMPORTANT>/g, "").replace(/[\s\S]*?<\/tool_result>/g, "").replace(/\n{3,}/g, "\n\n").trim(); -} -function truncateText(text, maxLen) { - if (text.length <= maxLen) return text; - return text.slice(0, maxLen) + "... [truncated]"; -} -function countWords(text) { - const cleaned = text.replace(/```[\s\S]*?```/g, "").trim(); - if (!cleaned) return 0; - return cleaned.split(/\s+/).filter((w) => w.length > 0).length; -} -function hasCodeBlock(text) { - return /```/.test(text); -} -function hasQuestion(text) { - return /\?/.test(text); -} -function isContinuation(text) { - const lower = text.toLowerCase().trim(); - return /^(continue|go ahead|proceed|keep going|next|yes|ok|okay|sure|do it|let's go)/i.test(lower); -} -function isClearCommand(content) { - return CLEAR_COMMAND_PATTERNS.some((p) => p.test(content)); -} -function extractSlashCommands(rawContent) { - const commands = []; - const xmlPattern = /\/([\w-]+)<\/command-name>/g; - let match; - while ((match = xmlPattern.exec(rawContent)) !== null) { - commands.push(match[1]); - } - const plainPattern = /^\/(\w[\w-]*)/gm; - while ((match = plainPattern.exec(rawContent)) !== null) { - const cmd = match[1]; - if (KNOWN_SLASH_COMMANDS.has(cmd)) { - commands.push(cmd); - } - } - return commands; -} -function extractTextFromContent(content) { - if (typeof content === "string") return content; - return content.filter((block) => block.type === "text").map((block) => block.text).join("\n"); -} -function assistantHadError(assistantContent) { - return assistantContent.some((block) => block.type === "tool_result" && block.is_error); -} -function extractToolCallNames(assistantContent) { - return assistantContent.filter((block) => block.type === "tool_use").map((block) => block.name); -} -var REJECTION_PATTERNS = [ - /\bno\b/i, - /\bwrong\b/i, - /\bincorrect\b/i, - /\btry again\b/i, - /\bthat's not right\b/i, - /\bnot what i/i, - /\bdon't\b.*\bthat\b/i, - /\bundo\b/i, - /\brevert\b/i -]; -var FRUSTRATION_PATTERNS = [ - /\bagain\b/i, - /\bstill not working\b/i, - /\bsame error\b/i, - /\bfrustrat/i, - /\bugh\b/i, - /\bwhy (won't|doesn't|isn't)/i -]; -function isRejection(text) { - const lower = text.toLowerCase(); - if (lower.length > 200) return false; - return REJECTION_PATTERNS.some((p) => p.test(lower)); -} -function isFrustration(text) { - return FRUSTRATION_PATTERNS.some((p) => p.test(text)); -} -function isAnalyzableUserMessage(message) { - const isSkillInjectedPrompt = message.rawContent.trim().startsWith(SKILL_INJECTION_PREFIX); - return message.role === "user" && !message.isMeta && typeof message.sourceToolUseID !== "string" && message.toolUseResult === void 0 && !isSkillInjectedPrompt; -} -function toRawSessionData(session) { - return { - sessionId: session.sessionId, - messages: session.messages.map((message) => { - if (message.role === "user") { - return { - role: "user", - rawContent: message.content, - content: [{ type: "text", text: message.content }], - timestamp: new Date(message.timestamp), - ...message.isMeta ? { isMeta: true } : {}, - ...typeof message.sourceToolUseID === "string" ? { sourceToolUseID: message.sourceToolUseID } : {}, - ...message.toolUseResult !== void 0 ? { toolUseResult: message.toolUseResult } : {} - }; - } - const content = []; - if (message.content) { - content.push({ type: "text", text: message.content }); - } - for (const toolCall of message.toolCalls ?? []) { - content.push({ - type: "tool_use", - id: toolCall.id, - name: toolCall.name - }); - if (toolCall.result !== void 0) { - content.push({ - type: "tool_result", - tool_use_id: toolCall.id, - content: toolCall.result, - is_error: toolCall.isError - }); - } - } - return { - role: "assistant", - rawContent: message.content, - content, - timestamp: new Date(message.timestamp), - tokenUsage: message.tokenUsage - }; - }) - }; -} -function extractFromSession(session) { - const utterances = []; - const slashCommands = []; - const insightBlocks = []; - const seenKeys = /* @__PURE__ */ new Set(); - let precedingAssistantContent = null; - for (let i = 0; i < session.messages.length; i++) { - const message = session.messages[i]; - if (message.role === "user") { - if (!isAnalyzableUserMessage(message)) { - precedingAssistantContent = null; - continue; - } - const rawText = extractTextFromContent( - message.content - ); - slashCommands.push(...extractSlashCommands(message.rawContent || rawText)); - if (isClearCommand(rawText)) { - precedingAssistantContent = null; - continue; - } - const cleanText = stripSystemTags(rawText); - if (!cleanText.trim()) continue; - const dedupeKey = `${message.timestamp.toISOString()}|${cleanText.slice(0, 200)}`; - if (seenKeys.has(dedupeKey)) continue; - seenKeys.add(dedupeKey); - const text = truncateText(cleanText, MAX_TEXT_LENGTH); - const id = `${session.sessionId}_${i}`; - utterances.push({ - id, - text, - timestamp: message.timestamp.toISOString(), - sessionId: session.sessionId, - turnIndex: i, - characterCount: cleanText.length, - wordCount: countWords(cleanText), - hasCodeBlock: hasCodeBlock(cleanText), - hasQuestion: hasQuestion(cleanText), - isSessionStart: utterances.length === 0, - isContinuation: isContinuation(cleanText), - precedingAIToolCalls: precedingAssistantContent ? extractToolCallNames(precedingAssistantContent) : void 0, - precedingAIHadError: precedingAssistantContent ? assistantHadError(precedingAssistantContent) : void 0 - }); - precedingAssistantContent = null; - } else if (message.role === "assistant") { - precedingAssistantContent = message.content; - const assistantText = message.content.filter((b) => b.type === "text").map((b) => b.text).join("\n"); - let match; - const pattern = new RegExp(INSIGHT_BLOCK_PATTERN.source, "g"); - while ((match = pattern.exec(assistantText)) !== null) { - const content = match[1].trim().slice(0, 500); - if (content) { - insightBlocks.push({ - sessionId: session.sessionId, - turnIndex: i, - content, - triggeringUtteranceId: utterances.length > 0 ? utterances[utterances.length - 1].id : void 0 - }); - } - } - } - } - return { utterances, slashCommands, insightBlocks }; -} -function computeFrictionSignals(sessions, utterances) { - let toolFailureCount = 0; - let userRejectionSignals = 0; - let excessiveIterationSessions = 0; - let contextOverflowSessions = 0; - let frustrationExpressionCount = 0; - let bareRetryAfterErrorCount = 0; - let errorChainMaxLength = 0; - for (const session of sessions) { - let sessionUserMessages = 0; - let sessionHadOverflow = false; - let currentErrorChain = 0; - for (const message of session.messages) { - if (isAnalyzableUserMessage(message)) { - sessionUserMessages++; - } else if (message.role === "assistant") { - for (const block of message.content) { - if (block.type === "tool_result" && block.is_error) { - toolFailureCount++; - currentErrorChain++; - errorChainMaxLength = Math.max(errorChainMaxLength, currentErrorChain); - } - } - if (message.tokenUsage && message.tokenUsage.input / CONTEXT_WINDOW_SIZE >= 0.9) { - sessionHadOverflow = true; - } - } - if (message.role === "assistant") { - const hasError = message.content.some((b) => b.type === "tool_result" && b.is_error); - if (!hasError) currentErrorChain = 0; - } - } - if (sessionUserMessages >= 10) excessiveIterationSessions++; - if (sessionHadOverflow) contextOverflowSessions++; - } - for (const u of utterances) { - if (isRejection(u.text)) userRejectionSignals++; - if (isFrustration(u.text)) frustrationExpressionCount++; - if (u.precedingAIHadError && u.wordCount < 10) { - bareRetryAfterErrorCount++; - } - } - const errorPatterns = /* @__PURE__ */ new Map(); - for (const session of sessions) { - for (const message of session.messages) { - if (message.role === "assistant") { - for (const block of message.content) { - if (block.type === "tool_result" && block.is_error) { - const errText = typeof block.content === "string" ? block.content : ""; - const fingerprint = errText.replace(/\/[\w/.-]+/g, "").replace(/\d{4}-\d{2}-\d{2}/g, "").slice(0, 100); - errorPatterns.set(fingerprint, (errorPatterns.get(fingerprint) ?? 0) + 1); - } - } - } - } - } - const repeatedToolErrorPatterns = [...errorPatterns.values()].filter((c) => c >= 2).length; - return { - toolFailureCount, - userRejectionSignals, - excessiveIterationSessions, - contextOverflowSessions, - frustrationExpressionCount, - repeatedToolErrorPatterns, - bareRetryAfterErrorCount, - errorChainMaxLength - }; -} -function computeSessionHints(sessions) { - let totalUserTurns = 0; - let shortSessions = 0; - let mediumSessions = 0; - let longSessions = 0; - for (const session of sessions) { - const userTurns = session.messages.filter(isAnalyzableUserMessage).length; - totalUserTurns += userTurns; - if (userTurns <= 3) shortSessions++; - else if (userTurns <= 10) mediumSessions++; - else longSessions++; - } - return { - avgTurnsPerSession: sessions.length > 0 ? totalUserTurns / sessions.length : 0, - shortSessions, - mediumSessions, - longSessions - }; -} -function computeContextFillMetrics(sessions) { - const fillPercentages = []; - for (const session of sessions) { - for (const message of session.messages) { - if (message.role === "assistant" && message.tokenUsage?.input) { - fillPercentages.push(message.tokenUsage.input / CONTEXT_WINDOW_SIZE * 100); - } - } - } - if (fillPercentages.length === 0) return {}; - const avgFill = fillPercentages.reduce((sum, p) => sum + p, 0) / fillPercentages.length; - const maxFill = Math.max(...fillPercentages); - return { - avgContextFillPercent: Math.round(avgFill * 10) / 10, - maxContextFillPercent: Math.round(maxFill * 10) / 10, - contextFillExceeded90Count: fillPercentages.filter((p) => p >= 90).length - }; -} -async function extractPhase1DataFromParsedSessions(sessions) { - const allUtterances = []; - const allSlashCommands = []; - const allInsightBlocks = []; - const allSessions = []; - if (sessions.length === 0) { - throw new Error("No parsed sessions available for Phase 1 extraction."); - } - for (const parsedSession of sessions) { - const session = toRawSessionData(parsedSession); - allSessions.push(session); - const { utterances, slashCommands, insightBlocks } = extractFromSession(session); - allUtterances.push(...utterances); - allSlashCommands.push(...slashCommands); - allInsightBlocks.push(...insightBlocks); - } - const totalMessages = allSessions.reduce((sum, s) => sum + s.messages.length, 0); - const totalUserMessages = allSessions.reduce( - (sum, s) => sum + s.messages.filter(isAnalyzableUserMessage).length, - 0 - ); - const questionCount = allUtterances.filter((u) => u.hasQuestion).length; - const codeBlockCount = allUtterances.filter((u) => u.hasCodeBlock).length; - const slashCommandCounts = {}; - for (const cmd of allSlashCommands) { - slashCommandCounts[cmd] = (slashCommandCounts[cmd] ?? 0) + 1; - } - const timestamps = allUtterances.map((u) => u.timestamp).sort(); - const contextFillMetrics = computeContextFillMetrics(allSessions); - const frictionSignals = computeFrictionSignals(allSessions, allUtterances); - const sessionHints = computeSessionHints(allSessions); - const sessionMetrics = { - totalSessions: allSessions.length, - totalMessages, - totalDeveloperUtterances: allUtterances.length, - totalAIResponses: totalMessages - totalUserMessages, - avgMessagesPerSession: allSessions.length > 0 ? totalMessages / allSessions.length : 0, - avgDeveloperMessageLength: allUtterances.length > 0 ? allUtterances.reduce((sum, u) => sum + u.characterCount, 0) / allUtterances.length : 0, - questionRatio: allUtterances.length > 0 ? questionCount / allUtterances.length : 0, - codeBlockRatio: allUtterances.length > 0 ? codeBlockCount / allUtterances.length : 0, - dateRange: { - earliest: timestamps[0] ?? (/* @__PURE__ */ new Date()).toISOString(), - latest: timestamps[timestamps.length - 1] ?? (/* @__PURE__ */ new Date()).toISOString() - }, - ...Object.keys(slashCommandCounts).length > 0 ? { slashCommandCounts } : {}, - ...contextFillMetrics, - frictionSignals, - sessionHints, - ...allInsightBlocks.length > 0 ? { aiInsightBlockCount: allInsightBlocks.length } : {} - }; - const activitySessions = allSessions.map((session, idx) => { - const parsedSession = sessions[idx]; - const userMessages = session.messages.filter(isAnalyzableUserMessage); - const assistantMessages = session.messages.filter((m) => m.role === "assistant"); - const sessionTimestamps = session.messages.map((m) => m.timestamp.getTime()).sort(); - const startTime = sessionTimestamps.length > 0 ? new Date(sessionTimestamps[0]).toISOString() : (/* @__PURE__ */ new Date()).toISOString(); - const endTime = sessionTimestamps.length > 0 ? sessionTimestamps[sessionTimestamps.length - 1] : Date.now(); - const durationSeconds = sessionTimestamps.length > 1 ? (endTime - sessionTimestamps[0]) / 1e3 : parsedSession.durationSeconds; - const totalInputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.input ?? 0), 0); - const totalOutputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.output ?? 0), 0); - const firstUserMsg = userMessages[0]?.rawContent?.slice(0, 200) ?? ""; - return { - sessionId: session.sessionId, - projectName: parsedSession.projectName ?? "unknown", - ...parsedSession.projectPath ? { projectPath: parsedSession.projectPath } : {}, - startTime, - durationSeconds: Math.round(durationSeconds), - messageCount: session.messages.length, - userMessageCount: userMessages.length, - assistantMessageCount: assistantMessages.length, - totalInputTokens, - totalOutputTokens, - ...firstUserMsg ? { firstUserMessage: firstUserMsg } : {} - }; - }); - return { - developerUtterances: allUtterances, - sessionMetrics, - ...allInsightBlocks.length > 0 ? { aiInsightBlocks: allInsightBlocks } : {}, - activitySessions, - sessions - }; -} - -// mcp/tools/extract-data.ts -var definition5 = { - name: "extract_data", - description: "Run deterministic Phase 1 data extraction on scanned sessions. Extracts developer utterances, computes session metrics, friction signals, and deterministic scores. Must call scan_sessions first. Returns summary metrics and creates an analysis run for subsequent domain analysis." -}; -async function execute2(args) { - const maxSessions = args.maxSessions ?? 50; - const includeProjects = normalizeProjectFilters(args.includeProjects); - const allSessions = await readCachedParsedSessions(); - if (allSessions.length === 0) { - return JSON.stringify({ - status: "no_data", - message: "No cached parsed sessions. Call scan_sessions first." - }); - } - const sessions = includeProjects?.length ? allSessions.filter((s) => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; - if (sessions.length === 0) { - return JSON.stringify({ - status: "no_data", - message: "No sessions match the selected projects. Call scan_sessions to see available projects." - }); - } - clearAnalysisPending(); - markAnalysisStarted(); - try { - const selectedSessions = sessions.slice(0, maxSessions); - const phase1Output = await extractPhase1DataFromParsedSessions(selectedSessions); - const scores = computeDeterministicScores(phase1Output); - const activitySessions = buildReportActivitySessions(phase1Output); - const pluginDataDir = getPluginDataDir(); - await mkdir2(pluginDataDir, { recursive: true }); - const phase1Path = join8(pluginDataDir, "phase1-output.json"); - await writeFile2(phase1Path, JSON.stringify(phase1Output, null, 2), "utf-8"); - const runId = createAnalysisRun({ - metrics: phase1Output.sessionMetrics, - scores, - phase1Output, - activitySessions - }); - const runIdPath = join8(pluginDataDir, "current-run-id.txt"); - await writeFile2(runIdPath, String(runId), "utf-8"); - const metrics = phase1Output.sessionMetrics; - return JSON.stringify({ - status: "ok", - runId, - phase1OutputPath: phase1Path, - metrics: { - totalSessions: metrics.totalSessions, - totalUtterances: metrics.totalDeveloperUtterances, - totalMessages: metrics.totalMessages, - avgMessagesPerSession: Math.round(metrics.avgMessagesPerSession), - avgMessageLength: Math.round(metrics.avgDeveloperMessageLength), - questionRatio: Math.round(metrics.questionRatio * 100), - codeBlockRatio: Math.round(metrics.codeBlockRatio * 100), - dateRange: metrics.dateRange - }, - deterministicScores: { - aiPartnership: scores.aiPartnership, - sessionCraft: scores.sessionCraft, - toolMastery: scores.toolMastery, - skillResilience: scores.skillResilience, - sessionMastery: scores.sessionMastery, - controlScore: scores.controlScore - }, - message: `Extracted ${metrics.totalDeveloperUtterances} utterances from ${metrics.totalSessions} sessions. Analysis run #${runId} created. Phase 1 data saved to ${phase1Path}. Ready for domain analysis.` - }); - } catch (error2) { - markAnalysisFailed(error2); - throw error2; - } -} - -// mcp/tools/save-domain-results.ts -var definition6 = { - name: "save_domain_results", - description: "Save structured analysis results for a specific domain. Called after analyzing a domain (aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery). Input must include domain name, overall score, strengths, and growth areas." -}; -function extractDomainName(args) { - return typeof args.domain === "string" ? args.domain : null; -} -function parseStringifiedInput(value) { - if (typeof value !== "string") { - return value; - } - const trimmed = value.trim(); - if (!trimmed) { - return value; - } - if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) { - try { - return JSON.parse(trimmed); - } catch { - return value; - } - } - if (/^-?\d+(?:\.\d+)?$/.test(trimmed)) { - const numericValue = Number(trimmed); - if (Number.isFinite(numericValue)) { - return numericValue; - } - } - return value; -} -function normalizeDomainResultArgs(args) { - return { - ...args, - overallScore: parseStringifiedInput(args.overallScore), - confidenceScore: parseStringifiedInput(args.confidenceScore), - strengths: parseStringifiedInput(args.strengths), - growthAreas: parseStringifiedInput(args.growthAreas), - data: parseStringifiedInput(args.data) - }; -} -var ThinkingQualityDataSchema = external_exports.object({ - planningHabits: external_exports.union([ - // Canonical array format: [{ type, frequency, examples, effectiveness }] - external_exports.array(external_exports.object({ - type: external_exports.string(), - frequency: external_exports.string().optional(), - examples: external_exports.array(external_exports.string()).optional(), - effectiveness: external_exports.string().optional() - }).passthrough()).min(1), - // Plugin summary format: { dominantType, typeDistribution, ... } - external_exports.object({ - dominantType: external_exports.string().optional(), - typeDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional() - }).passthrough() - ]), - verificationBehavior: external_exports.object({ - level: external_exports.string() - }).passthrough(), - criticalThinkingMoments: external_exports.array(external_exports.object({ - type: external_exports.string(), - quote: external_exports.string().optional(), - result: external_exports.string().optional(), - utteranceId: external_exports.string().optional(), - sessionId: external_exports.string().optional() - }).passthrough()), - verificationAntiPatterns: external_exports.array(external_exports.object({ - type: external_exports.string(), - frequency: external_exports.number().optional(), - severity: external_exports.string().optional(), - examples: external_exports.array(external_exports.unknown()).optional(), - evidence: external_exports.array(external_exports.unknown()).optional(), - improvement: external_exports.string().optional() - }).passthrough()), - planQualityScore: external_exports.number().min(0).max(100).optional(), - multitaskingPattern: MultitaskingPatternSchema.optional() -}).passthrough(); -var CommunicationPatternsDataSchema = external_exports.object({ - communicationPatterns: external_exports.array(external_exports.object({ - // Accept any of: patternName (canonical), patternId, title (plugin) - patternName: external_exports.string().optional(), - patternId: external_exports.string().optional(), - title: external_exports.string().optional(), - category: external_exports.string().optional(), - description: external_exports.string().optional(), - // Frequency: accept both enum string and number - frequency: external_exports.union([external_exports.string(), external_exports.number()]).optional(), - effectiveness: external_exports.string().optional(), - tip: external_exports.string().optional(), - // Examples: accept both canonical and plugin evidence format - examples: external_exports.array(external_exports.unknown()).optional(), - evidence: external_exports.array(external_exports.unknown()).optional() - }).passthrough()).min(1), - signatureQuotes: external_exports.array(external_exports.object({ - utteranceId: external_exports.string() - }).passthrough()).optional(), - structuralDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional(), - contextDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional(), - questioningDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional() -}).passthrough(); -var LearningBehaviorDataSchema = external_exports.object({ - knowledgeGaps: external_exports.array(external_exports.object({ - // Accept both canonical (topic) and plugin (area) field names - area: external_exports.string().optional(), - topic: external_exports.string().optional(), - severity: external_exports.string().optional(), - trend: external_exports.string().optional(), - evidence: external_exports.array(external_exports.unknown()).optional(), - description: external_exports.string().optional(), - questionCount: external_exports.number().optional(), - depth: external_exports.string().optional(), - example: external_exports.string().optional() - }).passthrough()).optional(), - repeatedMistakePatterns: external_exports.array(external_exports.object({ - category: external_exports.string(), - description: external_exports.string().optional(), - mistakeType: external_exports.string().optional(), - // Accept both canonical (occurrenceCount) and plugin (frequency) - frequency: external_exports.number().optional(), - occurrenceCount: external_exports.number().optional(), - sessionsAffected: external_exports.array(external_exports.string()).optional(), - exampleUtteranceIds: external_exports.array(external_exports.string()).optional(), - evidence: external_exports.array(external_exports.unknown()).optional(), - recommendation: external_exports.string().optional() - }).passthrough()).optional(), - learningProgress: external_exports.array(external_exports.object({ - area: external_exports.string().optional(), - topic: external_exports.string().optional(), - startLevel: external_exports.string().optional(), - currentLevel: external_exports.string().optional(), - evidence: external_exports.unknown().optional(), - milestones: external_exports.array(external_exports.string()).optional(), - description: external_exports.string().optional() - }).passthrough()).optional(), - recommendedResources: external_exports.array(external_exports.object({ - name: external_exports.string().optional(), - topic: external_exports.string().optional(), - url: external_exports.string().optional(), - resourceType: external_exports.string().optional(), - targetGap: external_exports.string().optional(), - timeInvestment: external_exports.string().optional(), - priority: external_exports.string().optional() - }).passthrough()).optional(), - topInsights: external_exports.array(external_exports.unknown()).optional() -}).passthrough(); -var ContextEfficiencyDataSchema = external_exports.object({ - inefficiencyPatterns: external_exports.array(external_exports.object({ - // Accept both canonical (pattern) and plugin (type) field names - type: external_exports.string().optional(), - pattern: external_exports.string().optional(), - frequency: external_exports.number().optional(), - severity: external_exports.string().optional(), - impact: external_exports.string().optional(), - description: external_exports.string().optional(), - evidence: external_exports.array(external_exports.unknown()).optional() - }).passthrough()).optional(), - contextUsagePatterns: external_exports.array(external_exports.object({ - sessionId: external_exports.string().optional(), - avgFillPercent: external_exports.number().optional(), - pattern: external_exports.string().optional(), - trajectory: external_exports.string().optional() - }).passthrough()).optional(), - promptLengthTrends: external_exports.unknown().optional(), - iterationAnalysis: external_exports.unknown().optional(), - avgContextFillPercent: external_exports.number().optional(), - topInsights: external_exports.array(external_exports.unknown()).optional() -}).passthrough(); -var SessionOutcomeDataSchema = external_exports.object({ - sessionAnalyses: external_exports.array(external_exports.object({ - sessionId: external_exports.string(), - goals: external_exports.array(external_exports.string()).optional(), - primaryGoal: external_exports.string().optional(), - sessionType: external_exports.string(), - outcome: external_exports.string(), - satisfaction: external_exports.string().optional(), - satisfactionSignal: external_exports.string().optional(), - frictionPoints: external_exports.array(external_exports.unknown()).optional(), - frictionTypes: external_exports.array(external_exports.string()).optional(), - outcomeScore: external_exports.number().optional(), - duration: external_exports.string().optional(), - utteranceCount: external_exports.number().optional(), - keyMoment: external_exports.string().optional() - })).min(1), - overallSuccessRate: external_exports.number().min(0).max(100).optional(), - goalDistribution: external_exports.array(external_exports.unknown()).optional(), - frictionSummary: external_exports.array(external_exports.unknown()).optional(), - successPatterns: external_exports.array(external_exports.unknown()).optional(), - failurePatterns: external_exports.array(external_exports.unknown()).optional() -}).passthrough(); -var DOMAIN_DATA_SCHEMAS = { - // v2 domains: merged schemas are permissive (.passthrough()) to accept combined data - aiPartnership: ThinkingQualityDataSchema.merge(SessionOutcomeDataSchema.partial()).passthrough(), - sessionCraft: ContextEfficiencyDataSchema.merge(LearningBehaviorDataSchema.partial()).passthrough(), - toolMastery: CommunicationPatternsDataSchema, - skillResilience: external_exports.record(external_exports.string(), external_exports.unknown()), - // permissive - sessionMastery: external_exports.record(external_exports.string(), external_exports.unknown()), - // permissive - // Legacy domains - thinkingQuality: ThinkingQualityDataSchema, - communicationPatterns: CommunicationPatternsDataSchema, - learningBehavior: LearningBehaviorDataSchema, - contextEfficiency: ContextEfficiencyDataSchema, - sessionOutcome: SessionOutcomeDataSchema -}; -var QUALITY_THRESHOLDS = { - /** Minimum characters for strength/growth area descriptions */ - minDescriptionLength: 300, - /** Minimum characters for growth area recommendations */ - minRecommendationLength: 150, - /** Minimum evidence items per strength/growth area */ - minEvidenceCount: 2 -}; -var DomainResultInputSchema = external_exports.object({ - domain: external_exports.enum([ - // v2 domains - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery", - // Legacy domains - "thinkingQuality", - "communicationPatterns", - "learningBehavior", - "contextEfficiency", - "sessionOutcome", - "content" - ]), - overallScore: external_exports.number().min(0).max(100), - confidenceScore: external_exports.number().min(0).max(1).optional(), - strengths: external_exports.array(DomainStrengthSchema), - growthAreas: external_exports.array(DomainGrowthAreaSchema), - /** Domain-specific typed data. Validated per domain using typed schemas. */ - data: external_exports.record(external_exports.string(), external_exports.unknown()).optional() -}); -function validateContentQuality(strengths, growthAreas) { - const issues = []; - for (const [i, strength] of strengths.entries()) { - if (strength.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { - issues.push({ - field: `strengths[${i}].description`, - message: `Description for "${strength.title}" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure: WHAT the pattern is (2-3 sentences), WHY it matters (1-2 sentences), HOW to leverage it (1-2 sentences).`, - actual: strength.description.length, - required: QUALITY_THRESHOLDS.minDescriptionLength - }); - } - if (strength.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) { - issues.push({ - field: `strengths[${i}].evidence`, - message: `Strength "${strength.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}). Search across ALL sessions for additional examples of this pattern.`, - actual: strength.evidence.length, - required: QUALITY_THRESHOLDS.minEvidenceCount - }); - } - } - for (const [i, area] of growthAreas.entries()) { - if (area.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { - issues.push({ - field: `growthAreas[${i}].description`, - message: `Description for "${area.title}" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure.`, - actual: area.description.length, - required: QUALITY_THRESHOLDS.minDescriptionLength - }); - } - if (area.recommendation.length < QUALITY_THRESHOLDS.minRecommendationLength) { - issues.push({ - field: `growthAreas[${i}].recommendation`, - message: `Recommendation for "${area.title}" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required. Provide step-by-step actionable advice.`, - actual: area.recommendation.length, - required: QUALITY_THRESHOLDS.minRecommendationLength - }); - } - if (area.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) { - issues.push({ - field: `growthAreas[${i}].evidence`, - message: `Growth area "${area.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${area.evidence.length}).`, - actual: area.evidence.length, - required: QUALITY_THRESHOLDS.minEvidenceCount - }); - } - } - return issues; -} -async function execute3(args) { - const normalizedArgs = normalizeDomainResultArgs(args); - const runId = getCurrentRunId(); - const domainName = extractDomainName(normalizedArgs); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first to start an analysis." - }); - } - const parsed = DomainResultInputSchema.safeParse(normalizedArgs); - if (!parsed.success) { - if (domainName) { - recordStageStatus(runId, domainName, { - status: "failed", - lastError: "Invalid domain result format." - }); - } - return JSON.stringify({ - status: "validation_error", - message: "Invalid domain result format.", - errors: parsed.error.issues.map((i) => ({ - path: i.path.join("."), - message: i.message - })) - }); - } - const domainSchema = DOMAIN_DATA_SCHEMAS[parsed.data.domain]; - if (domainSchema && parsed.data.data) { - const dataResult = domainSchema.safeParse(parsed.data.data); - if (!dataResult.success) { - recordStageStatus(runId, parsed.data.domain, { - status: "failed", - lastError: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.` - }); - const missingFields = dataResult.error.issues.map((i) => ({ - path: `data.${i.path.join(".")}`, - message: i.message - })); - return JSON.stringify({ - status: "validation_error", - message: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid. The data field must contain the required structures for this domain. Review the skill instructions for the expected data format.`, - errors: missingFields, - hint: getDomainDataHint(parsed.data.domain) - }); - } - } else if (parsed.data.domain !== "content" && !parsed.data.data) { - recordStageStatus(runId, parsed.data.domain, { - status: "failed", - lastError: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures.` - }); - return JSON.stringify({ - status: "validation_error", - message: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures. Do not omit the data field.`, - hint: getDomainDataHint(parsed.data.domain) - }); - } - const qualityIssues = validateContentQuality( - parsed.data.strengths, - parsed.data.growthAreas - ); - if (qualityIssues.length > 0) { - recordStageStatus(runId, parsed.data.domain, { - status: "failed", - lastError: `Quality gate failed for "${parsed.data.domain}" analysis.` - }); - return JSON.stringify({ - status: "quality_error", - message: `${qualityIssues.length} quality issue(s) detected. Descriptions must be ${QUALITY_THRESHOLDS.minDescriptionLength}+ chars, recommendations must be ${QUALITY_THRESHOLDS.minRecommendationLength}+ chars, and each insight needs ${QUALITY_THRESHOLDS.minEvidenceCount}+ evidence items. Please expand the flagged fields and call save_domain_results again.`, - issues: qualityIssues - }); - } - const domainResult = { - domain: parsed.data.domain, - overallScore: parsed.data.overallScore, - confidenceScore: parsed.data.confidenceScore ?? 0.5, - strengths: parsed.data.strengths, - growthAreas: parsed.data.growthAreas, - data: parsed.data.data, - analyzedAt: (/* @__PURE__ */ new Date()).toISOString() - }; - saveDomainResult(runId, domainResult); - recordStageStatus(runId, domainResult.domain, { - status: "validated" - }); - return JSON.stringify({ - status: "ok", - domain: domainResult.domain, - score: domainResult.overallScore, - strengthCount: domainResult.strengths.length, - growthAreaCount: domainResult.growthAreas.length, - runId, - message: `Saved ${domainResult.domain} analysis (score: ${domainResult.overallScore}/100) to run #${runId}.` - }); -} -function getDomainDataHint(domain) { - const hints = { - aiPartnership: "Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate", - sessionCraft: "Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]", - toolMastery: "Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]", - skillResilience: "Expected: domain-specific data (flexible schema)", - sessionMastery: "Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore", - // Legacy domains - thinkingQuality: "Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]", - communicationPatterns: "Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]", - learningBehavior: "Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]", - contextEfficiency: "Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent", - sessionOutcome: "Required: sessionAnalyses[] (min 1, each with sessionId, sessionType, outcome). Optional: overallSuccessRate" - }; - return hints[domain] ?? ""; -} - -// mcp/tools/get-domain-results.ts -var definition7 = { - name: "get_domain_results", - description: "Read previously saved domain analysis results from the current local analysis run. Provide a domain name to get one domain, or omit it to get all saved domains. Available domains: aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery." -}; -var GetDomainResultsInputSchema = external_exports.object({ - domain: external_exports.enum([ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery", - // Legacy domains - "thinkingQuality", - "communicationPatterns", - "learningBehavior", - "contextEfficiency", - "sessionOutcome", - "content" - ]).optional() -}); -async function execute4(args) { - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first." - }); - } - if (args.domain) { - const result = getDomainResult(runId, args.domain); - if (!result) { - return JSON.stringify({ - status: "not_found", - domain: args.domain, - runId, - message: `No ${args.domain} result found for run #${runId}. This domain may not have been analyzed yet.` - }); - } - return JSON.stringify({ - status: "ok", - domain: args.domain, - runId, - data: result - }); - } - const results = getDomainResults(runId); - return JSON.stringify({ - status: "ok", - runId, - domainsAvailable: results.map((result) => result.domain), - data: results - }); -} - -// mcp/tools/get-user-prefs.ts -var definition8 = { - name: "get_user_prefs", - description: "Read BetterPrompt user preferences from ~/.betterprompt/prefs.json. Use this instead of direct file reads in setup and analysis skills." -}; -async function execute5() { - return JSON.stringify({ - status: "ok", - prefs: readPrefs(), - message: "Loaded BetterPrompt user preferences." - }); -} - -// mcp/tools/get-run-progress.ts -var definition9 = { - name: "get_run_progress", - description: "Inspect the current local analysis run and report which required stages are complete, missing, or need to be resumed. Use this before starting bp analyze to resume interrupted runs." -}; -var DOMAIN_STAGE_NAMES = /* @__PURE__ */ new Set([ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery" -]); -var REQUIRED_STAGE_SEQUENCE = [ - { stage: "sessionSummaries", skill: "summarize-sessions", tool: null, kind: "stage" }, - // 5 extractors (down from 6) - { stage: "extractAiPartnership", skill: "extract-ai-partnership", tool: null, kind: "stage" }, - { stage: "extractSessionCraft", skill: "extract-session-craft", tool: null, kind: "stage" }, - { stage: "extractToolMastery", skill: "extract-tool-mastery", tool: null, kind: "stage" }, - { stage: "extractSkillResilience", skill: "extract-skill-resilience", tool: null, kind: "stage" }, - { stage: "extractSessionMastery", skill: "extract-session-mastery", tool: null, kind: "stage" }, - // 5 writers (down from 6) - { stage: "aiPartnership", skill: "write-ai-partnership", tool: null, kind: "domain" }, - { stage: "sessionCraft", skill: "write-session-craft", tool: null, kind: "domain" }, - { stage: "toolMastery", skill: "write-tool-mastery", tool: null, kind: "domain" }, - { stage: "skillResilience", skill: "write-skill-resilience", tool: null, kind: "domain" }, - { stage: "sessionMastery", skill: "write-session-mastery", tool: null, kind: "domain" }, - // Context generation + classification - { stage: "projectSummaries", skill: "summarize-projects", tool: null, kind: "stage" }, - { stage: "weeklyInsights", skill: "generate-weekly-insights", tool: null, kind: "stage" }, - { stage: "deterministicType", skill: null, tool: "classify_developer_type", kind: "stage" }, - { stage: "typeClassification", skill: "classify-type", tool: null, kind: "stage" }, - { stage: "evidenceVerification", skill: null, tool: "verify_evidence", kind: "stage" }, - { stage: "contentWriter", skill: "write-content", tool: null, kind: "stage" } -]; -function hasArtifact(runId, stage) { - if (stage === "deterministicType") { - return getAnalysisRun(runId)?.typeResult !== null; - } - if (DOMAIN_STAGE_NAMES.has(stage)) { - return getDomainResult(runId, stage) !== null; - } - return getStageOutput(runId, stage) !== null; -} -function buildStepStatus(runId, step, statusLookup) { - const savedStatus = statusLookup.get(step.stage); - const artifactPresent = hasArtifact(runId, step.stage); - if (savedStatus) { - return { - stage: step.stage, - skill: step.skill, - tool: step.tool, - kind: step.kind, - status: savedStatus.status, - completed: savedStatus.status === "validated", - hasArtifact: artifactPresent, - attemptCount: savedStatus.attemptCount, - lastError: savedStatus.lastError, - updatedAt: savedStatus.updatedAt - }; - } - return { - stage: step.stage, - skill: step.skill, - tool: step.tool, - kind: step.kind, - status: artifactPresent ? "validated" : "missing", - completed: artifactPresent, - hasArtifact: artifactPresent, - attemptCount: 0, - lastError: null, - updatedAt: null - }; -} -function computeRunProgress(runId) { - const run = getAnalysisRun(runId); - if (!run?.phase1Output) { - return null; - } - const statusLookup = new Map( - getStageStatuses(runId).map((status) => [status.stage, status]) - ); - const stages = REQUIRED_STAGE_SEQUENCE.map((step) => buildStepStatus(runId, step, statusLookup)); - const nextIncomplete = stages.find((stage) => !stage.completed); - const completedRequiredStages = stages.filter((stage) => stage.completed).length; - const projectNames = Array.from( - new Set( - (run.phase1Output.sessions ?? []).map((session) => session.projectName).filter((name) => typeof name === "string" && name.length > 0) - ) - ).sort(); - return { - runId, - analyzedAt: run.analyzedAt, - phase1Complete: true, - sessionCount: run.phase1Output.sessionMetrics.totalSessions, - projectNames, - completionStatus: nextIncomplete ? "incomplete" : "complete", - completedRequiredStages, - totalRequiredStages: REQUIRED_STAGE_SEQUENCE.length, - completedDomainCount: stages.filter((stage) => DOMAIN_STAGE_NAMES.has(stage.stage) && stage.completed).length, - totalDomainCount: DOMAIN_STAGE_NAMES.size, - nextStep: nextIncomplete ? { - stage: nextIncomplete.stage, - skill: nextIncomplete.skill, - tool: nextIncomplete.tool, - kind: nextIncomplete.kind - } : { - stage: "generateReport", - skill: null, - tool: "generate_report", - kind: "report" - }, - stages - }; -} -async function execute6() { - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "no_run", - message: "No active analysis run. Start Phase 1 with scan_sessions and extract_data." - }); - } - const progress = computeRunProgress(runId); - if (!progress) { - return JSON.stringify({ - status: "no_run", - runId, - message: "The current run has no resumable Phase 1 data. Start Phase 1 again." - }); - } - const pendingStages = progress.stages.filter((stage) => !stage.completed).map(({ stage, skill, tool, kind, status, lastError }) => ({ - stage, - skill, - tool, - kind, - status, - ...lastError ? { lastError } : {} - })); - return JSON.stringify({ - status: "ok", - runId: progress.runId, - analyzedAt: progress.analyzedAt, - phase1Complete: progress.phase1Complete, - sessionCount: progress.sessionCount, - projectNames: progress.projectNames, - completionStatus: progress.completionStatus, - completedRequiredStages: progress.completedRequiredStages, - totalRequiredStages: progress.totalRequiredStages, - completedDomainCount: progress.completedDomainCount, - totalDomainCount: progress.totalDomainCount, - nextStep: progress.nextStep, - pendingStages, - message: progress.completionStatus === "complete" ? `Run #${runId} already has all required stages. Call generate_report to reopen the report.` : `Run #${runId} is incomplete (${progress.completedRequiredStages}/${progress.totalRequiredStages}). Resume with ${progress.nextStep.tool ?? progress.nextStep.skill ?? progress.nextStep.stage}.` - }); -} - -// mcp/tools/save-user-prefs.ts -var definition10 = { - name: "save_user_prefs", - description: "Update BetterPrompt user preferences in ~/.betterprompt/prefs.json. Provided fields are merged with existing prefs. Set markWelcomeCompleted=true to stamp welcomeCompleted with the exact current ISO timestamp." -}; -var SaveUserPrefsInputSchema = external_exports.object({ - selectedProjects: external_exports.array(external_exports.string()).optional().describe('Project names to analyze. Use [] to mean "all projects".'), - starAsked: external_exports.boolean().optional().describe("Whether the GitHub star prompt has already been handled."), - welcomeShown: external_exports.boolean().optional().describe("Whether the setup welcome has been shown."), - welcomeVersion: external_exports.string().optional().describe('Setup flow version, for example "2.0".'), - markWelcomeCompleted: external_exports.boolean().optional().describe("When true, sets welcomeCompleted to the exact current ISO timestamp."), - queueAnalysis: external_exports.boolean().optional().describe("When true, queues a pending analysis for the next session via plugin-state.json.") -}); -function normalizeWelcomeVersion(value) { - if (value === void 0) { - return void 0; - } - const trimmed = value.trim(); - if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) { - return trimmed.slice(1, -1).trim(); - } - return trimmed; -} -async function execute7(args) { - const parsed = SaveUserPrefsInputSchema.safeParse(args); - if (!parsed.success) { - return JSON.stringify({ - status: "validation_error", - message: "Invalid user prefs payload.", - errors: parsed.error.issues.map((issue) => ({ - path: issue.path.join("."), - message: issue.message - })) - }); - } - const { markWelcomeCompleted = false, queueAnalysis = false, ...partial2 } = parsed.data; - const nextPrefs = { - ...partial2, - ...partial2.welcomeVersion !== void 0 ? { welcomeVersion: normalizeWelcomeVersion(partial2.welcomeVersion) } : {} - }; - if (markWelcomeCompleted) { - nextPrefs.welcomeCompleted = (/* @__PURE__ */ new Date()).toISOString(); - } - if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) { - return JSON.stringify({ - status: "noop", - prefs: readPrefs(), - message: "No preference fields were provided." - }); - } - if (Object.keys(nextPrefs).length > 0) { - writePrefs(nextPrefs); - } - if (queueAnalysis) { - markAnalysisPending(); - } - return JSON.stringify({ - status: "ok", - prefs: readPrefs(), - ...queueAnalysis ? { analysisQueued: true } : {}, - message: queueAnalysis ? "Updated preferences and queued analysis for next session." : "Updated BetterPrompt user preferences." - }); -} - -// mcp/tools/classify-developer-type.ts -import { readFile as readFile3 } from "fs/promises"; -import { join as join9 } from "path"; -var definition11 = { - name: "classify_developer_type", - description: "Classify the developer's AI collaboration type using deterministic rules. Uses the 5x3 type matrix (architect/analyst/conductor/speedrunner/trendsetter x explorer/navigator/cartographer). Requires extract_data to have been run first. Returns the primary type, distribution, control level, and matrix name." -}; -async function execute8(_args) { - const runId = getCurrentRunId(); - let phase1Output; - const existingRun = runId ? getAnalysisRun(runId) : null; - if (existingRun?.phase1Output) { - phase1Output = existingRun.phase1Output; - } else { - try { - const phase1Path = join9(getPluginDataDir(), "phase1-output.json"); - const content = await readFile3(phase1Path, "utf-8"); - phase1Output = JSON.parse(content); - } catch { - return JSON.stringify({ - status: "error", - message: "No Phase 1 data found. Call extract_data first." - }); - } - } - const scores = existingRun?.phase1Output ? existingRun.scores : computeDeterministicScores(phase1Output); - const typeResult = computeDeterministicType(scores, phase1Output); - if (runId) { - saveTypeResult(runId, typeResult); - } - return JSON.stringify({ - status: "ok", - primaryType: typeResult.primaryType, - controlLevel: typeResult.controlLevel, - matrixName: typeResult.matrixName, - matrixEmoji: typeResult.matrixEmoji, - distribution: typeResult.distribution, - controlScore: typeResult.controlScore, - runId, - message: `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} (${typeResult.primaryType} / ${typeResult.controlLevel}). Distribution: architect ${typeResult.distribution.architect}%, analyst ${typeResult.distribution.analyst}%, conductor ${typeResult.distribution.conductor}%, speedrunner ${typeResult.distribution.speedrunner}%, trendsetter ${typeResult.distribution.trendsetter}%.` - }); -} - -// mcp/tools/verify-evidence.ts -var definition12 = { - name: "verify_evidence", - description: "Deterministically verify saved evidence quotes against the current run's developer utterances, persist the evidenceVerification stage output, and return kept/filtered counts." -}; -var VerifyEvidenceInputSchema = external_exports.object({ - threshold: external_exports.number().int().min(0).max(100).optional() -}); -function normalizeText(text) { - return text.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9\s]/g, " ").replace(/\s+/g, " ").trim(); -} -function tokenize(text) { - return normalizeText(text).split(" ").filter((token) => token.length > 1); -} -function bigrams(text) { - const normalized = normalizeText(text).replace(/\s+/g, " "); - if (normalized.length < 2) return normalized ? [normalized] : []; - const grams = []; - for (let index = 0; index < normalized.length - 1; index += 1) { - grams.push(normalized.slice(index, index + 2)); - } - return grams; -} -function diceCoefficient(left, right) { - const leftBigrams = bigrams(left); - const rightBigrams = bigrams(right); - if (leftBigrams.length === 0 || rightBigrams.length === 0) { - return 0; - } - const rightCounts = /* @__PURE__ */ new Map(); - for (const gram of rightBigrams) { - rightCounts.set(gram, (rightCounts.get(gram) ?? 0) + 1); - } - let intersection2 = 0; - for (const gram of leftBigrams) { - const count = rightCounts.get(gram) ?? 0; - if (count > 0) { - intersection2 += 1; - rightCounts.set(gram, count - 1); - } - } - return 2 * intersection2 / (leftBigrams.length + rightBigrams.length); -} -function scoreEvidence(quote, utterance) { - const normalizedQuote = normalizeText(quote); - const normalizedUtterance = normalizeText(utterance); - if (!normalizedQuote || !normalizedUtterance) { - return 0; - } - if (normalizedUtterance.includes(normalizedQuote) || normalizedQuote.includes(normalizedUtterance)) { - return 100; - } - const quoteTokens = tokenize(quote); - const utteranceTokens = new Set(tokenize(utterance)); - if (quoteTokens.length === 0) { - return 0; - } - const sharedTokens = quoteTokens.filter((token) => utteranceTokens.has(token)).length; - const tokenCoverage = sharedTokens / quoteTokens.length; - const similarity = diceCoefficient(normalizedQuote, normalizedUtterance); - if (tokenCoverage >= 0.85 || similarity >= 0.82) { - return 85; - } - if (tokenCoverage >= 0.6 || similarity >= 0.65) { - return 65; - } - if (tokenCoverage >= 0.4 || similarity >= 0.5) { - return 45; - } - return 0; -} -async function execute9(args = {}) { - const parsed = VerifyEvidenceInputSchema.safeParse(args); - if (!parsed.success) { - return JSON.stringify({ - status: "validation_error", - message: "Invalid verify_evidence request.", - errors: parsed.error.issues.map((issue) => ({ - path: issue.path.join("."), - message: issue.message - })) - }); - } - const threshold = parsed.data.threshold ?? 50; - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first." - }); - } - const run = getAnalysisRun(runId); - if (!run?.phase1Output) { - return JSON.stringify({ - status: "error", - runId, - message: `Run #${runId} has no Phase 1 output.` - }); - } - const domainResults = getDomainResults(runId); - if (domainResults.length === 0) { - return JSON.stringify({ - status: "error", - runId, - message: `Run #${runId} has no saved domain results to verify.` - }); - } - recordStageStatus(runId, "evidenceVerification", { status: "running" }); - try { - const utteranceLookup = Object.fromEntries( - run.phase1Output.developerUtterances.map((utterance) => [ - utterance.id, - utterance.displayText || utterance.text - ]) - ); - const verifiedResults = []; - const domainStats = []; - for (const result of domainResults) { - const evidenceItems = [ - ...result.strengths.flatMap((strength) => strength.evidence ?? []), - ...result.growthAreas.flatMap((growthArea) => growthArea.evidence ?? []) - ]; - let keptCount2 = 0; - let filteredCount2 = 0; - for (const evidence of evidenceItems) { - const utteranceId = typeof evidence.utteranceId === "string" ? evidence.utteranceId : ""; - const quote = typeof evidence.quote === "string" ? evidence.quote : ""; - const sourceUtterance = utteranceId ? utteranceLookup[utteranceId] ?? "" : ""; - const relevanceScore = scoreEvidence(quote, sourceUtterance); - const verified = relevanceScore >= threshold; - if (verified) { - keptCount2 += 1; - } else { - filteredCount2 += 1; - } - verifiedResults.push({ - utteranceId, - quote, - relevanceScore, - verified - }); - } - domainStats.push({ - domain: result.domain, - totalEvidence: evidenceItems.length, - keptCount: keptCount2, - filteredCount: filteredCount2 - }); - } - const data = { - verifiedResults, - domainStats, - threshold - }; - saveStageOutput(runId, "evidenceVerification", data); - recordStageStatus(runId, "evidenceVerification", { status: "validated" }); - const keptCount = verifiedResults.filter((result) => result.verified).length; - const filteredCount = verifiedResults.length - keptCount; - return JSON.stringify({ - status: "ok", - runId, - stage: "evidenceVerification", - threshold, - totalEvidence: verifiedResults.length, - keptCount, - filteredCount, - domainStats, - message: `Verified ${verifiedResults.length} evidence items for run #${runId}. Kept ${keptCount}, filtered ${filteredCount}.` - }); - } catch (error2) { - const message = error2 instanceof Error ? error2.message : "Failed to verify evidence."; - recordStageStatus(runId, "evidenceVerification", { - status: "failed", - lastError: message - }); - return JSON.stringify({ - status: "error", - runId, - message - }); - } -} - -// mcp/tools/generate-report.ts -import { readFileSync as readFileSync2 } from "fs"; -import { writeFile as writeFile3, mkdir as mkdir3 } from "fs/promises"; -import { join as join10 } from "path"; -import { createServer } from "http"; -import { exec } from "child_process"; - -// lib/report-template.ts -function escapeHtml(str) { - return str.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); -} -function polarToCartesian(cx, cy, radius, angleDeg) { - const angleRad = (angleDeg - 90) * Math.PI / 180; - return { - x: cx + radius * Math.cos(angleRad), - y: cy + radius * Math.sin(angleRad) - }; -} -function generateRadarSvg(scores, labels, size = 300) { - const entries = Object.entries(scores); - const count = entries.length; - if (count === 0) return ""; - const cx = size / 2; - const cy = size / 2; - const maxRadius = size / 2 - 40; - const angleStep = 360 / count; - const gridCircles = [0.25, 0.5, 0.75, 1].map((frac) => { - const r = maxRadius * frac; - return ``; - }).join("\n"); - const gridLines = entries.map(([key], i) => { - const angle = i * angleStep; - const end = polarToCartesian(cx, cy, maxRadius, angle); - const labelPos = polarToCartesian(cx, cy, maxRadius + 20, angle); - const label = labels[key] ?? key; - return ` - - ${label} - `; - }).join("\n"); - const points = entries.map(([, score], i) => { - const angle = i * angleStep; - const r = maxRadius * (score / 100); - const p = polarToCartesian(cx, cy, r, angle); - return `${p.x},${p.y}`; - }).join(" "); - const dots = entries.map(([, score], i) => { - const angle = i * angleStep; - const r = maxRadius * (score / 100); - const p = polarToCartesian(cx, cy, r, angle); - return ``; - }).join("\n"); - return ` - - ${gridCircles} - ${gridLines} - - ${dots} - - `; -} -function generateTypeDistributionBar(distribution) { - const colors = { - architect: "#3B82F6", - analyst: "#9C7CF4", - conductor: "#FFD93D", - speedrunner: "#4ADE80", - trendsetter: "#FF6B9D" - }; - const entries = Object.entries(distribution); - entries.sort((a, b) => b[1] - a[1]); - const bars = entries.map(([type, pct]) => ` -
- ${type} -
-
-
- ${pct}% -
- `).join(""); - return `
${bars}
`; -} -var RADAR_LABELS = { - aiPartnership: "AI Partnership", - sessionCraft: "Session Craft", - toolMastery: "Tool Mastery", - skillResilience: "Skill Resilience", - sessionMastery: "Session Mastery" -}; -function buildRadarScores(scores) { - return { - aiPartnership: scores.aiPartnership, - sessionCraft: scores.sessionCraft, - toolMastery: scores.toolMastery, - skillResilience: scores.skillResilience, - sessionMastery: scores.sessionMastery - }; -} -var DOMAIN_LABELS = { - aiPartnership: { label: "AI Partnership", emoji: "\u{1F91D}" }, - sessionCraft: { label: "Session Craft", emoji: "\u{1F6E0}\uFE0F" }, - toolMastery: { label: "Tool Mastery", emoji: "\u{1F527}" }, - skillResilience: { label: "Skill Resilience", emoji: "\u{1F9E9}" }, - sessionMastery: { label: "Session Mastery", emoji: "\u2728" }, - // Legacy domain labels for old runs - thinkingQuality: { label: "Thinking Quality", emoji: "\u{1F9E0}" }, - communicationPatterns: { label: "Communication", emoji: "\u{1F4AC}" }, - learningBehavior: { label: "Learning", emoji: "\u{1F4DA}" }, - contextEfficiency: { label: "Efficiency", emoji: "\u26A1" }, - sessionOutcome: { label: "Sessions", emoji: "\u{1F3AF}" }, - content: { label: "Skill Resilience", emoji: "\u{1F9E9}" } -}; -function generateDomainSection(result) { - const meta2 = DOMAIN_LABELS[result.domain] ?? { label: result.domain, emoji: "\u{1F4CA}" }; - const strengthCards = result.strengths.map((s) => ` -
-

${escapeHtml(s.title)}

-

${escapeHtml(s.description)}

- ${s.evidence.length > 0 ? ` -
- Evidence (${s.evidence.length}) -
    - ${s.evidence.map((e) => `
  • ${escapeHtml(e.utteranceId)}: "${escapeHtml(e.quote)}"
  • `).join("")} -
-
- ` : ""} -
- `).join(""); - const growthCards = result.growthAreas.map((g) => ` -
-
${escapeHtml(g.severity)}
-

${escapeHtml(g.title)}

-

${escapeHtml(g.description)}

-
${escapeHtml(g.recommendation)}
- ${g.evidence.length > 0 ? ` -
- Evidence (${g.evidence.length}) -
    - ${g.evidence.map((e) => `
  • ${escapeHtml(e.utteranceId)}: "${escapeHtml(e.quote)}"
  • `).join("")} -
-
- ` : ""} -
- `).join(""); - return ` -
-

${meta2.emoji} ${meta2.label} ${result.overallScore}/100

- ${result.strengths.length > 0 ? `

Strengths

${strengthCards}
` : ""} - ${result.growthAreas.length > 0 ? `

Growth Areas

${growthCards}
` : ""} -
- `; -} -function generateFocusAreas(content) { - if (!content?.topFocusAreas?.length) return ""; - const areas = content.topFocusAreas.map((area) => ` -
-

${escapeHtml(area.title)}

-

${escapeHtml(area.narrative ?? area.description ?? "")}

- ${area.actions ? ` -
-
Start: ${escapeHtml(area.actions.start)}
-
Stop: ${escapeHtml(area.actions.stop)}
-
Continue: ${escapeHtml(area.actions.continue)}
-
- ` : ""} -
- `).join(""); - return ` -
-

\u{1F3AF} Top Focus Areas

- ${areas} -
- `; -} -function generatePersonalitySummary(summary) { - if (!summary?.trim()) return ""; - return ` -
-

\u{1FA9E} Personality Summary

-
-

${escapeHtml(summary).replace(/\n/g, "
")}

-
-
- `; -} -function generatePromptPatternsSection(promptPatterns) { - if (!promptPatterns?.length) return ""; - const items = promptPatterns.map((pattern) => ` -
-

${escapeHtml(pattern.patternName ?? "Pattern")}

-

${escapeHtml(pattern.description ?? "")}

-

Frequency: ${escapeHtml(pattern.frequency ?? "n/a")}

- ${(pattern.examples?.length ?? 0) > 0 ? ` -
- Examples (${pattern.examples.length}) -
    - ${pattern.examples.map((example) => `
  • "${escapeHtml(example.quote ?? "")}"${example.analysis ? ` \u2014 ${escapeHtml(example.analysis)}` : ""}
  • `).join("")} -
-
- ` : ""} -
- `).join(""); - return ` -
-

\u{1F9E9} Prompt Patterns

-
${items}
-
- `; -} -function generateProjectSummariesSection(projectSummaries) { - if (!projectSummaries?.length) return ""; - const items = projectSummaries.map((project) => ` -
-

${escapeHtml(project.projectName)} (${project.sessionCount} sessions)

-
    - ${project.summaryLines.map((line) => `
  • ${escapeHtml(line)}
  • `).join("")} -
-
- `).join(""); - return ` -
-

\u{1F4C1} Project Summaries

-
${items}
-
- `; -} -function heatmapToDateKey(dateStr) { - return dateStr.slice(0, 10); -} -function heatmapGetWeekStart(date) { - const d = new Date(date); - d.setDate(d.getDate() - d.getDay()); - return d; -} -function heatmapAddDays(date, days) { - const d = new Date(date); - d.setDate(d.getDate() + days); - return d; -} -function heatmapFormatTokenCount(tokens) { - if (tokens >= 1e9) return `${(tokens / 1e9).toFixed(1)}B`; - if (tokens >= 1e6) return `${(tokens / 1e6).toFixed(1)}M`; - if (tokens >= 1e3) return `${(tokens / 1e3).toFixed(1)}K`; - return String(tokens); -} -function heatmapGetIntensityByCount(count) { - if (count === 0) return 0; - if (count <= 2) return count; - if (count <= 4) return 3; - return 4; -} -function heatmapComputeTokenIntensity(grid) { - const nonZero = grid.map((d) => d.totalTokens).filter((t) => t > 0).sort((a, b) => a - b); - if (nonZero.length === 0) { - return () => 0; - } - const p25 = nonZero[Math.floor(nonZero.length * 0.25)]; - const p50 = nonZero[Math.floor(nonZero.length * 0.5)]; - const p75 = nonZero[Math.floor(nonZero.length * 0.75)]; - return (tokens) => { - if (tokens === 0) return 0; - if (tokens <= p25) return 1; - if (tokens <= p50) return 2; - if (tokens <= p75) return 3; - return 4; - }; -} -function heatmapFormatDate(dateStr) { - const d = /* @__PURE__ */ new Date(dateStr + "T00:00:00"); - return d.toLocaleDateString("en-US", { - weekday: "short", - month: "short", - day: "numeric", - year: "numeric" - }); -} -function generateActivityHeatmapSection(activitySessions) { - if (!activitySessions || activitySessions.length === 0) return ""; - const MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - const DAY_LABELS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - const unified = activitySessions.map((s) => ({ - sessionId: s.sessionId, - projectName: s.projectName, - startTime: s.startTime, - durationMinutes: s.durationMinutes, - messageCount: s.messageCount, - summary: s.summary || "", - totalTokens: (s.totalInputTokens || 0) + (s.totalOutputTokens || 0) - })); - const sessionsByDate = /* @__PURE__ */ new Map(); - for (const session of unified) { - const dateKey = heatmapToDateKey(session.startTime); - if (!sessionsByDate.has(dateKey)) { - sessionsByDate.set(dateKey, []); - } - sessionsByDate.get(dateKey).push(session); - } - const dates = unified.map((s) => new Date(s.startTime)).sort((a, b) => a.getTime() - b.getTime()); - const startDate = dates[0]; - const endDate = dates[dates.length - 1]; - const weekStart = heatmapGetWeekStart(startDate); - const weekEnd = heatmapAddDays(endDate, 6 - endDate.getDay()); - const grid = []; - const monthLabels = []; - let currentDate = new Date(weekStart); - let prevMonth = -1; - let column = 0; - while (currentDate <= weekEnd) { - const dateKey = currentDate.toISOString().slice(0, 10); - const sessions = sessionsByDate.get(dateKey) || []; - const totalTokens = sessions.reduce((sum, s) => sum + s.totalTokens, 0); - grid.push({ date: dateKey, count: sessions.length, totalTokens, sessions }); - const dayOfWeek = currentDate.getDay(); - const month = currentDate.getMonth(); - if (dayOfWeek === 0 && month !== prevMonth) { - monthLabels.push({ text: MONTH_NAMES[month], column }); - prevMonth = month; - } - if (dayOfWeek === 6) { - column++; - } - currentDate = heatmapAddDays(currentDate, 1); - } - const totalWeeks = Math.ceil(grid.length / 7); - const hasTokenData = unified.some((s) => s.totalTokens > 0); - const getTokenIntensity = heatmapComputeTokenIntensity(grid); - const cellSize = 16; - const gap = 3; - const totalSessions = unified.length; - const activeDays = sessionsByDate.size; - const totalTokensAll = unified.reduce((sum, s) => sum + s.totalTokens, 0); - const projectCounts = /* @__PURE__ */ new Map(); - for (const session of unified) { - projectCounts.set(session.projectName, (projectCounts.get(session.projectName) || 0) + 1); - } - let mostActiveProject = ""; - let maxCount = 0; - for (const [project, count] of projectCounts) { - if (count > maxCount) { - mostActiveProject = project; - maxCount = count; - } - } - const statCards = ` -
-
- ${totalSessions} - Sessions -
-
- ${activeDays} - Active Days -
- ${totalTokensAll > 0 ? ` -
- ${heatmapFormatTokenCount(totalTokensAll)} - Total Tokens -
- ` : ""} - ${mostActiveProject ? ` -
- ${escapeHtml(mostActiveProject)} - Top Project -
- ` : ""} -
- `; - const monthLabelsHtml = monthLabels.map( - (m) => `${m.text}` - ).join(""); - const dayLabelsHtml = DAY_LABELS.map( - (label, i) => `${label}` - ).join(""); - const cellsHtml = grid.map((day) => { - const intensity = hasTokenData ? getTokenIntensity(day.totalTokens) : heatmapGetIntensityByCount(day.count); - const title = day.count > 0 ? `${heatmapFormatDate(day.date)}: ${day.totalTokens > 0 ? `${heatmapFormatTokenCount(day.totalTokens)} tokens, ` : ""}${day.count} session${day.count !== 1 ? "s" : ""}` : `${heatmapFormatDate(day.date)}: No sessions`; - return `
0 ? ' onclick="showHeatmapDetail(this.dataset.date)"' : ""}>
`; - }).join(""); - const legendHtml = ` -
- Less -
- ${[0, 1, 2, 3, 4].map((level) => `
`).join("")} -
- More -
- `; - const sessionDataByDate = {}; - for (const day of grid) { - if (day.sessions.length > 0) { - sessionDataByDate[day.date] = day.sessions; - } - } - return ` -
-
- \u{1F4CA} -
-

Monthly Vibe

-

${totalSessions} sessions · ${activeDays} active days

-
-
-
- ${statCards} -
-
${monthLabelsHtml}
-
-
${dayLabelsHtml}
-
- ${cellsHtml} -
-
- ${legendHtml} -
- -
-
- - `; -} -function generateWeeklyInsightsSection(weeklyInsights) { - if (!weeklyInsights) return ""; - const stats = weeklyInsights.stats; - const highlights = weeklyInsights.highlights ?? []; - const projects = weeklyInsights.projects ?? []; - const topSessions = weeklyInsights.topProjectSessions ?? []; - return ` -
-

\u{1F4C6} Weekly Insights

- ${stats ? ` -
-
${stats.totalSessions ?? 0}
Sessions
-
${Math.round(stats.totalMinutes ?? 0)}
Minutes
-
${Math.round((stats.totalTokens ?? 0) / 1e3)}k
Tokens
-
${stats.activeDays ?? 0}
Active Days
-
- ` : ""} - ${weeklyInsights.narrative ? `

${escapeHtml(weeklyInsights.narrative)}

` : ""} - ${projects.length > 0 ? ` -
-

Project Breakdown

-
    - ${projects.map((project) => `
  • ${escapeHtml(project.projectName)}: ${project.sessionCount} sessions, ${project.percentage}%
  • `).join("")} -
-
- ` : ""} - ${topSessions.length > 0 ? ` -
-

Top Sessions

-
    - ${topSessions.map((session) => `
  • ${escapeHtml(session.date)} \xB7 ${Math.round(session.durationMinutes)} min \xB7 ${escapeHtml(session.summary)}
  • `).join("")} -
-
- ` : ""} - ${highlights.length > 0 ? ` -
-

Highlights

-
    - ${highlights.map((item) => `
  • ${escapeHtml(item)}
  • `).join("")} -
-
- ` : ""} -
- `; -} -function generateKnowledgeResourcesSection(knowledgeResources) { - if (!knowledgeResources?.length) return ""; - return ` -
-

\u{1F4DA} Knowledge Resources

-
- ${knowledgeResources.map((group) => ` -
-

${escapeHtml(group.dimensionDisplayName ?? "Recommended Resources")}

- ${(group.professionalInsights?.length ?? 0) > 0 ? ` -

Professional Insights

-
    - ${group.professionalInsights.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? "Insight")}${item.keyTakeaway ? `: ${escapeHtml(item.keyTakeaway)}` : ""}
  • `).join("")} -
- ` : ""} - ${(group.knowledgeItems?.length ?? 0) > 0 ? ` -

Suggested Reading

-
    - ${group.knowledgeItems.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? "Resource")}${item.summary ? `: ${escapeHtml(item.summary)}` : ""}
  • `).join("")} -
- ` : ""} -
- `).join("")} -
-
- `; -} -function generateBaseCss() { - return ` - /* \u2500\u2500 Notebook Sketch Design System \u2500\u2500 */ - - :root { - --bg-paper: #FFFFFF; - --bg-paper-warm: #FFFEF8; - --bg-grid-color: #E8EDF5; - --bg-grid-size: 20px; - --ink-primary: #1A1A2E; - --ink-secondary: #4A4A5A; - --ink-muted: #8A8A9A; - --sketch-cyan: #00BCD4; - --sketch-green: #4ADE80; - --sketch-pink: #FF6B9D; - --sketch-blue: #3B82F6; - --sketch-purple: #9C7CF4; - --sketch-yellow: #FFD93D; - --sketch-orange: #FB923C; - --sketch-red: #EF4444; - } - - * { margin: 0; padding: 0; box-sizing: border-box; } - - body { - font-family: 'Fira Code', monospace; - background: var(--bg-paper-warm); - background-image: - linear-gradient(var(--bg-grid-color) 1px, transparent 1px), - linear-gradient(90deg, var(--bg-grid-color) 1px, transparent 1px); - background-size: var(--bg-grid-size) var(--bg-grid-size); - color: var(--ink-primary); - line-height: 1.6; - padding: 40px 20px; - } - - .container { - max-width: 900px; - margin: 0 auto; - } - - /* \u2500\u2500 Header \u2500\u2500 */ - .header { - text-align: center; - margin-bottom: 48px; - padding-bottom: 24px; - border-bottom: 2px solid var(--ink-primary); - } - .header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; } - .header .subtitle { color: var(--ink-secondary); font-size: 13px; } - - /* \u2500\u2500 Identity Section \u2500\u2500 */ - .identity { - display: flex; - gap: 32px; - align-items: center; - margin-bottom: 48px; - padding: 24px; - background: var(--bg-paper); - border: 2px solid var(--ink-primary); - border-radius: 8px; - } - .identity .type-info { flex: 1; } - .identity .type-emoji { font-size: 48px; } - .identity .type-name { font-size: 22px; font-weight: 700; margin-top: 8px; } - .identity .type-detail { color: var(--ink-secondary); font-size: 13px; margin-top: 4px; } - - /* \u2500\u2500 Scores Grid \u2500\u2500 */ - .scores-section { - display: flex; - gap: 32px; - margin-bottom: 48px; - align-items: flex-start; - } - .radar-container { flex-shrink: 0; } - .distribution-container { flex: 1; } - - /* \u2500\u2500 Cards \u2500\u2500 */ - .card { - background: var(--bg-paper); - border: 1px solid var(--bg-grid-color); - border-radius: 8px; - padding: 16px; - margin-bottom: 12px; - } - .card h4 { font-size: 14px; margin-bottom: 8px; } - .card p { font-size: 13px; color: var(--ink-secondary); line-height: 1.5; } - .card-grid { display: grid; grid-template-columns: 1fr; gap: 12px; } - - .strength-card { border-left: 3px solid var(--sketch-green); } - .growth-card { border-left: 3px solid var(--sketch-orange); } - .focus-card { border-left: 3px solid var(--sketch-cyan); } - - .severity-badge { - display: inline-block; - font-size: 11px; - font-weight: 600; - padding: 2px 8px; - border-radius: 4px; - margin-bottom: 8px; - text-transform: uppercase; - } - .severity-low { background: rgba(74,222,128,0.15); color: #16a34a; } - .severity-medium { background: rgba(251,146,60,0.15); color: #ea580c; } - .severity-high { background: rgba(239,68,68,0.15); color: #dc2626; } - - .recommendation { - margin-top: 8px; - padding: 8px 12px; - background: rgba(0,188,212,0.08); - border-radius: 4px; - font-size: 12px; - color: var(--ink-secondary); - } - - details { margin-top: 8px; } - details summary { - cursor: pointer; - font-size: 12px; - color: var(--ink-muted); - } - details ul { margin-top: 4px; padding-left: 20px; font-size: 12px; color: var(--ink-secondary); } - details li { margin-bottom: 4px; } - details code { font-size: 11px; background: #f0f0f5; padding: 1px 4px; border-radius: 2px; } - - /* \u2500\u2500 Domain Sections \u2500\u2500 */ - .domain-section { - margin-bottom: 48px; - padding-bottom: 24px; - border-bottom: 1px solid var(--bg-grid-color); - } - .domain-section h2 { - font-size: 20px; - margin-bottom: 16px; - display: flex; - align-items: center; - gap: 8px; - } - .domain-section h3 { - font-size: 14px; - font-weight: 600; - color: var(--ink-secondary); - margin: 16px 0 8px; - text-transform: uppercase; - letter-spacing: 0.5px; - } - .score { - font-size: 14px; - font-weight: 400; - color: var(--sketch-cyan); - margin-left: auto; - } - - /* \u2500\u2500 Actions Grid \u2500\u2500 */ - .actions-grid { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - gap: 8px; - margin-top: 12px; - } - .action { - padding: 8px; - border-radius: 4px; - font-size: 12px; - color: var(--ink-secondary); - } - .action.start { background: rgba(74,222,128,0.1); } - .action.stop { background: rgba(239,68,68,0.1); } - .action.continue { background: rgba(59,130,246,0.1); } - .action strong { display: block; font-size: 11px; color: var(--ink-primary); margin-bottom: 4px; } - - /* \u2500\u2500 Metrics Bar \u2500\u2500 */ - .metrics-bar { - display: flex; - gap: 24px; - flex-wrap: wrap; - margin-bottom: 32px; - padding: 16px; - background: var(--bg-paper); - border: 1px solid var(--bg-grid-color); - border-radius: 8px; - } - .metric { - text-align: center; - } - .metric .value { font-size: 24px; font-weight: 700; color: var(--sketch-cyan); } - .metric .label { font-size: 11px; color: var(--ink-muted); } - - /* \u2500\u2500 Navigation Dots \u2500\u2500 */ - .nav-dots { - position: fixed; - right: 20px; - top: 50%; - transform: translateY(-50%); - display: flex; - flex-direction: column; - gap: 12px; - z-index: 100; - } - .nav-dot { - display: block; - text-decoration: none; - } - .nav-dot .dot { - display: block; - width: 8px; - height: 8px; - border-radius: 50%; - background: var(--bg-grid-color); - border: 1px solid var(--ink-muted); - transition: all 0.2s; - } - .nav-dot:hover .dot, - .nav-dot.active .dot { - background: var(--sketch-cyan); - border-color: var(--sketch-cyan); - transform: scale(1.5); - } - - /* \u2500\u2500 Footer \u2500\u2500 */ - .footer { - text-align: center; - padding: 24px; - color: var(--ink-muted); - font-size: 12px; - } - - @media (max-width: 640px) { - .identity { flex-direction: column; text-align: center; } - .scores-section { flex-direction: column; } - .actions-grid { grid-template-columns: 1fr; } - } - `; -} -function renderNavDotsHtml(dots) { - return dots.map((d) => ``).join(""); -} -function renderIdentitySection(typeResult, fallbackMessage) { - if (typeResult) { - return ` -
${typeResult.matrixEmoji}
-
-
${escapeHtml(typeResult.matrixName)}
-
${escapeHtml(typeResult.primaryType)} / ${escapeHtml(typeResult.controlLevel)} (control: ${typeResult.controlScore})
-
- `; - } - return ` -
-
Type Not Classified
-
${escapeHtml(fallbackMessage)}
-
- `; -} -function renderMetricsBar(metrics) { - return ` -
-
-
${metrics.totalSessions}
-
Sessions
-
-
-
${metrics.totalDeveloperUtterances}
-
Utterances
-
-
-
${Math.round(metrics.avgMessagesPerSession)}
-
Avg Messages/Session
-
-
-
${Math.round(metrics.questionRatio * 100)}%
-
Questions
-
-
-
${Math.round(metrics.codeBlockRatio * 100)}%
-
Code Blocks
-
-
- `; -} -function renderScrollSpyScript() { - return ` - `; -} -function generateCanonicalReportHtml(run) { - const evaluation = run.evaluation; - const personalitySummary = typeof evaluation.personalitySummary === "string" ? evaluation.personalitySummary : ""; - const promptPatterns = Array.isArray(evaluation.promptPatterns) ? evaluation.promptPatterns : []; - const projectSummaries = Array.isArray(evaluation.projectSummaries) ? evaluation.projectSummaries : []; - const weeklyInsights = evaluation.weeklyInsights; - const focusAreas = evaluation.topFocusAreas?.areas; - const knowledgeResources = Array.isArray(evaluation.knowledgeResources) ? evaluation.knowledgeResources : []; - const legacyContent = focusAreas ? { - topFocusAreas: focusAreas.map((area) => ({ - title: area.title, - narrative: area.narrative, - description: area.narrative, - actions: area.actions - })) - } : void 0; - const typeResult = run.typeResult; - const radarSvg = generateRadarSvg(buildRadarScores(run.deterministicScores), RADAR_LABELS); - const distributionBar = typeResult ? generateTypeDistributionBar(typeResult.distribution) : '

Type classification not yet performed.

'; - const domainSections = run.domainResults.map(generateDomainSection).join("\n"); - const focusAreasSection = generateFocusAreas(legacyContent); - const personalitySummarySection = generatePersonalitySummary(personalitySummary); - const promptPatternsSection = generatePromptPatternsSection(promptPatterns); - const projectSummariesSection = generateProjectSummariesSection(projectSummaries); - const weeklyInsightsSection = generateWeeklyInsightsSection(weeklyInsights); - const knowledgeResourcesSection = generateKnowledgeResourcesSection(knowledgeResources); - const activityHeatmapSection = generateActivityHeatmapSection(run.activitySessions); - const navDots = [ - { id: "identity", label: "Identity" }, - { id: "scores", label: "Scores" }, - ...(run.activitySessions?.length ?? 0) > 0 ? [{ id: "activity-heatmap", label: "Activity" }] : [], - ...personalitySummary ? [{ id: "personality-summary", label: "Summary" }] : [], - ...promptPatterns.length > 0 ? [{ id: "prompt-patterns", label: "Patterns" }] : [], - ...projectSummaries.length > 0 ? [{ id: "project-summaries", label: "Projects" }] : [], - ...weeklyInsights ? [{ id: "weekly-insights", label: "Week" }] : [], - ...knowledgeResources.length > 0 ? [{ id: "knowledge-resources", label: "Resources" }] : [], - ...run.domainResults.map((d) => ({ - id: `domain-${d.domain}`, - label: DOMAIN_LABELS[d.domain]?.label ?? d.domain - })), - ...legacyContent?.topFocusAreas?.length ? [{ id: "focus-areas", label: "Focus" }] : [] - ]; - return ` - - - - - BetterPrompt Analysis Report - - - - - - -
-
-

BetterPrompt Analysis

-

Generated ${new Date(run.analyzedAt).toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" })}

-
- -
- ${renderIdentitySection(typeResult, "Run type classification before generating the final report.")} -
- - ${renderMetricsBar(run.phase1Output.sessionMetrics)} - -
-
${radarSvg}
-
-

Type Distribution

- ${distributionBar} -
-
- - ${activityHeatmapSection} - ${personalitySummarySection} - ${promptPatternsSection} - ${projectSummariesSection} - ${weeklyInsightsSection} - ${knowledgeResourcesSection} - ${domainSections} - ${focusAreasSection} - -
- Generated by BetterPrompt Plugin v0.2.0 - local-first AI collaboration analysis -
-
- ${renderScrollSpyScript()} - -`; -} - -// mcp/tools/generate-report.ts -var definition13 = { - name: "generate_report", - description: "Generate a standalone HTML report from all completed domain analyses and serve it on a local HTTP server. Returns the URL to view the report. Call this after all domain analyses and type classification are complete. Pass allowIncomplete=true to override required-stage gating." -}; -var activeServer = null; -var shutdownTimer = null; -var SHUTDOWN_TIMEOUT_MS = 30 * 60 * 1e3; -var DOMAIN_STAGE_NAMES2 = /* @__PURE__ */ new Set([ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery" -]); -function resetShutdownTimer() { - if (shutdownTimer) clearTimeout(shutdownTimer); - shutdownTimer = setTimeout(() => { - if (activeServer) { - activeServer.close(); - activeServer = null; - } - }, SHUTDOWN_TIMEOUT_MS); -} -function closeActiveServer() { - return new Promise((resolve) => { - if (!activeServer) { - resolve(); - return; - } - activeServer.close(() => { - activeServer = null; - resolve(); - }); - }); -} -function hasFallbackArtifact(runId, stage) { - if (DOMAIN_STAGE_NAMES2.has(stage)) { - return getDomainResult(runId, stage) !== null; - } - return getStageOutput(runId, stage) !== null; -} -function getRequiredStageGateIssues(runId) { - const statuses = getStageStatuses(runId); - const statusLookup = new Map(statuses.map((status) => [status.stage, status])); - const issues = []; - for (const stage of REQUIRED_STAGE_NAMES) { - const status = statusLookup.get(stage); - if (status) { - if (status.status !== "validated") { - issues.push({ - stage, - required: status.required, - status: status.status, - attemptCount: status.attemptCount, - lastError: status.lastError, - updatedAt: status.updatedAt - }); - } - continue; - } - if (!hasFallbackArtifact(runId, stage)) { - issues.push({ - stage, - required: true, - status: "missing", - attemptCount: 0, - lastError: null, - updatedAt: null - }); - } - } - return issues; -} -async function execute10(args) { - const port = args.port ?? 3456; - const openBrowser = args.openBrowser ?? true; - const allowIncomplete = args.allowIncomplete ?? false; - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No analysis results found. Run extract_data and domain analyses first." - }); - } - const gateIssues = getRequiredStageGateIssues(runId); - if (gateIssues.length > 0 && !allowIncomplete) { - return JSON.stringify({ - status: "blocked", - message: "Required analysis stages are incomplete. Re-run the missing stages or pass allowIncomplete=true to override.", - issues: gateIssues - }); - } - const run = assembleCanonicalRun(runId); - if (!run) { - return JSON.stringify({ - status: "error", - message: "No analysis results found. Run extract_data and domain analyses first." - }); - } - const html = generateCanonicalReportHtml(run); - const reportsDir = join10(getPluginDataDir(), "reports"); - await mkdir3(reportsDir, { recursive: true }); - const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19); - const reportPath = join10(reportsDir, `report-${timestamp}.html`); - await writeFile3(reportPath, html, "utf-8"); - const latestPath = join10(reportsDir, "latest.html"); - await writeFile3(latestPath, html, "utf-8"); - await closeActiveServer(); - const url = await new Promise((resolve, reject) => { - const server2 = createServer((req, res) => { - if (req.url !== "/" && req.url !== "") { - res.writeHead(404, { "Content-Type": "text/plain" }); - res.end("Not Found"); - return; - } - resetShutdownTimer(); - res.writeHead(200, { - "Content-Type": "text/html; charset=utf-8", - "Cache-Control": "no-cache" - }); - try { - const content = readFileSync2(latestPath, "utf-8"); - res.end(content); - } catch { - res.end(html); - } - }); - server2.on("error", (err) => { - if (err.code === "EADDRINUSE") { - resolve(`file://${reportPath}`); - } else { - reject(err); - } - }); - server2.listen(port, () => { - activeServer = server2; - resetShutdownTimer(); - resolve(`http://localhost:${port}`); - }); - }); - if (openBrowser && url.startsWith("http")) { - try { - let cmd; - if (process.platform === "darwin") { - cmd = `open "${url}"`; - } else if (process.platform === "win32") { - cmd = `start "${url}"`; - } else { - cmd = `xdg-open "${url}"`; - } - exec(cmd); - } catch { - } - } - markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); - return JSON.stringify({ - status: "ok", - url, - reportPath, - latestPath, - domainCount: run.domainResults.length, - type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : "Not classified", - ...gateIssues.length > 0 ? { warning: "Report generated with incomplete required stages because allowIncomplete=true." } : {}, - message: `Report generated and available at ${url}. Saved to ${reportPath}.` - }); -} - -// mcp/tools/sync-to-team.ts -var definition14 = { - name: "sync_to_team", - description: "Sync local analysis results to a team BetterPrompt server. Uses the BetterPrompt plugin server URL setting unless serverUrl is passed explicitly. The server receives pre-analyzed results (no LLM work needed server-side). Use this to share your analysis with your team dashboard." -}; -async function execute11(args) { - const serverUrl = (args.serverUrl ?? getConfig().serverUrl)?.replace(/\/$/, ""); - if (!serverUrl) { - return JSON.stringify({ - status: "not_configured", - message: "No team server URL is available. Set the BetterPrompt plugin serverUrl setting or pass serverUrl to enable team sync." - }); - } - const run = assembleCanonicalRun(); - if (!run) { - return JSON.stringify({ - status: "no_data", - message: "No analysis results to sync. Run a full analysis first." - }); - } - try { - const response = await fetch(`${serverUrl}/api/analysis/sync`, { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - run, - syncedAt: (/* @__PURE__ */ new Date()).toISOString() - }), - signal: AbortSignal.timeout(15e3) - }); - if (!response.ok) { - const errorText = await response.text().catch(() => "Unknown error"); - return JSON.stringify({ - status: "sync_failed", - httpStatus: response.status, - message: `Server returned ${response.status}: ${errorText}` - }); - } - const result = await response.json().catch(() => ({})); - markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); - return JSON.stringify({ - status: "ok", - serverUrl, - message: `Successfully synced analysis to ${serverUrl}.`, - ...result && typeof result === "object" ? result : {} - }); - } catch (error2) { - return JSON.stringify({ - status: "error", - message: `Failed to connect to ${serverUrl}: ${error2 instanceof Error ? error2.message : "Unknown error"}` - }); - } -} - -// mcp/tools/save-stage-output.ts -var definition15 = { - name: "save_stage_output", - description: "Save output from a pipeline stage. Called after completing a stage (sessionSummaries, projectSummaries, weeklyInsights, typeClassification, evidenceVerification, contentWriter, translator, extractAiPartnership, extractSessionCraft, extractToolMastery, extractSkillResilience, extractSessionMastery). Input must include stage name and structured data matching the stage schema." -}; -var StageOutputInputSchema = external_exports.object({ - stage: external_exports.enum(STAGE_NAMES), - data: external_exports.record(external_exports.string(), external_exports.unknown()) -}); -function extractStageName(args) { - return typeof args.stage === "string" ? args.stage : null; -} -async function execute12(args) { - const runId = getCurrentRunId(); - const stageName = extractStageName(args); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first to start an analysis." - }); - } - const parsed = StageOutputInputSchema.safeParse(args); - if (!parsed.success) { - if (stageName) { - recordStageStatus(runId, stageName, { - status: "failed", - lastError: "Invalid stage output format." - }); - } - return JSON.stringify({ - status: "validation_error", - message: "Invalid stage output format.", - errors: parsed.error.issues.map((i) => ({ - path: i.path.join("."), - message: i.message - })) - }); - } - const { stage, data } = parsed.data; - const stageSchema = STAGE_SCHEMAS[stage]; - if (stageSchema) { - const stageValidation = stageSchema.safeParse(data); - if (!stageValidation.success) { - recordStageStatus(runId, stage, { - status: "failed", - lastError: `Data does not match ${stage} schema.` - }); - return JSON.stringify({ - status: "validation_error", - message: `Data does not match ${stage} schema.`, - errors: stageValidation.error.issues.map((i) => ({ - path: i.path.join("."), - message: i.message - })) - }); - } - } - saveStageOutput(runId, stage, data); - recordStageStatus(runId, stage, { - status: "validated" - }); - return JSON.stringify({ - status: "ok", - stage, - runId, - message: `Saved ${stage} output to run #${runId}.` - }); -} - -// mcp/tools/get-stage-output.ts -var definition16 = { - name: "get_stage_output", - description: "Read a previously saved pipeline stage output. Provide a stage name to get that specific output, or omit to get all stages. Available stages: sessionSummaries, projectSummaries, weeklyInsights, typeClassification, evidenceVerification, contentWriter, translator." -}; -async function execute13(args) { - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first." - }); - } - if (args.stage) { - const data = getStageOutput(runId, args.stage); - if (!data) { - return JSON.stringify({ - status: "not_found", - stage: args.stage, - runId, - message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.` - }); - } - return JSON.stringify({ - status: "ok", - stage: args.stage, - runId, - data - }); - } - const all = getAllStageOutputs(runId); - const stages = Object.keys(all); - return JSON.stringify({ - status: "ok", - runId, - stagesAvailable: stages, - data: all - }); -} - -// lib/prompt-context.ts -var PROMPT_CONTEXT_KINDS = [ - "sessionSummaries", - "domainAnalysis", - "projectSummaries", - "weeklyInsights", - "typeClassification", - "evidenceVerification", - "contentWriter", - "translation" -]; -var SKILL_INJECTION_PREFIX2 = "Base directory for this skill:"; -function trimText(text, maxChars) { - if (!text) return ""; - if (text.length <= maxChars) return text; - return `${text.slice(0, maxChars - 1)}\u2026`; -} -function isAnalyzablePromptContextUserMessage(message) { - return message.role === "user" && !message.isMeta && typeof message.sourceToolUseID !== "string" && message.toolUseResult === void 0 && !message.content.trim().startsWith(SKILL_INJECTION_PREFIX2); -} -function trimMessages(messages, maxMessages, maxChars) { - return messages.slice(0, maxMessages).map((message) => ({ - role: message.role, - timestamp: message.timestamp, - content: trimText(message.content, maxChars), - ...Array.isArray(message.toolCalls) && message.toolCalls.length > 0 ? { - toolCalls: message.toolCalls.slice(0, 5).map((toolCall) => ({ - id: toolCall.id, - name: toolCall.name, - ...toolCall.isError ? { isError: true } : {} - })) - } : {}, - ...message.tokenUsage ? { tokenUsage: message.tokenUsage } : {} - })); -} -var MAX_UTTERANCES = 300; -var MAX_INTERACTION_SNAPSHOTS = 200; -var MAX_SESSION_OVERVIEWS = 40; -function buildTrimmedDeveloperUtterances(phase1Output, maxChars) { - return phase1Output.developerUtterances.slice(0, MAX_UTTERANCES).map((utterance) => ({ - id: utterance.id, - text: trimText(utterance.displayText || utterance.text, maxChars), - sessionId: utterance.sessionId, - turnIndex: utterance.turnIndex, - characterCount: utterance.characterCount, - wordCount: utterance.wordCount, - hasCodeBlock: utterance.hasCodeBlock, - hasQuestion: utterance.hasQuestion, - isSessionStart: utterance.isSessionStart, - isContinuation: utterance.isContinuation, - precedingAIToolCalls: utterance.precedingAIToolCalls?.slice(0, 8), - precedingAIHadError: utterance.precedingAIHadError, - timestamp: utterance.timestamp - })); -} -function asSessionMessageWithMeta(message) { - return message; -} -function buildSessionOverviews(phase1Output) { - return (phase1Output.sessions ?? []).slice(0, MAX_SESSION_OVERVIEWS).map((session) => { - const messages = session.messages.map(asSessionMessageWithMeta); - const userMessages = messages.filter(isAnalyzablePromptContextUserMessage); - const assistantMessages = messages.filter((message) => message.role === "assistant"); - const firstAssistant = assistantMessages[0]; - const toolSequence = assistantMessages.flatMap((message) => message.toolCalls?.map((toolCall) => toolCall.name) ?? []).filter((toolName, index, all) => all.indexOf(toolName) === index).slice(0, 10); - const peakAssistantInputTokens = assistantMessages.reduce( - (max, message) => Math.max(max, message.tokenUsage?.input ?? 0), - 0 - ); - const peakContextFillPercent = peakAssistantInputTokens > 0 ? Math.round(peakAssistantInputTokens / CONTEXT_WINDOW_SIZE * 1e3) / 10 : void 0; - return { - sessionId: session.sessionId, - projectName: session.projectName ?? "unknown", - startTime: session.startTime, - endTime: session.endTime, - durationSeconds: session.durationSeconds, - stats: { - userMessageCount: userMessages.length, - assistantMessageCount: assistantMessages.length, - toolCallCount: session.stats.toolCallCount, - uniqueToolsUsed: session.stats.uniqueToolsUsed, - totalInputTokens: session.stats.totalInputTokens, - totalOutputTokens: session.stats.totalOutputTokens - }, - firstUserMessage: trimText(userMessages[0]?.content, 220), - firstAssistantPreview: trimText(firstAssistant?.content, 220), - firstAssistantAskedQuestion: Boolean(firstAssistant?.content?.includes("?")), - assistantErrorCount: assistantMessages.reduce( - (count, message) => count + (message.toolCalls?.some((toolCall) => toolCall.isError) ? 1 : 0), - 0 - ), - toolSequence, - peakContextFillPercent - }; - }); -} -function buildInteractionSnapshots(phase1Output, options) { - const { maxUserChars = 260, maxAssistantChars = 220 } = options ?? {}; - const snapshots = (phase1Output.sessions ?? []).flatMap((session) => { - const messages = session.messages.map(asSessionMessageWithMeta); - return messages.flatMap((message, index) => { - if (!isAnalyzablePromptContextUserMessage(message)) { - return []; - } - const precedingAssistant = [...messages.slice(0, index)].reverse().find((candidate) => candidate.role === "assistant"); - return [{ - utteranceId: `${session.sessionId}_${index}`, - sessionId: session.sessionId, - projectName: session.projectName ?? "unknown", - turnIndex: index, - text: trimText(message.content, maxUserChars), - characterCount: message.content.length, - hasQuestion: message.content.includes("?"), - isSessionStart: !messages.slice(0, index).some(isAnalyzablePromptContextUserMessage), - precedingAssistantPreview: trimText(precedingAssistant?.content, maxAssistantChars), - precedingAssistantLength: precedingAssistant?.content?.length ?? 0, - precedingAssistantHadCodeBlock: Boolean(precedingAssistant?.content?.includes("```")), - precedingAIToolCalls: precedingAssistant?.toolCalls?.map((toolCall) => toolCall.name).slice(0, 8), - precedingAIHadError: precedingAssistant?.toolCalls?.some((toolCall) => toolCall.isError) ?? false - }]; - }); - }); - return snapshots.slice(0, MAX_INTERACTION_SNAPSHOTS); -} -function buildUtteranceLookup(phase1Output) { - return Object.fromEntries( - phase1Output.developerUtterances.map((utterance) => [ - utterance.id, - utterance.displayText || utterance.text - ]) - ); -} -function buildTrimmedSessionInput(phase1Output) { - return (phase1Output.sessions ?? []).map((session) => ({ - sessionId: session.sessionId, - projectPath: session.projectPath, - projectName: session.projectName ?? "unknown", - startTime: session.startTime, - endTime: session.endTime, - durationSeconds: session.durationSeconds, - source: session.source, - stats: session.stats, - messages: trimMessages(session.messages, 12, 700) - })); -} -function buildCondensedDomainResults(domainResults, options) { - const { - maxStrengths = 2, - maxGrowthAreas = 2, - maxDescriptionChars = 420, - maxRecommendationChars = 260 - } = options ?? {}; - return domainResults.map((result) => ({ - domain: result.domain, - overallScore: result.overallScore, - confidenceScore: result.confidenceScore, - strengths: result.strengths.slice(0, maxStrengths).map((strength) => ({ - title: strength.title, - description: trimText(strength.description, maxDescriptionChars), - evidenceCount: strength.evidence.length - })), - growthAreas: result.growthAreas.slice(0, maxGrowthAreas).map((growthArea) => ({ - title: growthArea.title, - description: trimText(growthArea.description, maxDescriptionChars), - severity: growthArea.severity, - recommendation: trimText(growthArea.recommendation, maxRecommendationChars), - evidenceCount: growthArea.evidence.length - })), - analyzedAt: result.analyzedAt - })); -} -function buildCondensedContentWriterStageOutputs(stageOutputs) { - return { - typeClassification: stageOutputs.typeClassification ? { - collaborationMaturity: stageOutputs.typeClassification.collaborationMaturity, - reasoning: stageOutputs.typeClassification.reasoning.slice(0, 1).map((paragraph) => trimText(paragraph, 500)), - personalityNarrative: stageOutputs.typeClassification.personalityNarrative.slice(0, 1).map((paragraph) => trimText(paragraph, 500)) - } : void 0, - weeklyInsights: stageOutputs.weeklyInsights ? { - stats: stageOutputs.weeklyInsights.stats, - projects: stageOutputs.weeklyInsights.projects, - topSessions: stageOutputs.weeklyInsights.topSessions, - narrative: trimText(stageOutputs.weeklyInsights.narrative, 600), - highlights: stageOutputs.weeklyInsights.highlights.slice(0, 5).map((item) => trimText(item, 180)) - } : void 0, - projectSummaries: stageOutputs.projectSummaries, - evidenceVerification: stageOutputs.evidenceVerification ? { - threshold: stageOutputs.evidenceVerification.threshold, - domainStats: stageOutputs.evidenceVerification.domainStats, - verifiedEvidenceCount: stageOutputs.evidenceVerification.verifiedResults.length - } : void 0 - }; -} -function buildThinkingQualityContext(phase1Output) { - return { - developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 280), - sessionMetrics: phase1Output.sessionMetrics, - sessionOverviews: buildSessionOverviews(phase1Output), - interactionSnapshots: buildInteractionSnapshots(phase1Output, { - maxUserChars: 260, - maxAssistantChars: 200 - }), - ...phase1Output.aiInsightBlocks?.length ? { - aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 20).map((block) => ({ - sessionId: block.sessionId, - turnIndex: block.turnIndex, - content: trimText(block.content, 180), - triggeringUtteranceId: block.triggeringUtteranceId - })) - } : {} - }; -} -function buildCommunicationContext(phase1Output) { - return { - developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260), - sessionMetrics: phase1Output.sessionMetrics, - sessionOverviews: buildSessionOverviews(phase1Output), - interactionSnapshots: buildInteractionSnapshots(phase1Output, { - maxUserChars: 220, - maxAssistantChars: 160 - }) - }; -} -function buildLearningContext(phase1Output) { - return { - sessionMetrics: phase1Output.sessionMetrics, - developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260), - sessionOverviews: buildSessionOverviews(phase1Output), - interactionSnapshots: buildInteractionSnapshots(phase1Output, { - maxUserChars: 240, - maxAssistantChars: 200 - }), - ...phase1Output.aiInsightBlocks?.length ? { - aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({ - sessionId: block.sessionId, - turnIndex: block.turnIndex, - content: trimText(block.content, 200), - triggeringUtteranceId: block.triggeringUtteranceId - })) - } : {} - }; -} -function buildEfficiencyContext(phase1Output) { - return { - sessionMetrics: phase1Output.sessionMetrics, - activitySessions: phase1Output.activitySessions ?? [], - sessionOverviews: buildSessionOverviews(phase1Output), - interactionSnapshots: buildInteractionSnapshots(phase1Output, { - maxUserChars: 220, - maxAssistantChars: 160 - }), - developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 240) - }; -} -function buildSessionMasteryContext(phase1Output) { - return { - sessionMetrics: phase1Output.sessionMetrics, - activitySessions: phase1Output.activitySessions ?? [], - sessionOverviews: buildSessionOverviews(phase1Output), - interactionSnapshots: buildInteractionSnapshots(phase1Output, { - maxUserChars: 200, - maxAssistantChars: 160 - }) - }; -} -function buildDomainAnalysisContext(domain, phase1Output, deterministicScores) { - const base = { - domain, - deterministicScores, - dateRange: phase1Output.sessionMetrics.dateRange - }; - switch (domain) { - case "aiPartnership": - return { ...base, phase1: { - ...buildThinkingQualityContext(phase1Output), - activitySessions: phase1Output.activitySessions ?? [] - } }; - case "sessionCraft": - return { ...base, phase1: { - ...buildEfficiencyContext(phase1Output), - ...phase1Output.aiInsightBlocks?.length ? { - aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({ - sessionId: block.sessionId, - turnIndex: block.turnIndex, - content: trimText(block.content, 200), - triggeringUtteranceId: block.triggeringUtteranceId - })) - } : {} - } }; - case "toolMastery": - return { ...base, phase1: buildCommunicationContext(phase1Output) }; - case "skillResilience": - return { ...base, phase1: buildLearningContext(phase1Output) }; - case "sessionMastery": - return { ...base, phase1: buildSessionMasteryContext(phase1Output) }; - } -} -function buildPromptContext(input) { - const { - kind, - phase1Output, - deterministicScores, - typeResult, - domainResults, - stageOutputs, - domain - } = input; - const base = { - kind, - availableDomains: domainResults.map((result) => result.domain), - availableStages: Object.keys(stageOutputs).filter( - (key) => stageOutputs[key] !== void 0 - ) - }; - switch (kind) { - case "sessionSummaries": - return { - ...base, - phase1: { - sessionMetrics: phase1Output.sessionMetrics, - sessions: buildTrimmedSessionInput(phase1Output), - activitySessions: phase1Output.activitySessions ?? [] - } - }; - case "domainAnalysis": - if (!domain) { - throw new Error("Domain is required when kind=domainAnalysis."); - } - return { - ...base, - ...buildDomainAnalysisContext(domain, phase1Output, deterministicScores) - }; - case "projectSummaries": - return { - ...base, - activitySessions: phase1Output.activitySessions ?? [], - sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] } - }; - case "weeklyInsights": - return { - ...base, - activitySessions: phase1Output.activitySessions ?? [], - sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] } - }; - case "typeClassification": - return { - ...base, - deterministicScores, - deterministicType: typeResult, - sessionMetrics: phase1Output.sessionMetrics, - domainResults: buildCondensedDomainResults(domainResults, { - maxStrengths: 2, - maxGrowthAreas: 2, - maxDescriptionChars: 420, - maxRecommendationChars: 260 - }) - }; - case "evidenceVerification": - return { - ...base, - utteranceLookup: buildUtteranceLookup(phase1Output), - domainResults - }; - case "contentWriter": - return { - ...base, - deterministicType: typeResult, - domainResults: buildCondensedDomainResults(domainResults, { - maxStrengths: 2, - maxGrowthAreas: 2, - maxDescriptionChars: 520, - maxRecommendationChars: 320 - }), - stageOutputs: buildCondensedContentWriterStageOutputs(stageOutputs) - }; - case "translation": - return { - ...base, - languageSample: phase1Output.developerUtterances.slice(-50).map((utterance) => utterance.displayText || utterance.text), - deterministicType: typeResult, - domainResults, - stageOutputs - }; - } -} - -// mcp/tools/get-prompt-context.ts -var definition17 = { - name: "get_prompt_context", - description: "Read a stage- or domain-specific prompt payload from the current analysis run. Use this instead of reading ~/.betterprompt/phase1-output.json directly. Kinds: sessionSummaries, domainAnalysis, projectSummaries, weeklyInsights, typeClassification, evidenceVerification, contentWriter, translation." -}; -var GetPromptContextInputSchema = external_exports.object({ - kind: external_exports.enum(PROMPT_CONTEXT_KINDS), - domain: external_exports.enum([ - "aiPartnership", - "sessionCraft", - "toolMastery", - "skillResilience", - "sessionMastery" - ]).optional() -}); -async function execute14(args) { - const parsed = GetPromptContextInputSchema.safeParse(args); - if (!parsed.success) { - return JSON.stringify({ - status: "validation_error", - message: "Invalid prompt-context request.", - errors: parsed.error.issues.map((issue) => ({ - path: issue.path.join("."), - message: issue.message - })) - }); - } - const runId = getCurrentRunId(); - if (!runId) { - return JSON.stringify({ - status: "error", - message: "No active analysis run. Call extract_data first." - }); - } - const run = getAnalysisRun(runId); - if (!run?.phase1Output) { - return JSON.stringify({ - status: "not_found", - runId, - message: `Run #${runId} has no Phase 1 output.` - }); - } - try { - const data = buildPromptContext({ - kind: parsed.data.kind, - domain: parsed.data.domain, - phase1Output: run.phase1Output, - deterministicScores: run.scores, - typeResult: run.typeResult, - domainResults: getDomainResults(runId), - stageOutputs: getAllStageOutputs(runId) - }); - const result = JSON.stringify({ - status: "ok", - runId, - kind: parsed.data.kind, - ...parsed.data.domain ? { domain: parsed.data.domain } : {}, - data - }); - const label = `${parsed.data.kind}${parsed.data.domain ? `:${parsed.data.domain}` : ""}`; - debug("prompt-context", `${label} payload`, { - bytes: result.length, - estimatedTokens: Math.round(result.length / 4) - }); - return result; - } catch (error2) { - return JSON.stringify({ - status: "error", - runId, - message: error2 instanceof Error ? error2.message : "Failed to build prompt context." - }); - } -} - -// mcp/server.ts -var resolvedUserId = null; -async function getUserId() { - if (resolvedUserId) return resolvedUserId; - const user = await verifyAuth(); - if (!user) { - throw new Error( - "Could not reach the BetterPrompt server. Check the plugin serverUrl setting and confirm the dashboard server is running." - ); - } - resolvedUserId = user.id; - return resolvedUserId; -} -var server = new McpServer({ - name: "betterprompt", - version: "0.2.0" -}); -function wrapToolExecution(toolName, fn) { - return async (args) => { - const start = Date.now(); - const argRecord = args; - touchAnalysisHeartbeat(); - debug("tool", `${toolName} called`, Object.keys(argRecord).length > 0 ? argRecord : void 0); - try { - const result = await fn(args); - touchAnalysisHeartbeat(); - debug("tool", `${toolName} completed`, { durationMs: Date.now() - start }); - return { content: [{ type: "text", text: result }] }; - } catch (err) { - touchAnalysisHeartbeat(); - const errorMsg = err instanceof Error ? err.message : "Unknown error"; - error("tool", `${toolName} failed`, { durationMs: Date.now() - start, error: errorMsg }); - return { - content: [{ type: "text", text: JSON.stringify({ error: errorMsg }) }], - isError: true - }; - } - }; -} -server.tool(definition4.name, definition4.description, { - includeProjects: external_exports.array(external_exports.string()).optional().describe("Filter results to only these project names") -}, wrapToolExecution(definition4.name, execute)); -server.tool(definition5.name, definition5.description, { - maxSessions: external_exports.number().optional().describe("Maximum number of recent sessions to analyze (default: 50)"), - includeProjects: external_exports.array(external_exports.string()).optional().describe("Filter to only these project names before applying maxSessions limit") -}, wrapToolExecution(definition5.name, execute2)); -server.tool( - definition6.name, - definition6.description, - DomainResultInputSchema.shape, - wrapToolExecution(definition6.name, execute3) -); -server.tool( - definition7.name, - definition7.description, - GetDomainResultsInputSchema.shape, - wrapToolExecution(definition7.name, execute4) -); -server.tool( - definition8.name, - definition8.description, - {}, - wrapToolExecution(definition8.name, () => execute5()) -); -server.tool( - definition9.name, - definition9.description, - {}, - wrapToolExecution(definition9.name, () => execute6()) -); -server.tool( - definition11.name, - definition11.description, - {}, - wrapToolExecution(definition11.name, () => execute8({})) -); -server.tool( - definition12.name, - definition12.description, - VerifyEvidenceInputSchema.shape, - wrapToolExecution(definition12.name, execute9) -); -server.tool(definition13.name, definition13.description, { - port: external_exports.number().optional().describe("Port for the report server (default: 3456)"), - openBrowser: external_exports.boolean().optional().describe("Auto-open report in browser (default: true)"), - allowIncomplete: external_exports.boolean().optional().describe("Override required-stage gating and generate a report anyway") -}, wrapToolExecution(definition13.name, execute10)); -server.tool(definition14.name, definition14.description, { - serverUrl: external_exports.string().optional().describe("Override the configured BetterPrompt server URL for this sync call") -}, wrapToolExecution(definition14.name, execute11)); -server.tool( - definition15.name, - definition15.description, - StageOutputInputSchema.shape, - wrapToolExecution(definition15.name, execute12) -); -server.tool(definition16.name, definition16.description, { - stage: external_exports.string().optional().describe("Stage name to retrieve (omit for all stages)") -}, wrapToolExecution(definition16.name, execute13)); -server.tool( - definition17.name, - definition17.description, - GetPromptContextInputSchema.shape, - wrapToolExecution(definition17.name, execute14) -); -server.tool( - definition10.name, - definition10.description, - SaveUserPrefsInputSchema.shape, - wrapToolExecution(definition10.name, execute7) -); -server.tool( - definition.name, - definition.description, - {}, - wrapToolExecution(definition.name, async () => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatResult(summary); - }) -); -server.tool(definition2.name, definition2.description, { - domain: external_exports.enum(["aiPartnership", "sessionCraft", "toolMastery", "skillResilience", "sessionMastery"]).optional().describe("Filter by domain key") -}, wrapToolExecution(definition2.name, async (args) => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatResult2(summary, args); -})); -server.tool(definition3.name, definition3.description, { - category: external_exports.enum(["strengths", "anti_patterns", "kpt"]).optional().default("kpt").describe('Category of insights: "strengths", "anti_patterns", or "kpt" (default)') -}, wrapToolExecution(definition3.name, async (args) => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatResult3(summary, args); -})); -async function main() { - info("server", "starting"); - recoverStaleAnalysisState({ - force: true, - reason: "Recovered stale running state on MCP server startup." - }); - const transport = new StdioServerTransport(); - await server.connect(transport); - info("server", "connected"); -} -main().catch((err) => { - error("server", "failed to start", { error: err instanceof Error ? err.message : String(err) }); - process.exit(1); -}); -function cleanup() { - info("server", "shutting down"); - closeCache(); - closeResultsDb(); - closeStageDb(); - process.exit(0); -} -process.on("SIGINT", cleanup); -process.on("SIGTERM", cleanup); -//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/packages/plugin/dist/mcp/server.js.map b/packages/plugin/dist/mcp/server.js.map deleted file mode 100644 index 6c00aec7..00000000 --- a/packages/plugin/dist/mcp/server.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../node_modules/ajv/lib/compile/codegen/code.ts","../../node_modules/ajv/lib/compile/codegen/scope.ts","../../node_modules/ajv/lib/compile/codegen/index.ts","../../node_modules/ajv/lib/compile/util.ts","../../node_modules/ajv/lib/compile/names.ts","../../node_modules/ajv/lib/compile/errors.ts","../../node_modules/ajv/lib/compile/validate/boolSchema.ts","../../node_modules/ajv/lib/compile/rules.ts","../../node_modules/ajv/lib/compile/validate/applicability.ts","../../node_modules/ajv/lib/compile/validate/dataType.ts","../../node_modules/ajv/lib/compile/validate/defaults.ts","../../node_modules/ajv/lib/vocabularies/code.ts","../../node_modules/ajv/lib/compile/validate/keyword.ts","../../node_modules/ajv/lib/compile/validate/subschema.ts","../../node_modules/fast-deep-equal/index.js","../../node_modules/json-schema-traverse/index.js","../../node_modules/ajv/lib/compile/resolve.ts","../../node_modules/ajv/lib/compile/validate/index.ts","../../node_modules/ajv/lib/runtime/validation_error.ts","../../node_modules/ajv/lib/compile/ref_error.ts","../../node_modules/ajv/lib/compile/index.ts","../../node_modules/ajv/dist/refs/data.json","../../node_modules/fast-uri/lib/utils.js","../../node_modules/fast-uri/lib/schemes.js","../../node_modules/fast-uri/index.js","../../node_modules/ajv/lib/runtime/uri.ts","../../node_modules/ajv/lib/core.ts","../../node_modules/ajv/lib/vocabularies/core/id.ts","../../node_modules/ajv/lib/vocabularies/core/ref.ts","../../node_modules/ajv/lib/vocabularies/core/index.ts","../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../node_modules/ajv/lib/runtime/ucs2length.ts","../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../node_modules/ajv/lib/vocabularies/validation/required.ts","../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../node_modules/ajv/lib/runtime/equal.ts","../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../node_modules/ajv/lib/vocabularies/validation/const.ts","../../node_modules/ajv/lib/vocabularies/validation/enum.ts","../../node_modules/ajv/lib/vocabularies/validation/index.ts","../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../node_modules/ajv/lib/vocabularies/applicator/items.ts","../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../node_modules/ajv/lib/vocabularies/applicator/not.ts","../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/if.ts","../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../node_modules/ajv/lib/vocabularies/applicator/index.ts","../../node_modules/ajv/lib/vocabularies/format/format.ts","../../node_modules/ajv/lib/vocabularies/format/index.ts","../../node_modules/ajv/lib/vocabularies/metadata.ts","../../node_modules/ajv/lib/vocabularies/draft7.ts","../../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../node_modules/ajv/dist/refs/json-schema-draft-07.json","../../node_modules/ajv/lib/ajv.ts","../../node_modules/ajv-formats/src/formats.ts","../../node_modules/ajv-formats/src/limit.ts","../../node_modules/ajv-formats/src/index.ts","../../node_modules/zod/v3/helpers/util.js","../../node_modules/zod/v3/ZodError.js","../../node_modules/zod/v3/locales/en.js","../../node_modules/zod/v3/errors.js","../../node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/zod/v3/types.js","../../node_modules/zod/v4/mini/schemas.js","../../node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts","../../node_modules/@modelcontextprotocol/sdk/src/types.ts","../../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/interfaces.ts","../../node_modules/zod-to-json-schema/dist/esm/Options.js","../../node_modules/zod-to-json-schema/dist/esm/Refs.js","../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../../node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts","../../node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts","../../node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts","../../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/server.ts","../../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/helpers.ts","../../node_modules/@modelcontextprotocol/sdk/src/server/index.ts","../../node_modules/@modelcontextprotocol/sdk/src/server/completable.ts","../../node_modules/@modelcontextprotocol/sdk/src/shared/toolNameValidation.ts","../../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/mcp-server.ts","../../node_modules/@modelcontextprotocol/sdk/src/server/mcp.ts","../../node_modules/@modelcontextprotocol/sdk/src/server/stdio.ts","../../node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts","../../lib/cache.ts","../../lib/api-client.ts","../../lib/results-db.ts","../../lib/stage-db.ts","../../mcp/tools/get-developer-profile.ts","../../mcp/tools/get-growth-areas.ts","../../mcp/tools/get-recent-insights.ts","../../lib/core/multi-source-session-scanner.ts","../../lib/scanner/project-name-resolver.ts","../../lib/scanner/levenshtein.ts","../../lib/scanner/path-encoding.ts","../../lib/scanner/sources/base.ts","../../lib/scanner/sources/claude-code.ts","../../lib/scanner/sources/cursor.ts","../../lib/scanner/tool-mapping.ts","../../lib/scanner/sources/sqlite-loader.ts","../../lib/scanner/sources/cursor-composer.ts","../../lib/scanner/sources/cursor-paths.ts","../../lib/scanner/sources/claude-discovery.ts","../../lib/scanner/index.ts","../../lib/project-filters.ts","../../mcp/tools/scan-sessions.ts","../../mcp/tools/extract-data.ts","../../lib/core/data-extractor.ts","../../mcp/tools/save-domain-results.ts","../../mcp/tools/get-domain-results.ts","../../mcp/tools/get-user-prefs.ts","../../mcp/tools/get-run-progress.ts","../../mcp/tools/save-user-prefs.ts","../../mcp/tools/classify-developer-type.ts","../../mcp/tools/verify-evidence.ts","../../mcp/tools/generate-report.ts","../../lib/report-template.ts","../../mcp/tools/sync-to-team.ts","../../mcp/tools/save-stage-output.ts","../../mcp/tools/get-stage-output.ts","../../lib/prompt-context.ts","../../mcp/tools/get-prompt-context.ts","../../mcp/server.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record\n\ntype ScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs): MergeEvaluatedFunc {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc\n items: MergeEvaluatedFunc\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array} buffer\n * @param {Array} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array} */\n const address = []\n /** @type {Array} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set = new Set()\n private readonly _loading: {[Ref in string]?: Promise} = {}\n private readonly _cache: Map = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise\n validate(schema: Schema | JSONSchemaType | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate(schema: JTDSchemaType, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate(\n schema: T,\n data: unknown\n ): data is JTDDataType\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate(schema: AsyncSchema, data: unknown | T): Promise\n validate(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise\n validate(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile(schema: Schema | JSONSchemaType, _meta?: boolean): ValidateFunction\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile(schema: JTDSchemaType, _meta?: boolean): ValidateFunction\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile(\n schema: T,\n _meta?: boolean\n ): ValidateFunction>\n compile(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync(\n schema: SchemaObject | JSONSchemaType,\n _meta?: boolean\n ): Promise>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(schema: JTDSchemaType, _meta?: boolean): Promise>\n compileAsync(schema: AsyncSchema, meta?: boolean): Promise>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise>\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef: string): AnyValidateFunction | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n if ($data) {\n const {regExp} = it.opts.code\n const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator\n | FormatValidator\n | AsyncFormatValidator\n | AsyncFormatValidator\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj | DiscrErrorObj\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator,\n compare: FormatCompare\n): FormatDefinition {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = Object.create(null);\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n // @ts-ignore\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n // @ts-ignore\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import * as core from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodMiniType = /*@__PURE__*/ core.$constructor(\"ZodMiniType\", (inst, def) => {\n if (!inst._zod)\n throw new Error(\"Uninitialized schema in ZodMiniType.\");\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.check = (...checks) => {\n return inst.clone({\n ...def,\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }, { parent: true });\n };\n inst.with = inst.check;\n inst.clone = (_def, params) => core.clone(inst, _def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n inst.apply = (fn) => fn(inst);\n});\nexport const ZodMiniString = /*@__PURE__*/ core.$constructor(\"ZodMiniString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function string(params) {\n return core._string(ZodMiniString, params);\n}\nexport const ZodMiniStringFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n ZodMiniString.init(inst, def);\n});\nexport const ZodMiniEmail = /*@__PURE__*/ core.$constructor(\"ZodMiniEmail\", (inst, def) => {\n core.$ZodEmail.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function email(params) {\n return core._email(ZodMiniEmail, params);\n}\nexport const ZodMiniGUID = /*@__PURE__*/ core.$constructor(\"ZodMiniGUID\", (inst, def) => {\n core.$ZodGUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function guid(params) {\n return core._guid(ZodMiniGUID, params);\n}\nexport const ZodMiniUUID = /*@__PURE__*/ core.$constructor(\"ZodMiniUUID\", (inst, def) => {\n core.$ZodUUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function uuid(params) {\n return core._uuid(ZodMiniUUID, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function uuidv4(params) {\n return core._uuidv4(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv6\n// @__NO_SIDE_EFFECTS__\nexport function uuidv6(params) {\n return core._uuidv6(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv7\n// @__NO_SIDE_EFFECTS__\nexport function uuidv7(params) {\n return core._uuidv7(ZodMiniUUID, params);\n}\nexport const ZodMiniURL = /*@__PURE__*/ core.$constructor(\"ZodMiniURL\", (inst, def) => {\n core.$ZodURL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function url(params) {\n return core._url(ZodMiniURL, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function httpUrl(params) {\n return core._url(ZodMiniURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniEmoji = /*@__PURE__*/ core.$constructor(\"ZodMiniEmoji\", (inst, def) => {\n core.$ZodEmoji.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function emoji(params) {\n return core._emoji(ZodMiniEmoji, params);\n}\nexport const ZodMiniNanoID = /*@__PURE__*/ core.$constructor(\"ZodMiniNanoID\", (inst, def) => {\n core.$ZodNanoID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nanoid(params) {\n return core._nanoid(ZodMiniNanoID, params);\n}\nexport const ZodMiniCUID = /*@__PURE__*/ core.$constructor(\"ZodMiniCUID\", (inst, def) => {\n core.$ZodCUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cuid(params) {\n return core._cuid(ZodMiniCUID, params);\n}\nexport const ZodMiniCUID2 = /*@__PURE__*/ core.$constructor(\"ZodMiniCUID2\", (inst, def) => {\n core.$ZodCUID2.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cuid2(params) {\n return core._cuid2(ZodMiniCUID2, params);\n}\nexport const ZodMiniULID = /*@__PURE__*/ core.$constructor(\"ZodMiniULID\", (inst, def) => {\n core.$ZodULID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ulid(params) {\n return core._ulid(ZodMiniULID, params);\n}\nexport const ZodMiniXID = /*@__PURE__*/ core.$constructor(\"ZodMiniXID\", (inst, def) => {\n core.$ZodXID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function xid(params) {\n return core._xid(ZodMiniXID, params);\n}\nexport const ZodMiniKSUID = /*@__PURE__*/ core.$constructor(\"ZodMiniKSUID\", (inst, def) => {\n core.$ZodKSUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ksuid(params) {\n return core._ksuid(ZodMiniKSUID, params);\n}\nexport const ZodMiniIPv4 = /*@__PURE__*/ core.$constructor(\"ZodMiniIPv4\", (inst, def) => {\n core.$ZodIPv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ipv4(params) {\n return core._ipv4(ZodMiniIPv4, params);\n}\nexport const ZodMiniIPv6 = /*@__PURE__*/ core.$constructor(\"ZodMiniIPv6\", (inst, def) => {\n core.$ZodIPv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ipv6(params) {\n return core._ipv6(ZodMiniIPv6, params);\n}\nexport const ZodMiniCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodMiniCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cidrv4(params) {\n return core._cidrv4(ZodMiniCIDRv4, params);\n}\nexport const ZodMiniCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodMiniCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cidrv6(params) {\n return core._cidrv6(ZodMiniCIDRv6, params);\n}\nexport const ZodMiniMAC = /*@__PURE__*/ core.$constructor(\"ZodMiniMAC\", (inst, def) => {\n core.$ZodMAC.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function mac(params) {\n return core._mac(ZodMiniMAC, params);\n}\nexport const ZodMiniBase64 = /*@__PURE__*/ core.$constructor(\"ZodMiniBase64\", (inst, def) => {\n core.$ZodBase64.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function base64(params) {\n return core._base64(ZodMiniBase64, params);\n}\nexport const ZodMiniBase64URL = /*@__PURE__*/ core.$constructor(\"ZodMiniBase64URL\", (inst, def) => {\n core.$ZodBase64URL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function base64url(params) {\n return core._base64url(ZodMiniBase64URL, params);\n}\nexport const ZodMiniE164 = /*@__PURE__*/ core.$constructor(\"ZodMiniE164\", (inst, def) => {\n core.$ZodE164.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function e164(params) {\n return core._e164(ZodMiniE164, params);\n}\nexport const ZodMiniJWT = /*@__PURE__*/ core.$constructor(\"ZodMiniJWT\", (inst, def) => {\n core.$ZodJWT.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function jwt(params) {\n return core._jwt(ZodMiniJWT, params);\n}\nexport const ZodMiniCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniCustomStringFormat\", (inst, def) => {\n core.$ZodCustomStringFormat.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodMiniCustomStringFormat, format, fnOrRegex, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hostname(_params) {\n return core._stringFormat(ZodMiniCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hex(_params) {\n return core._stringFormat(ZodMiniCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n // check for unrecognized format\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodMiniCustomStringFormat, format, regex, params);\n}\nexport const ZodMiniNumber = /*@__PURE__*/ core.$constructor(\"ZodMiniNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function number(params) {\n return core._number(ZodMiniNumber, params);\n}\nexport const ZodMiniNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodMiniNumber.init(inst, def);\n});\n// int\n// @__NO_SIDE_EFFECTS__\nexport function int(params) {\n return core._int(ZodMiniNumberFormat, params);\n}\n// float32\n// @__NO_SIDE_EFFECTS__\nexport function float32(params) {\n return core._float32(ZodMiniNumberFormat, params);\n}\n// float64\n// @__NO_SIDE_EFFECTS__\nexport function float64(params) {\n return core._float64(ZodMiniNumberFormat, params);\n}\n// int32\n// @__NO_SIDE_EFFECTS__\nexport function int32(params) {\n return core._int32(ZodMiniNumberFormat, params);\n}\n// uint32\n// @__NO_SIDE_EFFECTS__\nexport function uint32(params) {\n return core._uint32(ZodMiniNumberFormat, params);\n}\nexport const ZodMiniBoolean = /*@__PURE__*/ core.$constructor(\"ZodMiniBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function boolean(params) {\n return core._boolean(ZodMiniBoolean, params);\n}\nexport const ZodMiniBigInt = /*@__PURE__*/ core.$constructor(\"ZodMiniBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function bigint(params) {\n return core._bigint(ZodMiniBigInt, params);\n}\nexport const ZodMiniBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodMiniBigInt.init(inst, def);\n});\n// int64\n// @__NO_SIDE_EFFECTS__\nexport function int64(params) {\n return core._int64(ZodMiniBigIntFormat, params);\n}\n// uint64\n// @__NO_SIDE_EFFECTS__\nexport function uint64(params) {\n return core._uint64(ZodMiniBigIntFormat, params);\n}\nexport const ZodMiniSymbol = /*@__PURE__*/ core.$constructor(\"ZodMiniSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function symbol(params) {\n return core._symbol(ZodMiniSymbol, params);\n}\nexport const ZodMiniUndefined = /*@__PURE__*/ core.$constructor(\"ZodMiniUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _undefined(params) {\n return core._undefined(ZodMiniUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodMiniNull = /*@__PURE__*/ core.$constructor(\"ZodMiniNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _null(params) {\n return core._null(ZodMiniNull, params);\n}\nexport { _null as null };\nexport const ZodMiniAny = /*@__PURE__*/ core.$constructor(\"ZodMiniAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function any() {\n return core._any(ZodMiniAny);\n}\nexport const ZodMiniUnknown = /*@__PURE__*/ core.$constructor(\"ZodMiniUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function unknown() {\n return core._unknown(ZodMiniUnknown);\n}\nexport const ZodMiniNever = /*@__PURE__*/ core.$constructor(\"ZodMiniNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function never(params) {\n return core._never(ZodMiniNever, params);\n}\nexport const ZodMiniVoid = /*@__PURE__*/ core.$constructor(\"ZodMiniVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _void(params) {\n return core._void(ZodMiniVoid, params);\n}\nexport { _void as void };\nexport const ZodMiniDate = /*@__PURE__*/ core.$constructor(\"ZodMiniDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function date(params) {\n return core._date(ZodMiniDate, params);\n}\nexport const ZodMiniArray = /*@__PURE__*/ core.$constructor(\"ZodMiniArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function array(element, params) {\n return new ZodMiniArray({\n type: \"array\",\n element: element,\n ...util.normalizeParams(params),\n });\n}\n// .keyof\n// @__NO_SIDE_EFFECTS__\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodMiniObject = /*@__PURE__*/ core.$constructor(\"ZodMiniObject\", (inst, def) => {\n core.$ZodObject.init(inst, def);\n ZodMiniType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => def.shape);\n});\n// @__NO_SIDE_EFFECTS__\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodMiniObject(def);\n}\n// strictObject\n// @__NO_SIDE_EFFECTS__\nexport function strictObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\n// @__NO_SIDE_EFFECTS__\nexport function looseObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\n// object methods\n// @__NO_SIDE_EFFECTS__\nexport function extend(schema, shape) {\n return util.extend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function safeExtend(schema, shape) {\n return util.safeExtend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function merge(schema, shape) {\n return util.extend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function pick(schema, mask) {\n return util.pick(schema, mask);\n}\n// .omit\n// @__NO_SIDE_EFFECTS__\nexport function omit(schema, mask) {\n return util.omit(schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function partial(schema, mask) {\n return util.partial(ZodMiniOptional, schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function required(schema, mask) {\n return util.required(ZodMiniNonOptional, schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function catchall(inst, catchall) {\n return inst.clone({ ...inst._zod.def, catchall: catchall });\n}\nexport const ZodMiniUnion = /*@__PURE__*/ core.$constructor(\"ZodMiniUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function union(options, params) {\n return new ZodMiniUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniXor = /*@__PURE__*/ core.$constructor(\"ZodMiniXor\", (inst, def) => {\n ZodMiniUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodMiniXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodMiniDiscriminatedUnion\", (inst, def) => {\n core.$ZodDiscriminatedUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function discriminatedUnion(discriminator, options, params) {\n return new ZodMiniDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniIntersection = /*@__PURE__*/ core.$constructor(\"ZodMiniIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function intersection(left, right) {\n return new ZodMiniIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodMiniTuple = /*@__PURE__*/ core.$constructor(\"ZodMiniTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodMiniTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniRecord = /*@__PURE__*/ core.$constructor(\"ZodMiniRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function record(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodMiniRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniMap = /*@__PURE__*/ core.$constructor(\"ZodMiniMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function map(keyType, valueType, params) {\n return new ZodMiniMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniSet = /*@__PURE__*/ core.$constructor(\"ZodMiniSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function set(valueType, params) {\n return new ZodMiniSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniEnum = /*@__PURE__*/ core.$constructor(\"ZodMiniEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodMiniType.init(inst, def);\n inst.options = Object.values(def.entries);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniLiteral = /*@__PURE__*/ core.$constructor(\"ZodMiniLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function literal(value, params) {\n return new ZodMiniLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniFile = /*@__PURE__*/ core.$constructor(\"ZodMiniFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function file(params) {\n return core._file(ZodMiniFile, params);\n}\nexport const ZodMiniTransform = /*@__PURE__*/ core.$constructor(\"ZodMiniTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function transform(fn) {\n return new ZodMiniTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodMiniOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function optional(innerType) {\n return new ZodMiniOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodMiniExactOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function exactOptional(innerType) {\n return new ZodMiniExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodMiniNullable = /*@__PURE__*/ core.$constructor(\"ZodMiniNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nullable(innerType) {\n return new ZodMiniNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\n// @__NO_SIDE_EFFECTS__\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodMiniDefault = /*@__PURE__*/ core.$constructor(\"ZodMiniDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function _default(innerType, defaultValue) {\n return new ZodMiniDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodMiniPrefault = /*@__PURE__*/ core.$constructor(\"ZodMiniPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function prefault(innerType, defaultValue) {\n return new ZodMiniPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodMiniNonOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nonoptional(innerType, params) {\n return new ZodMiniNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniSuccess = /*@__PURE__*/ core.$constructor(\"ZodMiniSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function success(innerType) {\n return new ZodMiniSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodMiniCatch = /*@__PURE__*/ core.$constructor(\"ZodMiniCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _catch(innerType, catchValue) {\n return new ZodMiniCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodMiniNaN = /*@__PURE__*/ core.$constructor(\"ZodMiniNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nan(params) {\n return core._nan(ZodMiniNaN, params);\n}\nexport const ZodMiniPipe = /*@__PURE__*/ core.$constructor(\"ZodMiniPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function pipe(in_, out) {\n return new ZodMiniPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n });\n}\nexport const ZodMiniCodec = /*@__PURE__*/ core.$constructor(\"ZodMiniCodec\", (inst, def) => {\n ZodMiniPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function codec(in_, out, params) {\n return new ZodMiniCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodMiniReadonly = /*@__PURE__*/ core.$constructor(\"ZodMiniReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function readonly(innerType) {\n return new ZodMiniReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodMiniTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodMiniTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function templateLiteral(parts, params) {\n return new ZodMiniTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniLazy = /*@__PURE__*/ core.$constructor(\"ZodMiniLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// export function lazy(getter: () => T): T {\n// return util.createTransparentProxy(getter);\n// }\n// @__NO_SIDE_EFFECTS__\nfunction _lazy(getter) {\n return new ZodMiniLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport { _lazy as lazy };\nexport const ZodMiniPromise = /*@__PURE__*/ core.$constructor(\"ZodMiniPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function promise(innerType) {\n return new ZodMiniPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodMiniCustom = /*@__PURE__*/ core.$constructor(\"ZodMiniCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// custom checks\n// @__NO_SIDE_EFFECTS__\nexport function check(fn, params) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// ZodCustom\n// custom schema\n// @__NO_SIDE_EFFECTS__\nexport function custom(fn, _params) {\n return core._custom(ZodMiniCustom, fn ?? (() => true), _params);\n}\n// refine\n// @__NO_SIDE_EFFECTS__\nexport function refine(fn, _params = {}) {\n return core._refine(ZodMiniCustom, fn, _params);\n}\n// superRefine\n// @__NO_SIDE_EFFECTS__\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\n// instanceof\nclass Class {\n constructor(..._args) { }\n}\n// @__NO_SIDE_EFFECTS__\nfunction _instanceof(cls, params = {}) {\n const inst = custom((data) => data instanceof cls, params);\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodMiniCodec,\n Boolean: ZodMiniBoolean,\n String: ZodMiniString,\n}, ...args);\n// @__NO_SIDE_EFFECTS__\nexport function json() {\n const jsonSchema = _lazy(() => {\n return union([string(), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\nexport const ZodMiniFunction = /*@__PURE__*/ core.$constructor(\"ZodMiniFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function _function(params) {\n return new ZodMiniFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\n",null,null,null,"export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n flags: { hasReferencedOpenAiAnyType: false },\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n if (refs.target !== \"openAi\") {\n return {};\n }\n const anyDefinitionPath = [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ];\n refs.flags.hasReferencedOpenAiAnyType = true;\n return {\n $ref: refs.$refStrategy === \"relative\"\n ? getRelativePath(anyDefinitionPath, refs.currentPath)\n : anyDefinitionPath.join(\"/\"),\n };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n }) || parseAnyDef(refs);\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || parseAnyDef(refs);\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n return refs.target === \"openAi\"\n ? undefined\n : {\n not: parseAnyDef({\n ...refs,\n currentPath: [...refs.currentPath, \"not\"],\n }),\n };\n}\n","export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\n const result = {\n type: \"object\",\n properties: {},\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef._def.typeName === \"ZodOptional\") {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n });\n return innerSchema\n ? {\n anyOf: [\n {\n not: parseAnyDef(refs),\n },\n innerSchema,\n ],\n }\n : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n return {\n not: parseAnyDef(refs),\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return parseAnyDef(refs);\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n }\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n",null,null,null,null,null,null,null,null,null,null,null,null,"/**\n * Insight Cache\n *\n * Local SQLite cache for user insights at ~/.betterprompt/insight-cache.db.\n * Serves stale data when the server is unreachable, refreshes after\n * each analysis or every 24 hours.\n */\n\nimport Database from 'better-sqlite3';\nimport { mkdirSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { getCacheDbPath } from './config.js';\nimport { fetchUserSummary, type UserSummary } from './api-client.js';\n\nconst CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours\n\ninterface CacheRow {\n user_id: string;\n result_id: string;\n profile_json: string;\n growth_json: string;\n insights_json: string;\n fetched_at: string;\n}\n\nlet db: Database.Database | null = null;\n\nfunction getDb(): Database.Database {\n if (db) return db;\n\n const dbPath = getCacheDbPath();\n mkdirSync(dirname(dbPath), { recursive: true });\n\n db = new Database(dbPath);\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS cached_insights (\n user_id TEXT PRIMARY KEY,\n result_id TEXT NOT NULL,\n profile_json TEXT NOT NULL,\n growth_json TEXT NOT NULL,\n insights_json TEXT NOT NULL,\n fetched_at TEXT NOT NULL\n )\n `);\n\n return db;\n}\n\n/**\n * Store a summary in the local cache.\n */\nexport function setCachedSummary(userId: string, summary: UserSummary): void {\n const database = getDb();\n\n database\n .prepare(\n `INSERT OR REPLACE INTO cached_insights\n (user_id, result_id, profile_json, growth_json, insights_json, fetched_at)\n VALUES (?, ?, ?, ?, ?, ?)`,\n )\n .run(\n userId,\n summary.resultId,\n JSON.stringify({\n resultId: summary.resultId,\n analyzedAt: summary.analyzedAt,\n profile: summary.profile,\n }),\n JSON.stringify(summary.growthAreas),\n JSON.stringify({\n strengths: summary.strengths,\n antiPatterns: summary.antiPatterns,\n kpt: summary.kpt,\n }),\n new Date().toISOString(),\n );\n}\n\n/**\n * Get cached summary. Returns null if not cached.\n */\nexport function getCachedSummary(userId: string): UserSummary | null {\n const database = getDb();\n const row = database\n .prepare('SELECT * FROM cached_insights WHERE user_id = ?')\n .get(userId) as CacheRow | undefined;\n\n if (!row) return null;\n\n const profile = JSON.parse(row.profile_json) as {\n resultId: string;\n analyzedAt: string;\n profile: UserSummary['profile'];\n };\n const growthAreas = JSON.parse(row.growth_json) as UserSummary['growthAreas'];\n const insights = JSON.parse(row.insights_json) as {\n strengths: UserSummary['strengths'];\n antiPatterns: UserSummary['antiPatterns'];\n kpt: UserSummary['kpt'];\n };\n\n return {\n resultId: profile.resultId,\n analyzedAt: profile.analyzedAt,\n profile: profile.profile,\n growthAreas,\n strengths: insights.strengths,\n antiPatterns: insights.antiPatterns,\n kpt: insights.kpt,\n };\n}\n\n/**\n * Check if the cache is stale (older than 24 hours).\n */\nexport function isCacheStale(userId: string): boolean {\n const database = getDb();\n const row = database\n .prepare('SELECT fetched_at FROM cached_insights WHERE user_id = ?')\n .get(userId) as Pick | undefined;\n\n if (!row) return true;\n\n const fetchedAt = new Date(row.fetched_at).getTime();\n return Date.now() - fetchedAt > CACHE_TTL_MS;\n}\n\n/**\n * Get summary with cache-through pattern:\n * 1. Return cached data if fresh\n * 2. Try to refresh from server\n * 3. Return stale cache if server unreachable\n * 4. Return null if no data anywhere\n */\nexport async function getSummaryWithCache(userId: string): Promise {\n const cached = getCachedSummary(userId);\n\n // Fresh cache — return immediately\n if (cached && !isCacheStale(userId)) {\n return cached;\n }\n\n // Try to refresh from server\n try {\n const fresh = await fetchUserSummary();\n if (fresh) {\n setCachedSummary(userId, fresh);\n return fresh;\n }\n // Server returned null (no analysis yet), return stale cache if available\n return cached;\n } catch {\n // Server unreachable — serve stale cache\n return cached;\n }\n}\n\n/**\n * Force refresh the cache from the server.\n */\nexport async function refreshCache(userId: string): Promise {\n const fresh = await fetchUserSummary();\n if (fresh) {\n setCachedSummary(userId, fresh);\n }\n return fresh;\n}\n\n/**\n * Close the database connection (for clean shutdown).\n */\nexport function closeCache(): void {\n if (db) {\n db.close();\n db = null;\n }\n}\n","/**\n * API Client\n *\n * HTTP client for communicating with the BetterPrompt server.\n * Authentication is no longer required — all endpoints work without tokens.\n */\n\nimport { getConfig } from './config.js';\n\nexport interface UserSummary {\n resultId: string;\n analyzedAt: string;\n profile: {\n primaryType: string;\n controlLevel: string;\n matrixName: string;\n personalitySummary: string;\n domainScores: Record;\n };\n growthAreas: Array<{\n title: string;\n domain: string;\n severity: string;\n recommendation: string;\n }>;\n strengths: Array<{\n domain: string;\n domainLabel: string;\n topStrength: string;\n domainScore: number;\n }>;\n antiPatterns: Array<{\n pattern: string;\n frequency: number;\n impact: string;\n }>;\n kpt: {\n keep: string[];\n problem: string[];\n tryNext: string[];\n };\n}\n\nexport interface ApiError {\n error: string;\n message: string;\n}\n\n/**\n * Fetch the user's analysis summary from the server.\n * Returns null if no analysis exists yet.\n * Throws on network or auth errors.\n */\nexport async function fetchUserSummary(): Promise {\n const config = getConfig();\n\n const url = `${config.serverUrl}/api/analysis/user/summary`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as Partial;\n throw new Error(\n `Server error (${response.status}): ${body.message ?? 'Unknown error'}`,\n );\n }\n\n const data = await response.json() as { summary: UserSummary | null };\n return data.summary;\n}\n\n/**\n * Verify server connectivity by hitting /api/auth/me.\n * No authentication required — always succeeds if server is reachable.\n */\nexport async function verifyAuth(): Promise<{ id: string; email: string } | null> {\n const config = getConfig();\n\n try {\n const response = await fetch(`${config.serverUrl}/api/auth/me`, {\n headers: {\n Accept: 'application/json',\n },\n signal: AbortSignal.timeout(5_000),\n });\n\n if (!response.ok) return null;\n\n const data = await response.json() as { id: string; email: string };\n return data;\n } catch {\n return null;\n }\n}\n","/**\n * Results Database - Local SQLite storage for canonical analysis runs.\n *\n * @module plugin/lib/results-db\n */\n\nimport Database from 'better-sqlite3';\nimport { mkdirSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { getPluginDataDir } from './core/session-scanner.js';\nimport type {\n CanonicalAnalysisRun,\n CanonicalEvaluationPayload,\n CanonicalStageOutputs,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n Phase1Output,\n Phase1SessionMetrics,\n ReportActivitySession,\n} from './core/types.js';\nimport { assembleCanonicalAnalysisRun } from './evaluation-assembler.js';\nimport { getAllStageOutputs } from './stage-db.js';\n\nconst DB_FILE = 'results.db';\n\nlet db: Database.Database | null = null;\n\nfunction ensureColumn(\n database: Database.Database,\n tableName: string,\n columnName: string,\n definition: string,\n): void {\n const columns = database.prepare(`PRAGMA table_info(${tableName})`).all() as Array<{ name: string }>;\n if (!columns.some(column => column.name === columnName)) {\n database.exec(`ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${definition}`);\n }\n}\n\nexport function getDb(): Database.Database {\n if (db) return db;\n\n const dataDir = getPluginDataDir();\n mkdirSync(dataDir, { recursive: true });\n db = new Database(join(dataDir, DB_FILE));\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS analysis_runs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n analyzed_at TEXT NOT NULL,\n metrics_json TEXT NOT NULL,\n scores_json TEXT NOT NULL,\n type_json TEXT,\n content_json TEXT,\n phase1_output_json TEXT,\n activity_sessions_json TEXT,\n evaluation_json TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS domain_results (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n domain TEXT NOT NULL,\n score REAL NOT NULL,\n confidence REAL NOT NULL DEFAULT 0.0,\n data_json TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, domain)\n );\n\n CREATE INDEX IF NOT EXISTS idx_domain_results_domain ON domain_results(domain);\n CREATE INDEX IF NOT EXISTS idx_domain_results_run ON domain_results(run_id);\n `);\n\n ensureColumn(db, 'analysis_runs', 'phase1_output_json', 'TEXT');\n ensureColumn(db, 'analysis_runs', 'activity_sessions_json', 'TEXT');\n ensureColumn(db, 'analysis_runs', 'evaluation_json', 'TEXT');\n\n return db;\n}\n\ninterface AnalysisRunRow {\n id: number;\n analyzed_at: string;\n metrics_json: string;\n scores_json: string;\n type_json: string | null;\n content_json: string | null;\n phase1_output_json: string | null;\n activity_sessions_json: string | null;\n evaluation_json: string | null;\n}\n\nexport function createAnalysisRun(params: {\n metrics: Phase1SessionMetrics;\n scores: DeterministicScores;\n phase1Output?: Phase1Output;\n activitySessions?: ReportActivitySession[];\n analyzedAt?: string;\n}): number {\n const database = getDb();\n const analyzedAt = params.analyzedAt ?? new Date().toISOString();\n\n const result = database.prepare(`\n INSERT INTO analysis_runs (\n analyzed_at,\n metrics_json,\n scores_json,\n phase1_output_json,\n activity_sessions_json\n )\n VALUES (?, ?, ?, ?, ?)\n `)\n .run(\n analyzedAt,\n JSON.stringify(params.metrics),\n JSON.stringify(params.scores),\n params.phase1Output ? JSON.stringify(params.phase1Output) : null,\n params.activitySessions ? JSON.stringify(params.activitySessions) : null,\n );\n\n return Number(result.lastInsertRowid);\n}\n\nexport function getCurrentRunId(): number | null {\n try {\n const runIdStr = readFileSync(join(getPluginDataDir(), 'current-run-id.txt'), 'utf-8');\n return parseInt(runIdStr.trim(), 10);\n } catch {\n return getLatestRunId();\n }\n}\n\nexport function getLatestRunId(): number | null {\n const database = getDb();\n const row = database\n .prepare('SELECT id FROM analysis_runs ORDER BY id DESC LIMIT 1')\n .get() as { id: number } | undefined;\n return row?.id ?? null;\n}\n\nexport function getAnalysisRun(runId: number): {\n id: number;\n analyzedAt: string;\n metrics: Phase1SessionMetrics;\n scores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n phase1Output: Phase1Output | null;\n activitySessions: ReportActivitySession[] | null;\n evaluation: CanonicalEvaluationPayload | null;\n content: Record | null;\n} | null {\n const database = getDb();\n const row = database\n .prepare('SELECT * FROM analysis_runs WHERE id = ?')\n .get(runId) as AnalysisRunRow | undefined;\n\n if (!row) return null;\n\n return {\n id: row.id,\n analyzedAt: row.analyzed_at,\n metrics: JSON.parse(row.metrics_json) as Phase1SessionMetrics,\n scores: JSON.parse(row.scores_json) as DeterministicScores,\n typeResult: row.type_json ? JSON.parse(row.type_json) as DeterministicTypeResult : null,\n phase1Output: row.phase1_output_json ? JSON.parse(row.phase1_output_json) as Phase1Output : null,\n activitySessions: row.activity_sessions_json\n ? JSON.parse(row.activity_sessions_json) as ReportActivitySession[]\n : null,\n evaluation: row.evaluation_json ? JSON.parse(row.evaluation_json) as CanonicalEvaluationPayload : null,\n content: row.content_json ? JSON.parse(row.content_json) as Record : null,\n };\n}\n\nexport function saveDomainResult(runId: number, result: DomainResult): void {\n const database = getDb();\n database\n .prepare(`\n INSERT OR REPLACE INTO domain_results (run_id, domain, score, confidence, data_json)\n VALUES (?, ?, ?, ?, ?)\n `)\n .run(\n runId,\n result.domain,\n result.overallScore,\n result.confidenceScore,\n JSON.stringify(result),\n );\n}\n\nexport function getDomainResults(runId: number): DomainResult[] {\n const database = getDb();\n const rows = database\n .prepare('SELECT data_json FROM domain_results WHERE run_id = ? ORDER BY domain')\n .all(runId) as Array<{ data_json: string }>;\n\n return rows.map(row => JSON.parse(row.data_json) as DomainResult);\n}\n\nexport function getDomainResult(runId: number, domain: string): DomainResult | null {\n const database = getDb();\n const row = database\n .prepare('SELECT data_json FROM domain_results WHERE run_id = ? AND domain = ?')\n .get(runId, domain) as { data_json: string } | undefined;\n\n return row ? JSON.parse(row.data_json) as DomainResult : null;\n}\n\nexport function saveTypeResult(runId: number, typeResult: DeterministicTypeResult): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET type_json = ? WHERE id = ?')\n .run(JSON.stringify(typeResult), runId);\n}\n\nexport function saveContent(runId: number, content: Record): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET content_json = ? WHERE id = ?')\n .run(JSON.stringify(content), runId);\n}\n\nexport function saveEvaluation(runId: number, evaluation: CanonicalEvaluationPayload): void {\n const database = getDb();\n database\n .prepare('UPDATE analysis_runs SET evaluation_json = ? WHERE id = ?')\n .run(JSON.stringify(evaluation), runId);\n}\n\nfunction saveAssembledArtifacts(\n runId: number,\n activitySessions: ReportActivitySession[],\n evaluation: CanonicalEvaluationPayload,\n): void {\n const database = getDb();\n database\n .prepare(`\n UPDATE analysis_runs\n SET activity_sessions_json = ?, evaluation_json = ?\n WHERE id = ?\n `)\n .run(JSON.stringify(activitySessions), JSON.stringify(evaluation), runId);\n}\n\nexport function assembleCanonicalRun(runId = getLatestRunId() ?? undefined): CanonicalAnalysisRun | null {\n if (!runId) return null;\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) return null;\n\n const stageOutputs = getAllStageOutputs(runId) as CanonicalStageOutputs;\n const assembledRun = assembleCanonicalAnalysisRun({\n runId,\n analyzedAt: run.analyzedAt,\n phase1Output: run.phase1Output,\n deterministicScores: run.scores,\n stageOutputs,\n typeResult: run.typeResult,\n domainResults: getDomainResults(runId),\n });\n\n saveAssembledArtifacts(runId, assembledRun.activitySessions, assembledRun.evaluation);\n\n return assembledRun;\n}\n\nexport function closeResultsDb(): void {\n if (db) {\n db.close();\n db = null;\n }\n}\n","/**\n * Stage Database - SQLite storage for pipeline stage outputs\n *\n * Reuses the shared database connection from results-db to avoid\n * dual-connection write contention on the same results.db file.\n *\n * @module plugin/lib/stage-db\n */\n\nimport type Database from 'better-sqlite3';\nimport { getDb as getSharedDb } from './results-db.js';\n\nlet migratedDb: Database.Database | null = null;\n\nexport const REQUIRED_STAGE_NAMES = [\n 'sessionSummaries',\n // 5 extractors (v2)\n 'extractAiPartnership',\n 'extractSessionCraft',\n 'extractToolMastery',\n 'extractSkillResilience',\n 'extractSessionMastery',\n // 5 domain writers (v2)\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Context + classification\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n] as const;\n\nexport type StageLifecycleStatus = 'validated' | 'failed' | 'running' | 'queued';\n\nexport interface StageStatusRecord {\n runId: number;\n stage: string;\n required: boolean;\n status: StageLifecycleStatus;\n attemptCount: number;\n lastError: string | null;\n updatedAt: string;\n createdAt: string;\n}\n\nexport interface StageGateIssue {\n stage: string;\n required: boolean;\n status: StageLifecycleStatus | 'missing';\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\nfunction getDb() {\n const db = getSharedDb();\n\n if (migratedDb !== db) {\n db.exec(`\n CREATE TABLE IF NOT EXISTS stage_outputs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n stage TEXT NOT NULL,\n data_json TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, stage)\n );\n\n CREATE INDEX IF NOT EXISTS idx_stage_outputs_run ON stage_outputs(run_id);\n CREATE INDEX IF NOT EXISTS idx_stage_outputs_stage ON stage_outputs(stage);\n\n CREATE TABLE IF NOT EXISTS stage_statuses (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id INTEGER NOT NULL REFERENCES analysis_runs(id) ON DELETE CASCADE,\n stage TEXT NOT NULL,\n required INTEGER NOT NULL DEFAULT 0,\n status TEXT NOT NULL,\n attempt_count INTEGER NOT NULL DEFAULT 0,\n last_error TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(run_id, stage)\n );\n\n CREATE INDEX IF NOT EXISTS idx_stage_statuses_run ON stage_statuses(run_id);\n CREATE INDEX IF NOT EXISTS idx_stage_statuses_stage ON stage_statuses(stage);\n `);\n migratedDb = db;\n }\n\n return db;\n}\n\nfunction isRequiredStage(stage: string): boolean {\n return REQUIRED_STAGE_NAMES.includes(stage as (typeof REQUIRED_STAGE_NAMES)[number]);\n}\n\nexport function recordStageStatus(\n runId: number,\n stage: string,\n params: {\n status: StageLifecycleStatus;\n lastError?: string | null;\n required?: boolean;\n },\n): void {\n const database = getDb();\n database\n .prepare(`\n INSERT INTO stage_statuses (\n run_id,\n stage,\n required,\n status,\n attempt_count,\n last_error,\n created_at,\n updated_at\n ) VALUES (?, ?, ?, ?, 1, ?, datetime('now'), datetime('now'))\n ON CONFLICT(run_id, stage) DO UPDATE SET\n required = excluded.required,\n status = excluded.status,\n attempt_count = stage_statuses.attempt_count + 1,\n last_error = excluded.last_error,\n updated_at = datetime('now')\n `)\n .run(\n runId,\n stage,\n (params.required ?? isRequiredStage(stage)) ? 1 : 0,\n params.status,\n params.lastError ?? null,\n );\n}\n\nexport function getStageStatuses(runId: number): StageStatusRecord[] {\n const database = getDb();\n const rows = database\n .prepare(`\n SELECT run_id, stage, required, status, attempt_count, last_error, updated_at, created_at\n FROM stage_statuses\n WHERE run_id = ?\n ORDER BY stage\n `)\n .all(runId) as Array<{\n run_id: number;\n stage: string;\n required: number;\n status: StageLifecycleStatus;\n attempt_count: number;\n last_error: string | null;\n updated_at: string;\n created_at: string;\n }>;\n\n return rows.map(row => ({\n runId: row.run_id,\n stage: row.stage,\n required: row.required === 1,\n status: row.status,\n attemptCount: row.attempt_count,\n lastError: row.last_error,\n updatedAt: row.updated_at,\n createdAt: row.created_at,\n }));\n}\n\n/** Save a stage output. Replaces existing output for same run+stage. */\nexport function saveStageOutput(runId: number, stage: string, data: unknown): void {\n const database = getDb();\n database\n .prepare(\n `INSERT OR REPLACE INTO stage_outputs (run_id, stage, data_json)\n VALUES (?, ?, ?)`,\n )\n .run(runId, stage, JSON.stringify(data));\n}\n\n/** Get a stage output for a run. Returns null if not found. */\nexport function getStageOutput(runId: number, stage: string): T | null {\n const database = getDb();\n const row = database\n .prepare('SELECT data_json FROM stage_outputs WHERE run_id = ? AND stage = ?')\n .get(runId, stage) as { data_json: string } | undefined;\n\n return row ? JSON.parse(row.data_json) as T : null;\n}\n\n/** Get all stage outputs for a run. */\nexport function getAllStageOutputs(runId: number): Record {\n const database = getDb();\n const rows = database\n .prepare('SELECT stage, data_json FROM stage_outputs WHERE run_id = ? ORDER BY stage')\n .all(runId) as Array<{ stage: string; data_json: string }>;\n\n const result: Record = {};\n for (const row of rows) {\n result[row.stage] = JSON.parse(row.data_json);\n }\n return result;\n}\n\nexport function getStageGateIssues(runId: number): StageGateIssue[] {\n const statuses = getStageStatuses(runId);\n const statusLookup = new Map(statuses.map(status => [status.stage, status]));\n const issues: StageGateIssue[] = [];\n\n for (const stage of REQUIRED_STAGE_NAMES) {\n const status = statusLookup.get(stage);\n if (!status) {\n issues.push({\n stage,\n required: true,\n status: 'missing',\n attemptCount: 0,\n lastError: null,\n updatedAt: null,\n });\n continue;\n }\n\n if (status.status !== 'validated') {\n issues.push({\n stage,\n required: status.required,\n status: status.status,\n attemptCount: status.attemptCount,\n lastError: status.lastError,\n updatedAt: status.updatedAt,\n });\n }\n }\n\n return issues;\n}\n\n/** No-op: connection lifecycle is managed by results-db. */\nexport function closeStageDb(): void {\n // Connection is shared via results-db; call closeResultsDb() instead.\n migratedDb = null;\n}\n","/**\n * get_developer_profile MCP Tool\n *\n * Returns the developer's AI collaboration profile:\n * primaryType, controlLevel, domain scores, personality summary.\n */\n\nimport type { UserSummary } from '../../lib/api-client.js';\n\nexport const definition = {\n name: 'get_developer_profile',\n description:\n 'Get the current developer\\'s AI collaboration profile — their primary type ' +\n '(architect/analyst/conductor/speedrunner/trendsetter), control level ' +\n '(navigator/collaborator/delegator), domain scores (0-100), and a brief ' +\n 'personality summary. Use this to understand how the developer works with AI.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [] as string[],\n },\n};\n\nexport function formatResult(summary: UserSummary | null): string {\n if (!summary) {\n return JSON.stringify({\n status: 'no_data',\n message:\n 'No analysis available yet. The developer needs to run at least one analysis first.',\n });\n }\n\n const { profile } = summary;\n\n return JSON.stringify({\n primaryType: profile.primaryType,\n controlLevel: profile.controlLevel,\n matrixName: profile.matrixName,\n personalitySummary: profile.personalitySummary,\n domainScores: profile.domainScores,\n analyzedAt: summary.analyzedAt,\n });\n}\n","/**\n * get_growth_areas MCP Tool\n *\n * Returns the developer's top growth areas with recommendations.\n * Optionally filtered by domain.\n */\n\nimport type { UserSummary } from '../../lib/api-client.js';\n\nexport const definition = {\n name: 'get_growth_areas',\n description:\n 'Get the developer\\'s top growth areas — specific areas where they can improve ' +\n 'their AI collaboration skills. Each area includes a title, domain, severity, ' +\n 'and actionable recommendation. Optionally filter by domain ' +\n '(aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n domain: {\n type: 'string',\n description:\n 'Filter by domain key. One of: aiPartnership, sessionCraft, ' +\n 'toolMastery, skillResilience, sessionMastery',\n enum: [\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n ],\n },\n },\n required: [] as string[],\n },\n};\n\nexport function formatResult(\n summary: UserSummary | null,\n args: { domain?: string },\n): string {\n if (!summary) {\n return JSON.stringify({\n status: 'no_data',\n message:\n 'No analysis available yet. The developer needs to run at least one analysis first.',\n });\n }\n\n let areas = summary.growthAreas;\n\n if (args.domain) {\n areas = areas.filter((a) => a.domain === args.domain);\n }\n\n // Return top 3 most actionable\n const top = areas.slice(0, 3);\n\n return JSON.stringify({\n growthAreas: top.map((a) => ({\n title: a.title,\n domain: a.domain,\n severity: a.severity,\n recommendation: a.recommendation,\n })),\n totalCount: areas.length,\n analyzedAt: summary.analyzedAt,\n });\n}\n","/**\n * get_recent_insights MCP Tool\n *\n * Returns strengths, anti-patterns, or KPT (Keep/Problem/Try) summary.\n */\n\nimport type { UserSummary } from '../../lib/api-client.js';\n\nexport const definition = {\n name: 'get_recent_insights',\n description:\n 'Get the developer\\'s recent analysis insights. Choose a category: ' +\n '\"strengths\" for top skills, \"anti_patterns\" for inefficiency patterns to avoid, ' +\n 'or \"kpt\" for a Keep/Problem/Try summary. Defaults to \"kpt\" which gives the ' +\n 'most actionable overview.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n category: {\n type: 'string',\n description:\n 'Category of insights to return. ' +\n '\"strengths\" = top strengths by domain, ' +\n '\"anti_patterns\" = inefficiency patterns detected, ' +\n '\"kpt\" = Keep/Problem/Try actionable summary',\n enum: ['strengths', 'anti_patterns', 'kpt'],\n default: 'kpt',\n },\n },\n required: [] as string[],\n },\n};\n\nexport function formatResult(\n summary: UserSummary | null,\n args: { category?: string },\n): string {\n if (!summary) {\n return JSON.stringify({\n status: 'no_data',\n message:\n 'No analysis available yet. The developer needs to run at least one analysis first.',\n });\n }\n\n const category = args.category ?? 'kpt';\n\n switch (category) {\n case 'strengths':\n return JSON.stringify({\n strengths: summary.strengths.map((s) => ({\n domain: s.domain,\n domainLabel: s.domainLabel,\n topStrength: s.topStrength,\n score: s.domainScore,\n })),\n analyzedAt: summary.analyzedAt,\n });\n\n case 'anti_patterns':\n return JSON.stringify({\n antiPatterns: summary.antiPatterns.map((ap) => ({\n pattern: ap.pattern,\n frequency: ap.frequency,\n impact: ap.impact,\n })),\n analyzedAt: summary.analyzedAt,\n });\n\n case 'kpt':\n default:\n return JSON.stringify({\n keep: summary.kpt.keep,\n problem: summary.kpt.problem,\n tryNext: summary.kpt.tryNext,\n analyzedAt: summary.analyzedAt,\n });\n }\n}\n","/**\n * Multi-source session scanner wrapper for the plugin.\n *\n * Uses the plugin's scanner library to discover and parse sessions from\n * multiple AI coding assistant sources (Claude Code, Cursor) into a\n * canonical parsed-session format.\n *\n * @module plugin/lib/core/multi-source-session-scanner\n */\n\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { multiSourceScanner } from '../scanner/index.js';\nimport type {\n SourcedParsedSession,\n} from '../scanner/index.js';\nimport { resolveProjectName } from '../scanner/project-name-resolver.js';\nimport { normalizeProjectNameValue } from '../project-filters.js';\nimport type { ParsedSession } from './types.js';\nimport { getScanCacheDir } from './session-scanner.js';\n\nfunction getParsedSessionsCachePath(): string {\n return join(getScanCacheDir(), 'parsed-sessions.json');\n}\n\nfunction isNonNull(value: T | null): value is T {\n return value !== null;\n}\n\nfunction serializeParsedSession(session: SourcedParsedSession): ParsedSession {\n // Defensive: derive projectName from projectPath if missing.\n // resolveProjectName expects the encoded form (e.g. \"-Users-foo-projects-bar\"),\n // so re-encode projectPath by replacing \"/\" with \"-\".\n let projectName = session.projectName;\n if (!projectName && session.projectPath) {\n const encoded = session.projectPath.replace(/\\//g, '-');\n projectName = resolveProjectName(encoded);\n }\n\n projectName = normalizeProjectNameValue(projectName);\n\n return {\n sessionId: session.sessionId,\n projectPath: session.projectPath,\n projectName,\n startTime: session.startTime.toISOString(),\n endTime: session.endTime.toISOString(),\n durationSeconds: session.durationSeconds,\n claudeCodeVersion: session.claudeCodeVersion,\n messages: session.messages.map(message => ({\n uuid: message.uuid,\n role: message.role,\n timestamp: message.timestamp.toISOString(),\n content: message.content,\n toolCalls: message.toolCalls,\n tokenUsage: message.tokenUsage,\n })),\n stats: session.stats,\n source: session.source,\n };\n}\n\n/**\n * Discover, parse, normalize, and cache sessions from all available sources.\n */\nexport async function scanAndCacheParsedSessions(): Promise {\n const { files } = await multiSourceScanner.collectAllFileMetadata({\n minFileSize: 1024,\n maxFileSize: 50 * 1024 * 1024,\n });\n\n const metadata = (await Promise.all(files.map(file => multiSourceScanner.extractMetadata(file))))\n .filter(isNonNull)\n .sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n\n const parsedSessions = (await Promise.all(metadata.map(item => multiSourceScanner.parseSession(item))))\n .filter(isNonNull)\n .map(serializeParsedSession)\n .sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());\n\n await cacheParsedSessions(parsedSessions);\n return parsedSessions;\n}\n\nexport async function cacheParsedSessions(sessions: ParsedSession[]): Promise {\n const scanCacheDir = getScanCacheDir();\n const cachePath = getParsedSessionsCachePath();\n await mkdir(scanCacheDir, { recursive: true });\n await writeFile(cachePath, JSON.stringify(sessions, null, 2), 'utf-8');\n return cachePath;\n}\n\nexport async function readCachedParsedSessions(): Promise {\n try {\n const raw = await readFile(getParsedSessionsCachePath(), 'utf-8');\n return JSON.parse(raw) as ParsedSession[];\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && (error as NodeJS.ErrnoException).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n}\n","/**\n * Project Name Resolver\n *\n * Resolves project names from Claude Code's encoded directory names\n * by probing the actual filesystem. This fixes the problem where\n * `decodeProjectPath` replaces ALL hyphens with slashes, losing the\n * distinction between path separators and literal hyphens in directory names.\n *\n * Algorithm: Greedy left-to-right segment matching against the filesystem.\n *\n * @example\n * \"-Users-sungmancho-projects-youtube-enlgish-mobile\"\n * → probes ~/projects/ and finds \"youtube-enlgish-mobile\" exists\n * → returns \"youtube-enlgish-mobile\"\n *\n * @module project-name-resolver\n */\n\nimport { readdirSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { levenshteinDistance } from './levenshtein.js';\nimport { isWindowsEncodedPath } from './path-encoding.js';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Temp directory prefixes that produce meaningless project names (Unix) */\nconst UNIX_TEMP_PREFIXES = ['-private-var-', '-tmp-', '-temp-', '-var-folders-'];\n\n/** Temp directory segments for Windows (after drive letter removal) */\nconst WINDOWS_TEMP_SEGMENTS = ['appdata-local-temp', 'temp', 'tmp'];\n\n/** Container directories to strip from the resolved path (case-insensitive) */\nconst CONTAINER_DIRS = new Set([\n 'projects', 'repos', 'code', 'src', 'work', 'dev', 'workspace', 'github',\n 'development', 'coding', 'repo', 'git',\n]);\n\n/** Module-level cache: encodedDirName → resolved project name */\nconst cache = new Map();\n\n// ============================================================================\n// Core Resolution\n// ============================================================================\n\n/**\n * Check if a directory exists on the filesystem.\n */\nfunction dirExists(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Find the closest directory name in `parentPath` to `targetName` using\n * Levenshtein distance. Only returns a match if distance is exactly 1.\n */\nfunction findClosestDirectory(parentPath: string, targetName: string): string | null {\n try {\n const entries = readdirSync(parentPath, { withFileTypes: true });\n let bestMatch: string | null = null;\n let bestDistance = Infinity;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n const dist = levenshteinDistance(entry.name.toLowerCase(), targetName.toLowerCase());\n if (dist > 0 && dist <= 1 && dist < bestDistance) {\n bestDistance = dist;\n bestMatch = entry.name;\n }\n }\n\n return bestMatch;\n } catch {\n return null;\n }\n}\n\n/**\n * Resolve segments starting from `basePath` using greedy matching.\n * Tries joining progressively fewer segments until a match is found.\n */\nfunction resolveSegments(basePath: string, segments: string[]): string[] {\n if (segments.length === 0) return [];\n\n for (let len = segments.length; len >= 1; len--) {\n const candidate = segments.slice(0, len).join('-');\n const candidatePath = basePath ? join(basePath, candidate) : `/${candidate}`;\n\n if (dirExists(candidatePath)) {\n const rest = resolveSegments(candidatePath, segments.slice(len));\n return [candidate, ...rest];\n }\n }\n\n const fallbackName = segments.join('-');\n if (basePath && fallbackName.length >= 4) {\n const fuzzyMatch = findClosestDirectory(basePath, fallbackName);\n if (fuzzyMatch) return [fuzzyMatch];\n }\n\n return [fallbackName];\n}\n\n/**\n * Resolve a project name from Claude Code's encoded directory name.\n *\n * @param encodedDirName - The encoded directory name (e.g. \"-Users-sungmancho-projects-betterprompt\")\n * @returns The resolved project name (e.g. \"betterprompt\")\n */\nexport function resolveProjectName(encodedDirName: string): string {\n // Check cache first\n const cached = cache.get(encodedDirName);\n if (cached !== undefined) return cached;\n\n const result = resolveProjectNameUncached(encodedDirName);\n cache.set(encodedDirName, result);\n return result;\n}\n\nfunction resolveProjectNameUncached(encodedDirName: string): string {\n // Windows encoded path: 'C--alphacut-channel'\n if (isWindowsEncodedPath(encodedDirName)) {\n return resolveWindowsPath(encodedDirName);\n }\n\n // Unix encoded path must start with '-'\n if (!encodedDirName.startsWith('-')) {\n return encodedDirName || 'unknown';\n }\n\n const lower = encodedDirName.toLowerCase();\n for (const prefix of UNIX_TEMP_PREFIXES) {\n if (lower.startsWith(prefix)) {\n return '(temp)';\n }\n }\n\n const segments = encodedDirName.slice(1).split('-').filter(Boolean);\n if (segments.length === 0) return 'unknown';\n\n const home = homedir();\n const homeParts = home.split(/[/\\\\]/).filter(Boolean);\n\n let startSegments = segments;\n\n if (homeParts.length > 0 && segments.length > homeParts.length) {\n let matchesHome = true;\n for (let i = 0; i < homeParts.length; i++) {\n if (segments[i] !== homeParts[i]) {\n matchesHome = false;\n break;\n }\n }\n\n if (matchesHome) {\n startSegments = segments.slice(homeParts.length);\n\n if (startSegments.length === 0) return 'unknown';\n\n const resolved = resolveSegments(home, startSegments);\n return stripContainerDirs(resolved);\n }\n }\n\n const resolved = resolveSegments('', segments);\n if (resolved.length === 0) return 'unknown';\n\n return stripContainerDirs(resolved);\n}\n\n/**\n * Resolve a Windows encoded path: 'C--alphacut-channel' → project name\n */\nfunction resolveWindowsPath(encodedDirName: string): string {\n const driveLetter = encodedDirName[0];\n const rest = encodedDirName.slice(3); // skip 'X--'\n\n if (!rest) return 'unknown';\n\n const segments = rest.split('-').filter(Boolean);\n if (segments.length === 0) return 'unknown';\n\n // Check for Windows temp paths\n const lowerRest = rest.toLowerCase();\n for (const tempSeg of WINDOWS_TEMP_SEGMENTS) {\n if (lowerRest.startsWith(tempSeg)) {\n return '(temp)';\n }\n }\n\n // Try to match home directory (e.g. C:\\Users\\ehdto → homeParts = ['Users','ehdto'])\n const home = homedir();\n const homeParts = home.split(/[/\\\\]/).filter(Boolean);\n\n // Remove drive letter from homeParts if present (e.g. 'C:' from 'C:\\Users\\ehdto')\n const homePartsNoDrive = homeParts[0]?.match(/^[A-Za-z]:$/)\n ? homeParts.slice(1)\n : homeParts;\n\n if (homePartsNoDrive.length > 0 && segments.length > homePartsNoDrive.length) {\n let matchesHome = true;\n for (let i = 0; i < homePartsNoDrive.length; i++) {\n if (segments[i] !== homePartsNoDrive[i]) {\n matchesHome = false;\n break;\n }\n }\n\n if (matchesHome) {\n const afterHome = segments.slice(homePartsNoDrive.length);\n if (afterHome.length === 0) return 'unknown';\n\n const resolved = resolveSegments(home, afterHome);\n return stripContainerDirs(resolved);\n }\n }\n\n // No home match — resolve from drive root\n const driveRoot = `${driveLetter}:/`;\n const resolved = resolveSegments(driveRoot, segments);\n if (resolved.length === 0) return 'unknown';\n\n return stripContainerDirs(resolved);\n}\n\n/**\n * Strip well-known container directories from the front of resolved path parts.\n */\nfunction stripContainerDirs(parts: string[]): string {\n if (parts.length === 0) return 'unknown';\n\n let start = 0;\n while (start < parts.length - 1 && CONTAINER_DIRS.has(parts[start].toLowerCase())) {\n start++;\n }\n\n const remaining = parts.slice(start);\n return remaining.join('/') || 'unknown';\n}\n\n/**\n * Batch resolve multiple encoded directory names.\n * Leverages the internal cache for efficiency.\n */\nexport function resolveProjectNames(encodedDirNames: string[]): Map {\n const results = new Map();\n for (const name of encodedDirNames) {\n results.set(name, resolveProjectName(name));\n }\n return results;\n}\n\n/**\n * Clear the resolver cache. Useful for testing.\n */\nexport function clearResolverCache(): void {\n cache.clear();\n}\n","/**\n * Levenshtein Distance\n *\n * Simple edit distance implementation for fuzzy directory name matching.\n * Used by project-name-resolver to merge renamed project directories\n * (e.g. \"alfreadworks\" → \"alfredworks\").\n *\n * No external dependencies.\n *\n * @module levenshtein\n */\n\n/**\n * Compute the Levenshtein (edit) distance between two strings.\n * Returns the minimum number of single-character edits (insertions,\n * deletions, or substitutions) needed to transform `a` into `b`.\n */\nexport function levenshteinDistance(a: string, b: string): number {\n const m = a.length;\n const n = b.length;\n\n if (m === 0) return n;\n if (n === 0) return m;\n\n let prev = new Array(n + 1);\n let curr = new Array(n + 1);\n\n for (let j = 0; j <= n; j++) {\n prev[j] = j;\n }\n\n for (let i = 1; i <= m; i++) {\n curr[0] = i;\n for (let j = 1; j <= n; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n curr[j] = Math.min(\n prev[j] + 1,\n curr[j - 1] + 1,\n prev[j - 1] + cost\n );\n }\n [prev, curr] = [curr, prev];\n }\n\n return prev[n];\n}\n","/**\n * Cross-Platform Path Encoding/Decoding\n *\n * Single source of truth for detecting and handling Windows vs Unix\n * encoded project paths from Claude Code.\n *\n * Encoding rules:\n * - Unix: /Users/dev/app → -Users-dev-app (/ → -)\n * - Windows: C:\\alphacut → C--alphacut (C:\\ → C--, \\ → -)\n *\n * Detection:\n * - Unix paths start with '-' (from leading /)\n * - Windows paths match /^[A-Za-z]--/ (drive letter + colon-backslash)\n *\n * @module path-encoding\n */\n\n/**\n * Check if an encoded directory name represents a Windows path.\n * Pattern: single letter followed by '--' (e.g. 'C--alphacut')\n */\nexport function isWindowsEncodedPath(encoded: string): boolean {\n return /^[A-Za-z]--/.test(encoded);\n}\n\n/**\n * Decode an encoded project directory name to its original filesystem path.\n * Handles both Unix and Windows encoded formats.\n *\n * @example\n * decodeProjectPathCrossPlatform('-Users-dev-app') → '/Users/dev/app'\n * decodeProjectPathCrossPlatform('C--alphacut') → 'C:/alphacut'\n * decodeProjectPathCrossPlatform('C--alphacut-tools') → 'C:/alphacut/tools'\n */\nexport function decodeProjectPathCrossPlatform(encoded: string): string {\n if (isWindowsEncodedPath(encoded)) {\n // Windows: 'C--alphacut-tools' → 'C:/alphacut/tools'\n const driveLetter = encoded[0];\n const rest = encoded.slice(3); // skip 'X--'\n if (!rest) return `${driveLetter}:/`;\n return `${driveLetter}:/${rest.replace(/-/g, '/')}`;\n }\n\n // Unix: '-Users-dev-app' → '/Users/dev/app'\n if (encoded.startsWith('-')) {\n return encoded.replace(/-/g, '/');\n }\n\n return encoded;\n}\n","/**\n * Session Source Base Interface\n *\n * Abstract interface for different AI coding assistant session sources.\n * Enables multi-source scanning while maintaining a unified data model.\n *\n * Supported sources:\n * - claude-code: Claude Code JSONL logs (~/.claude/projects/)\n * - cursor: Cursor SQLite databases (~/.cursor/chats/)\n */\n\nimport type { ParsedSession, ParsedMessage, SessionStats, SessionSourceType } from '../session-types.js';\nimport { resolveProjectName } from '../project-name-resolver.js';\nimport { decodeProjectPathCrossPlatform } from '../path-encoding.js';\n\n// Re-export SessionSourceType for convenience\nexport type { SessionSourceType };\n\n/**\n * Lightweight file/session metadata for pre-filtering (no content read)\n */\nexport interface FileMetadata {\n filePath: string;\n fileSize: number;\n mtime: Date;\n projectDirName: string;\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Session metadata with source information\n */\nexport interface SourcedSessionMetadata {\n sessionId: string;\n projectPath: string;\n projectName: string;\n timestamp: Date;\n messageCount: number;\n durationSeconds: number;\n filePath: string;\n qualityScore?: number;\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Parsed session with source information\n */\nexport interface SourcedParsedSession extends ParsedSession {\n /** Source identifier */\n source: SessionSourceType;\n}\n\n/**\n * Configuration for session discovery\n */\nexport interface DiscoveryConfig {\n /** Minimum file size to consider (bytes) */\n minFileSize?: number;\n /** Maximum file size to consider (bytes) */\n maxFileSize?: number;\n}\n\n/**\n * Session source interface\n *\n * Each source implementation handles:\n * - Discovering session files in its specific location\n * - Parsing source-specific formats into unified ParsedSession\n * - Normalizing tool names to match Claude Code conventions\n */\nexport interface SessionSource {\n /**\n * Source identifier\n */\n readonly name: SessionSourceType;\n\n /**\n * Human-readable display name\n */\n readonly displayName: string;\n\n /**\n * Get the base directory for this source\n */\n getBaseDir(): string;\n\n /**\n * Check if this source is available (directory exists, dependencies met)\n */\n isAvailable(): Promise;\n\n /**\n * Collect lightweight file metadata for pre-filtering\n * Should not read file contents - only uses fs.stat\n */\n collectFileMetadata(config?: DiscoveryConfig): Promise;\n\n /**\n * Extract session metadata from file content\n * Used for quality scoring after pre-filtering\n */\n extractMetadata(\n filePath: string,\n content: string\n ): Promise;\n\n /**\n * Parse session content into unified format\n */\n parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise;\n\n /**\n * Read raw session content from file\n */\n readSessionContent(filePath: string): Promise;\n}\n\n/**\n * Abstract base class with common utility methods\n */\nexport abstract class BaseSessionSource implements SessionSource {\n abstract readonly name: SessionSourceType;\n abstract readonly displayName: string;\n\n abstract getBaseDir(): string;\n abstract isAvailable(): Promise;\n abstract collectFileMetadata(config?: DiscoveryConfig): Promise;\n abstract extractMetadata(\n filePath: string,\n content: string\n ): Promise;\n abstract parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise;\n abstract readSessionContent(filePath: string): Promise;\n\n /**\n * Decode project path from encoded directory name.\n * Handles both Unix (-Users-dev-app) and Windows (C--alphacut) formats.\n */\n protected decodeProjectPath(encoded: string): string {\n return decodeProjectPathCrossPlatform(encoded);\n }\n\n /**\n * Resolve project name from encoded directory name using filesystem probing\n */\n protected resolveProjectName(encodedDirName: string): string {\n return resolveProjectName(encodedDirName);\n }\n\n /**\n * Get project name from path (last segment)\n * @deprecated Use resolveProjectName() for accurate names\n */\n protected getProjectName(projectPath: string): string {\n const parts = projectPath.split(/[/\\\\]/).filter(Boolean);\n // Filter out drive letter (e.g. 'C:')\n const filtered = parts.filter(p => !/^[A-Za-z]:$/.test(p));\n return filtered[filtered.length - 1] || 'unknown';\n }\n\n /**\n * Calculate session duration in seconds\n */\n protected calculateDuration(startTime: Date, endTime: Date): number {\n return Math.floor((endTime.getTime() - startTime.getTime()) / 1000);\n }\n\n /**\n * Compute session statistics from parsed messages\n */\n protected computeStats(messages: ParsedMessage[]): SessionStats {\n let userMessageCount = 0;\n let assistantMessageCount = 0;\n let toolCallCount = 0;\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n const toolsUsed = new Set();\n\n for (const msg of messages) {\n if (msg.role === 'user') {\n userMessageCount++;\n } else {\n assistantMessageCount++;\n\n if (msg.toolCalls) {\n toolCallCount += msg.toolCalls.length;\n for (const tool of msg.toolCalls) {\n toolsUsed.add(tool.name);\n }\n }\n\n if (msg.tokenUsage) {\n totalInputTokens += msg.tokenUsage.input;\n totalOutputTokens += msg.tokenUsage.output;\n }\n }\n }\n\n return {\n userMessageCount,\n assistantMessageCount,\n toolCallCount,\n uniqueToolsUsed: Array.from(toolsUsed).sort(),\n totalInputTokens,\n totalOutputTokens,\n };\n }\n}\n","/**\n * Claude Code Session Source\n *\n * Parses Claude Code session logs stored as JSONL files in ~/.claude/projects/\n *\n * File format:\n * - Path: ~/.claude/projects/{encoded-path}/{session-uuid}.jsonl\n * - Format: JSONL (one JSON object per line)\n * - Message types: user, assistant, queue-operation, file-history-snapshot\n *\n * Path encoding: Paths are encoded by replacing '/' with '-'\n * Example: /Users/dev/myapp -> -Users-dev-myapp\n */\n\nimport { readFile, readdir, stat } from 'node:fs/promises';\nimport { join, basename } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage } from '../session-types.js';\n\n/**\n * Default Claude Code projects directory.\n * @deprecated Use {@link discoverClaudeDataDirs} from `claude-discovery.ts` for robust path resolution.\n */\nexport const CLAUDE_PROJECTS_DIR = join(homedir(), '.claude', 'projects');\n\n/**\n * Content block types in Claude messages\n */\ninterface TextBlock {\n type: 'text';\n text: string;\n}\n\ninterface ToolUseBlock {\n type: 'tool_use';\n id: string;\n name: string;\n input: Record;\n}\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string | unknown;\n is_error?: boolean;\n}\n\ntype ContentBlock = TextBlock | ToolUseBlock | ToolResultBlock;\n\n/**\n * Raw JSONL line structure\n */\ninterface JSONLLine {\n type: string;\n uuid: string;\n timestamp: string;\n version?: string;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n message: {\n role?: string;\n content: string | ContentBlock[];\n usage?: {\n input_tokens: number;\n output_tokens: number;\n };\n };\n}\n\n/**\n * Claude Code session source implementation\n */\nexport class ClaudeCodeSource extends BaseSessionSource {\n readonly name = 'claude-code' as const;\n readonly displayName = 'Claude Code';\n\n private readonly baseDir: string;\n\n constructor(baseDir?: string) {\n super();\n this.baseDir = baseDir ?? CLAUDE_PROJECTS_DIR;\n }\n\n getBaseDir(): string {\n return this.baseDir;\n }\n\n async isAvailable(): Promise {\n try {\n await stat(this.baseDir);\n return true;\n } catch {\n return false;\n }\n }\n\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const minSize = config?.minFileSize ?? 0;\n const maxSize = config?.maxFileSize ?? Infinity;\n\n const projectDirs = await this.listProjectDirs();\n const allFiles: FileMetadata[] = [];\n\n for (const dir of projectDirs) {\n const files = await this.listSessionFiles(dir);\n for (const file of files) {\n try {\n const stats = await stat(file);\n if (\n stats.isFile() &&\n stats.size >= minSize &&\n stats.size <= maxSize\n ) {\n allFiles.push({\n filePath: file,\n fileSize: stats.size,\n mtime: stats.mtime,\n projectDirName: basename(dir),\n source: this.name,\n });\n }\n } catch {\n // Skip inaccessible files\n }\n }\n }\n\n return allFiles;\n }\n\n async extractMetadata(\n filePath: string,\n content: string\n ): Promise {\n const lines = content.split('\\n').filter((l) => l.trim());\n\n if (lines.length === 0) return null;\n\n const fileName = basename(filePath, '.jsonl');\n let messageCount = 0;\n let firstTimestamp: Date | null = null;\n let lastTimestamp: Date | null = null;\n\n for (const line of lines) {\n const parsed = this.parseJSONLLine(line);\n if (parsed && (parsed.type === 'user' || parsed.type === 'assistant')) {\n messageCount++;\n const ts = new Date(parsed.timestamp);\n\n if (!firstTimestamp || ts < firstTimestamp) {\n firstTimestamp = ts;\n }\n if (!lastTimestamp || ts > lastTimestamp) {\n lastTimestamp = ts;\n }\n }\n }\n\n if (!firstTimestamp || !lastTimestamp) return null;\n\n const projectDirName = basename(join(filePath, '..'));\n const projectPath = this.decodeProjectPath(projectDirName);\n const durationSeconds = this.calculateDuration(firstTimestamp, lastTimestamp);\n\n return {\n sessionId: fileName,\n projectPath,\n projectName: this.resolveProjectName(projectDirName),\n timestamp: firstTimestamp,\n messageCount,\n durationSeconds,\n filePath,\n source: this.name,\n };\n }\n\n async parseSessionContent(\n sessionId: string,\n projectPath: string,\n projectName: string,\n content: string\n ): Promise {\n const lines = this.parseJSONLContent(content);\n\n if (lines.length === 0) return null;\n\n // Parse timestamps\n const timestamps = lines.map((m) => new Date(m.timestamp));\n const startTime = new Date(Math.min(...timestamps.map((t) => t.getTime())));\n const endTime = new Date(Math.max(...timestamps.map((t) => t.getTime())));\n const durationSeconds = this.calculateDuration(startTime, endTime);\n\n // Get version from first message\n const claudeCodeVersion = lines[0].version || 'unknown';\n\n // Collect tool results first\n const toolResultsMap = new Map();\n\n for (const line of lines) {\n if (line.type === 'user') {\n const msgContent = line.message.content;\n if (Array.isArray(msgContent)) {\n for (const block of msgContent) {\n if (block.type === 'tool_result' && 'tool_use_id' in block) {\n const resultContent =\n typeof block.content === 'string'\n ? block.content\n : JSON.stringify(block.content);\n toolResultsMap.set(block.tool_use_id, {\n content: resultContent,\n isError: block.is_error ?? false,\n });\n }\n }\n }\n }\n }\n\n // Parse messages\n const messages: ParsedMessage[] = [];\n\n for (const line of lines) {\n if (line.type === 'user') {\n const textContent = this.extractTextContent(line.message.content);\n if (!textContent.trim()) continue;\n\n messages.push({\n uuid: line.uuid,\n role: 'user',\n timestamp: new Date(line.timestamp),\n content: textContent,\n ...(line.isMeta ? { isMeta: true } : {}),\n ...(typeof line.sourceToolUseID === 'string'\n ? { sourceToolUseID: line.sourceToolUseID }\n : {}),\n ...(line.toolUseResult !== undefined ? { toolUseResult: line.toolUseResult } : {}),\n });\n } else if (line.type === 'assistant') {\n const textContent = this.extractTextContent(line.message.content);\n const toolCalls = Array.isArray(line.message.content)\n ? this.extractToolCalls(line.message.content, toolResultsMap)\n : undefined;\n\n messages.push({\n uuid: line.uuid,\n role: 'assistant',\n timestamp: new Date(line.timestamp),\n content: textContent,\n toolCalls,\n tokenUsage: line.message.usage\n ? {\n input: line.message.usage.input_tokens,\n output: line.message.usage.output_tokens,\n }\n : undefined,\n });\n }\n }\n\n if (messages.length === 0) return null;\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId,\n projectPath,\n projectName,\n startTime,\n endTime,\n durationSeconds,\n claudeCodeVersion,\n messages,\n stats,\n source: this.name,\n };\n }\n\n async readSessionContent(filePath: string): Promise {\n return readFile(filePath, 'utf-8');\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helper methods\n // ─────────────────────────────────────────────────────────────────────────\n\n private async listProjectDirs(): Promise {\n try {\n const entries = await readdir(this.baseDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(this.baseDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n }\n\n private async listSessionFiles(projectDir: string): Promise {\n try {\n const files = await readdir(projectDir);\n return files\n .filter((f) => f.endsWith('.jsonl'))\n .map((f) => join(projectDir, f));\n } catch {\n return [];\n }\n }\n\n private parseJSONLLine(line: string): JSONLLine | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n\n try {\n return JSON.parse(trimmed) as JSONLLine;\n } catch {\n return null;\n }\n }\n\n private parseJSONLContent(content: string): JSONLLine[] {\n const lines: JSONLLine[] = [];\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n\n try {\n const parsed = JSON.parse(trimmed);\n if (parsed.type === 'user' || parsed.type === 'assistant') {\n lines.push(parsed as JSONLLine);\n }\n } catch {\n // Skip invalid lines\n }\n }\n\n return lines;\n }\n\n private extractTextContent(content: string | ContentBlock[]): string {\n if (typeof content === 'string') return content;\n\n const textParts: string[] = [];\n for (const block of content) {\n if (block.type === 'text' && 'text' in block) {\n textParts.push(block.text);\n }\n }\n return textParts.join('\\n');\n }\n\n private extractToolCalls(\n content: ContentBlock[],\n toolResultsMap: Map\n ): ParsedMessage['toolCalls'] {\n const toolCalls: NonNullable = [];\n\n for (const block of content) {\n if (block.type === 'tool_use' && 'id' in block && 'name' in block) {\n const result = toolResultsMap.get(block.id);\n toolCalls.push({\n id: block.id,\n name: block.name,\n input: block.input || {},\n result: result?.content,\n isError: result?.isError,\n });\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : undefined;\n }\n}\n\n// Export singleton instance for convenience\nexport const claudeCodeSource = new ClaudeCodeSource();\n","/**\n * Cursor Session Source\n *\n * Parses Cursor AI session logs stored as SQLite databases in ~/.cursor/chats/\n *\n * File structure:\n * - Path: ~/.cursor/chats/{workspace-hash}/{session-uuid}/store.db\n * - Format: SQLite database with blobs table\n * - Schema: blobs (id TEXT PRIMARY KEY, data BLOB)\n *\n * Note: Requires better-sqlite3 package for SQLite parsing.\n * If not available, this source will report as unavailable.\n */\n\nimport { readdir, stat } from 'node:fs/promises';\nimport { join, basename, dirname } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage } from '../session-types.js';\nimport { normalizeToolName } from '../tool-mapping.js';\n\n/**\n * Default Cursor chats directory\n */\nexport const CURSOR_CHATS_DIR = join(homedir(), '.cursor', 'chats');\n\nimport { loadSqlite, type SqliteDatabase } from './sqlite-loader.js';\n\n/**\n * SQLite Database interface (from better-sqlite3)\n * Kept for internal blob row typing\n */\ntype Database = SqliteDatabase;\n\ninterface BlobRow {\n id: string;\n data: Buffer;\n}\n\n/**\n * Cursor message structure (parsed from blob)\n * Cursor stores messages in individual JSON blobs with role field\n */\ninterface CursorMessage {\n id?: string;\n role: 'user' | 'assistant' | 'tool' | 'system';\n content?: string | Array<{ type: string; [key: string]: unknown }>;\n text?: string;\n timestamp?: string;\n createdAt?: number;\n toolCalls?: CursorToolCall[];\n tool_calls?: CursorToolCall[];\n toolResults?: CursorToolResult[];\n signature?: string;\n}\n\ninterface CursorToolCall {\n id: string;\n name: string;\n type?: string;\n function?: {\n name: string;\n arguments?: string | Record;\n };\n input?: Record;\n arguments?: string | Record;\n}\n\n/**\n * Cursor tool-call content block (inside content array)\n * This is how Cursor actually stores tool calls - in the content array\n */\ninterface CursorToolCallBlock {\n type: 'tool-call';\n toolCallId: string;\n toolName: string;\n args: Record;\n}\n\n/**\n * Cursor tool-result content block (inside tool message content array)\n */\ninterface CursorToolResultBlock {\n type: 'tool-result';\n toolCallId: string;\n toolName: string;\n result: string;\n experimental_content?: Array<{ type: string; text?: string }>;\n}\n\ninterface CursorToolResult {\n tool_use_id?: string;\n toolCallId?: string;\n content: string;\n isError?: boolean;\n is_error?: boolean;\n}\n\n/**\n * Cursor conversation structure\n */\ninterface CursorConversation {\n id: string;\n messages: CursorMessage[];\n metadata?: {\n workspacePath?: string;\n projectPath?: string;\n createdAt?: number;\n updatedAt?: number;\n };\n}\n\n/**\n * Parsed blob data structure\n * Cursor blobs can contain:\n * 1. Individual messages with { role, content, ... }\n * 2. Array of messages with { messages: [...] }\n * 3. Metadata with workspace info\n */\ninterface ParsedBlobData {\n messages?: CursorMessage[];\n role?: 'user' | 'assistant' | 'tool' | 'system';\n content?: string | Array<{ type: string; [key: string]: unknown }>;\n text?: string;\n id?: string;\n timestamp?: string;\n createdAt?: number;\n signature?: string;\n toolCalls?: CursorToolCall[];\n tool_calls?: CursorToolCall[];\n metadata?: {\n workspacePath?: string;\n projectPath?: string;\n createdAt?: number;\n updatedAt?: number;\n };\n workspacePath?: string;\n projectPath?: string;\n updatedAt?: number;\n}\n\n// loadSqlite is imported from shared sqlite-loader.ts\n\n/**\n * Cursor session source implementation\n */\nexport class CursorSource extends BaseSessionSource {\n readonly name = 'cursor' as const;\n readonly displayName = 'Cursor';\n\n private readonly baseDir: string;\n\n constructor(baseDir?: string) {\n super();\n this.baseDir = baseDir ?? CURSOR_CHATS_DIR;\n }\n\n getBaseDir(): string {\n return this.baseDir;\n }\n\n async isAvailable(): Promise {\n try {\n // Check if directory exists\n await stat(this.baseDir);\n\n // Check if better-sqlite3 is available\n const Database = await loadSqlite();\n return Database !== null;\n } catch {\n return false;\n }\n }\n\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const minSize = config?.minFileSize ?? 0;\n const maxSize = config?.maxFileSize ?? Infinity;\n\n const allFiles: FileMetadata[] = [];\n\n try {\n // List workspace directories\n const workspaceDirs = await this.listWorkspaceDirs();\n\n for (const workspaceDir of workspaceDirs) {\n // List session directories within each workspace\n const sessionDirs = await this.listSessionDirs(workspaceDir);\n\n for (const sessionDir of sessionDirs) {\n const storeDbPath = join(sessionDir, 'store.db');\n\n try {\n const stats = await stat(storeDbPath);\n if (\n stats.isFile() &&\n stats.size >= minSize &&\n stats.size <= maxSize\n ) {\n // Use workspace hash as project dir name\n const workspaceHash = basename(workspaceDir);\n\n allFiles.push({\n filePath: storeDbPath,\n fileSize: stats.size,\n mtime: stats.mtime,\n projectDirName: workspaceHash,\n source: this.name,\n });\n }\n } catch {\n // Skip inaccessible files\n }\n }\n }\n } catch {\n // Directory doesn't exist or is inaccessible\n }\n\n return allFiles;\n }\n\n async extractMetadata(\n filePath: string,\n _content: string\n ): Promise {\n // For SQLite, we need to read from the database directly\n const Database = await loadSqlite();\n if (!Database) return null;\n\n try {\n const db = new Database(filePath);\n\n try {\n const conversation = this.parseConversation(db);\n if (!conversation || conversation.messages.length === 0) {\n db.close();\n return null;\n }\n\n const messages = conversation.messages.filter(\n (m) => m.role === 'user' || m.role === 'assistant'\n );\n\n if (messages.length === 0) {\n db.close();\n return null;\n }\n\n // Extract timestamps\n const timestamps = messages\n .map((m) => this.extractTimestamp(m))\n .filter((t): t is Date => t !== null);\n\n if (timestamps.length === 0) {\n db.close();\n return null;\n }\n\n const firstTimestamp = new Date(\n Math.min(...timestamps.map((t) => t.getTime()))\n );\n const lastTimestamp = new Date(\n Math.max(...timestamps.map((t) => t.getTime()))\n );\n\n // Get session ID from directory name\n const sessionDir = dirname(filePath);\n const sessionId = basename(sessionDir);\n\n // Get project path from workspace hash or metadata\n const workspaceDir = dirname(sessionDir);\n const workspaceHash = basename(workspaceDir);\n const projectPath = conversation.metadata?.workspacePath\n ?? conversation.metadata?.projectPath\n ?? this.decodeProjectPath(workspaceHash);\n\n db.close();\n\n return {\n sessionId,\n projectPath,\n projectName: this.getProjectName(projectPath),\n timestamp: firstTimestamp,\n messageCount: messages.length,\n durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp),\n filePath,\n source: this.name,\n };\n } catch {\n db.close();\n return null;\n }\n } catch {\n return null;\n }\n }\n\n async parseSessionContent(\n sessionId: string,\n projectPath: string,\n _projectName: string,\n _content: string\n ): Promise {\n // For Cursor, we need the file path instead of content\n // This method signature is for compatibility - actual parsing happens in parseFromFile\n return null;\n }\n\n /**\n * Parse session directly from SQLite file\n */\n async parseFromFile(filePath: string): Promise {\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: Database | null = null;\n try {\n db = new Database(filePath);\n\n const conversation = this.parseConversation(db);\n if (!conversation || conversation.messages.length === 0) {\n return null;\n }\n\n // Get session info\n const sessionDir = dirname(filePath);\n const sessionId = basename(sessionDir);\n const workspaceDir = dirname(sessionDir);\n const workspaceHash = basename(workspaceDir);\n const projectPath = conversation.metadata?.workspacePath\n ?? conversation.metadata?.projectPath\n ?? this.decodeProjectPath(workspaceHash);\n\n // Build tool results map for matching\n // Cursor stores tool results in 'tool' role messages with content array\n const toolResultsMap = new Map();\n for (const msg of conversation.messages) {\n if (msg.role === 'tool') {\n // Check for tool results in content array (Cursor's actual format)\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === 'tool-result') {\n const resultBlock = block as unknown as CursorToolResultBlock;\n if (resultBlock.toolCallId) {\n const resultText = resultBlock.result || '';\n const isError = resultText.toLowerCase().includes('error');\n toolResultsMap.set(resultBlock.toolCallId, {\n content: resultText,\n isError,\n toolName: resultBlock.toolName || 'unknown',\n });\n }\n }\n }\n }\n // Also check legacy format\n if (msg.toolResults) {\n for (const result of msg.toolResults) {\n const toolId = result.tool_use_id ?? result.toolCallId;\n if (toolId) {\n toolResultsMap.set(toolId, {\n content: result.content,\n isError: result.isError ?? result.is_error ?? false,\n toolName: 'unknown',\n });\n }\n }\n }\n }\n }\n\n // Parse messages\n const messages: ParsedMessage[] = [];\n\n for (const msg of conversation.messages) {\n if (msg.role === 'user') {\n // Content can be string or array (from tool messages)\n const content = typeof msg.content === 'string' ? msg.content : (msg.text ?? '');\n if (!content.trim()) continue;\n\n messages.push({\n uuid: msg.id ?? this.generateUUID(),\n role: 'user',\n timestamp: this.extractTimestamp(msg) ?? new Date(),\n content,\n });\n } else if (msg.role === 'assistant') {\n // Extract text content and tool calls from content array\n const { textContent, toolCallBlocks } = this.parseAssistantContent(msg);\n const toolCalls = this.extractToolCallsFromBlocks(toolCallBlocks, toolResultsMap);\n\n // Also check legacy toolCalls/tool_calls fields\n const legacyToolCalls = this.extractLegacyToolCalls(msg, toolResultsMap);\n const allToolCalls = toolCalls.length > 0 ? toolCalls :\n (legacyToolCalls && legacyToolCalls.length > 0 ? legacyToolCalls : undefined);\n\n messages.push({\n uuid: msg.id ?? this.generateUUID(),\n role: 'assistant',\n timestamp: this.extractTimestamp(msg) ?? new Date(),\n content: textContent,\n toolCalls: allToolCalls,\n });\n }\n }\n\n if (messages.length === 0) return null;\n\n // Calculate timestamps\n const timestamps = messages.map((m) => m.timestamp);\n const startTime = new Date(\n Math.min(...timestamps.map((t) => t.getTime()))\n );\n const endTime = new Date(\n Math.max(...timestamps.map((t) => t.getTime()))\n );\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId,\n projectPath,\n startTime,\n endTime,\n durationSeconds: this.calculateDuration(startTime, endTime),\n claudeCodeVersion: 'cursor', // Use 'cursor' as version identifier\n messages,\n stats,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async readSessionContent(filePath: string): Promise {\n // For SQLite, return empty string - use parseFromFile instead\n return '';\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helper methods\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all subdirectories within a given directory\n */\n private async listSubdirectories(parentDir: string): Promise {\n try {\n const entries = await readdir(parentDir);\n const dirs: string[] = [];\n\n for (const entry of entries) {\n const fullPath = join(parentDir, entry);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n dirs.push(fullPath);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n\n return dirs;\n } catch {\n return [];\n }\n }\n\n private async listWorkspaceDirs(): Promise {\n return this.listSubdirectories(this.baseDir);\n }\n\n private async listSessionDirs(workspaceDir: string): Promise {\n return this.listSubdirectories(workspaceDir);\n }\n\n private parseConversation(db: Database): CursorConversation | null {\n try {\n // Query blobs table\n const stmt = db.prepare('SELECT id, data FROM blobs');\n const rows = stmt.all();\n\n if (rows.length === 0) return null;\n\n const messages: CursorMessage[] = [];\n let metadata: CursorConversation['metadata'] | undefined;\n\n for (const row of rows as Array<{ id: string; data: Buffer }>) {\n try {\n // Parse blob data\n const data = this.parseBlob(row.data) as ParsedBlobData | null;\n if (!data) continue;\n\n if (data.messages && Array.isArray(data.messages)) {\n // This blob contains conversation messages array\n messages.push(...data.messages);\n } else if (data.role) {\n // This blob is a single message object\n // Convert to CursorMessage format\n const msg: CursorMessage = {\n id: data.id ?? row.id,\n role: data.role,\n // Preserve content array for assistant messages (contains tool-call blocks)\n content: data.content,\n text: data.text,\n timestamp: data.timestamp,\n createdAt: data.createdAt,\n toolCalls: data.toolCalls ?? data.tool_calls,\n signature: data.signature,\n };\n\n // Handle content array for tool messages (extract tool results)\n if (Array.isArray(data.content) && msg.role === 'tool') {\n for (const block of data.content) {\n if (block.type === 'tool-result' && typeof block.result === 'string') {\n const toolId = block.toolCallId as string | undefined;\n if (toolId) {\n msg.toolResults = msg.toolResults ?? [];\n msg.toolResults.push({\n toolCallId: toolId,\n content: block.result as string,\n isError: (block.result as string).toLowerCase().includes('error'),\n });\n }\n }\n }\n }\n\n // Skip system messages (prompts)\n if (msg.role !== 'system') {\n messages.push(msg);\n }\n }\n\n // Extract metadata if present\n if (data.metadata || data.workspacePath) {\n metadata = {\n workspacePath: data.workspacePath ?? data.metadata?.workspacePath,\n projectPath: data.projectPath ?? data.metadata?.projectPath,\n createdAt: data.createdAt ?? data.metadata?.createdAt,\n updatedAt: data.updatedAt ?? data.metadata?.updatedAt,\n };\n }\n } catch {\n // Skip unparseable blobs\n }\n }\n\n // Sort messages by timestamp\n messages.sort((a, b) => {\n const tsA = this.extractTimestamp(a);\n const tsB = this.extractTimestamp(b);\n if (!tsA || !tsB) return 0;\n return tsA.getTime() - tsB.getTime();\n });\n\n return {\n id: this.generateUUID(),\n messages,\n metadata,\n };\n } catch {\n return null;\n }\n }\n\n private parseBlob(data: Buffer): Record | null {\n // 1. Try parsing as UTF-8 JSON first\n try {\n const text = data.toString('utf-8');\n return JSON.parse(text);\n } catch {\n // Not JSON\n }\n\n // 2. Try decompressing if it looks like compressed data\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const zlib = require('zlib');\n const decompressed = zlib.inflateSync(data);\n return JSON.parse(decompressed.toString('utf-8'));\n } catch {\n // Not compressed JSON\n }\n\n // 3. Try parsing as Protobuf (Cursor uses protobuf for some blobs)\n try {\n return this.parseProtobuf(data);\n } catch {\n // Not protobuf\n }\n\n return null;\n }\n\n /**\n * Parse a varint from buffer at given offset\n * Protobuf uses variable-length encoding for integers\n */\n private parseVarint(data: Buffer, offset: number): { value: number; bytesRead: number } | null {\n if (offset >= data.length) return null;\n\n let value = 0;\n let shift = 0;\n let bytesRead = 0;\n const MAX_VARINT_BYTES = 10;\n\n while (offset + bytesRead < data.length) {\n const byte = data[offset + bytesRead]!;\n value |= (byte & 0x7f) << shift;\n bytesRead++;\n\n const isLastByte = (byte & 0x80) === 0;\n if (isLastByte) break;\n\n shift += 7;\n if (bytesRead > MAX_VARINT_BYTES) return null;\n }\n\n return { value, bytesRead };\n }\n\n /**\n * Parse Cursor protobuf blob format\n *\n * Cursor stores some messages in a simple protobuf format:\n * - field1 (wire2): text content (message body, tool results)\n * - field2 (wire2): UUID (message ID)\n * - field3 (wire2): usually empty\n * - field4 (wire2): nested JSON (full message object)\n *\n * Wire type 2 = length-delimited (string, bytes, embedded messages)\n */\n private parseProtobuf(data: Buffer): Record | null {\n const fields = new Map>();\n let offset = 0;\n\n while (offset < data.length) {\n // Read tag (varint)\n const tagVarint = this.parseVarint(data, offset);\n if (!tagVarint) break;\n\n const tag = tagVarint.value;\n const fieldNumber = tag >> 3;\n const wireType = tag & 0x07;\n offset += tagVarint.bytesRead;\n\n let fieldContent: Buffer | number;\n\n switch (wireType) {\n case 0: { // Varint\n const varint = this.parseVarint(data, offset);\n if (!varint) break;\n fieldContent = varint.value;\n offset += varint.bytesRead;\n break;\n }\n case 1: { // 64-bit fixed\n if (offset + 8 > data.length) return null;\n fieldContent = data.subarray(offset, offset + 8);\n offset += 8;\n break;\n }\n case 2: { // Length-delimited (string, bytes, nested message)\n const lengthVarint = this.parseVarint(data, offset);\n if (!lengthVarint) return null;\n const length = lengthVarint.value;\n offset += lengthVarint.bytesRead;\n if (offset + length > data.length) return null;\n fieldContent = data.subarray(offset, offset + length);\n offset += length;\n break;\n }\n case 5: { // 32-bit fixed\n if (offset + 4 > data.length) return null;\n fieldContent = data.subarray(offset, offset + 4);\n offset += 4;\n break;\n }\n default:\n // Unknown wire type, stop parsing\n return null;\n }\n\n if (!fields.has(fieldNumber)) {\n fields.set(fieldNumber, []);\n }\n fields.get(fieldNumber)!.push({ wireType, content: fieldContent! });\n }\n\n return this.mapProtobufFields(fields);\n }\n\n /**\n * Map protobuf fields to a message-like structure\n */\n private mapProtobufFields(\n fields: Map>\n ): Record | null {\n // Check for field4 first - it contains full JSON message\n const field4 = fields.get(4);\n if (field4 && field4.length > 0) {\n for (const { content } of field4) {\n if (Buffer.isBuffer(content)) {\n try {\n const jsonStr = content.toString('utf-8');\n const parsed = JSON.parse(jsonStr);\n // Return the full JSON object if it has message structure\n if (parsed && (parsed.role || parsed.messages || parsed.content)) {\n return parsed;\n }\n } catch {\n // Not JSON\n }\n }\n }\n }\n\n // Try to construct message from individual fields\n const result: Record = {};\n\n // Field 1: text content\n const field1 = fields.get(1);\n if (field1 && field1.length > 0) {\n const { content } = field1[0]!;\n if (Buffer.isBuffer(content)) {\n const text = content.toString('utf-8');\n // Check if it's printable text\n if (text.length > 0 && this.isPrintableText(text)) {\n result.text = text;\n }\n }\n }\n\n // Field 2: UUID\n const field2 = fields.get(2);\n if (field2 && field2.length > 0) {\n const { content } = field2[0]!;\n if (Buffer.isBuffer(content)) {\n const uuid = content.toString('utf-8');\n // Check if it looks like a UUID\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid)) {\n result.id = uuid;\n }\n }\n }\n\n // Only return if we found meaningful content\n if (Object.keys(result).length > 0) {\n return result;\n }\n\n return null;\n }\n\n /**\n * Check if a string is printable text (not binary garbage)\n */\n private isPrintableText(str: string): boolean {\n // Check first 100 characters for printability\n const sample = str.substring(0, 100);\n // Allow common printable characters, newlines, tabs\n return /^[\\x20-\\x7E\\n\\r\\t\\u00A0-\\uFFFF]+$/.test(sample);\n }\n\n /**\n * Convert Unix timestamp to Date, handling both seconds and milliseconds\n */\n private unixToDate(timestamp: number): Date {\n const MILLISECONDS_THRESHOLD = 1e12;\n const normalizedTs = timestamp > MILLISECONDS_THRESHOLD ? timestamp : timestamp * 1000;\n return new Date(normalizedTs);\n }\n\n private extractTimestamp(msg: CursorMessage): Date | null {\n if (msg.timestamp) return new Date(msg.timestamp);\n if (msg.createdAt) return this.unixToDate(msg.createdAt);\n return null;\n }\n\n /**\n * Parse assistant message content array to extract text and tool-call blocks\n * Cursor stores tool calls in the content array with type: 'tool-call'\n */\n private parseAssistantContent(msg: CursorMessage): {\n textContent: string;\n toolCallBlocks: CursorToolCallBlock[];\n } {\n const textParts: string[] = [];\n const toolCallBlocks: CursorToolCallBlock[] = [];\n\n if (typeof msg.content === 'string') {\n return { textContent: msg.content, toolCallBlocks: [] };\n }\n\n if (!Array.isArray(msg.content)) {\n return { textContent: msg.text ?? '', toolCallBlocks: [] };\n }\n\n for (const block of msg.content) {\n if (block.type === 'text' && typeof block.text === 'string') {\n textParts.push(block.text);\n } else if (block.type === 'reasoning' && typeof block.text === 'string') {\n // Include reasoning as part of content for analysis\n textParts.push(block.text);\n } else if (block.type === 'tool-call') {\n // Cursor's tool call format\n const toolBlock = block as unknown as CursorToolCallBlock;\n if (toolBlock.toolCallId && toolBlock.toolName) {\n toolCallBlocks.push(toolBlock);\n }\n }\n }\n\n return {\n textContent: textParts.join('\\n'),\n toolCallBlocks,\n };\n }\n\n /**\n * Extract tool calls from Cursor's tool-call blocks\n */\n private extractToolCallsFromBlocks(\n blocks: CursorToolCallBlock[],\n toolResultsMap: Map\n ): NonNullable {\n const toolCalls: NonNullable = [];\n\n for (const block of blocks) {\n const id = block.toolCallId;\n const name = block.toolName;\n const input = block.args || {};\n\n // Get result if available\n const result = toolResultsMap.get(id);\n\n // Normalize tool name to Claude Code format\n const normalizedName = normalizeToolName(name, this.name);\n\n toolCalls.push({\n id,\n name: normalizedName,\n input,\n result: result?.content,\n isError: result?.isError,\n });\n }\n\n return toolCalls;\n }\n\n /**\n * Extract tool calls from legacy toolCalls/tool_calls fields\n */\n private extractLegacyToolCalls(\n msg: CursorMessage,\n toolResultsMap: Map\n ): ParsedMessage['toolCalls'] {\n const rawCalls = msg.toolCalls ?? msg.tool_calls ?? [];\n if (rawCalls.length === 0) return undefined;\n\n const toolCalls: NonNullable = [];\n\n for (const call of rawCalls) {\n // Handle different tool call formats\n const name = call.name ?? call.function?.name ?? 'unknown';\n const id = call.id ?? this.generateUUID();\n\n // Parse input/arguments\n let input: Record = {};\n if (call.input) {\n input = call.input;\n } else if (call.arguments) {\n try {\n input = typeof call.arguments === 'string'\n ? JSON.parse(call.arguments)\n : call.arguments;\n } catch {\n input = { raw: call.arguments };\n }\n } else if (call.function?.arguments) {\n try {\n input = typeof call.function.arguments === 'string'\n ? JSON.parse(call.function.arguments)\n : call.function.arguments;\n } catch {\n input = { raw: call.function.arguments };\n }\n }\n\n // Get result if available\n const result = toolResultsMap.get(id);\n\n // Normalize tool name to Claude Code format\n const normalizedName = normalizeToolName(name, this.name);\n\n toolCalls.push({\n id,\n name: normalizedName,\n input,\n result: result?.content,\n isError: result?.isError,\n });\n }\n\n return toolCalls.length > 0 ? toolCalls : undefined;\n }\n\n private generateUUID(): string {\n return 'cursor-' + Math.random().toString(36).substring(2, 15);\n }\n}\n\n// Export singleton instance for convenience\nexport const cursorSource = new CursorSource();\n","/**\n * Tool Name Mapping\n *\n * Maps tool names from different AI coding assistants to a unified format.\n * The canonical format follows Claude Code naming conventions.\n *\n * This ensures consistent analysis regardless of which assistant\n * generated the session logs.\n */\n\nimport type { SessionSourceType } from './sources/base.js';\n\n/**\n * Mapping from source-specific tool names to canonical names\n *\n * Keys are source-specific names, values are Claude Code equivalents\n */\nexport const TOOL_MAPPING: Record> = {\n /**\n * Claude Code uses PascalCase tool names\n * No mapping needed - this is the canonical format\n */\n 'claude-code': {},\n\n /**\n * Cursor uses snake_case tool names\n * Map to Claude Code equivalents\n */\n 'cursor': {\n // File operations\n 'read_file': 'Read',\n 'write_file': 'Write',\n 'edit_file': 'Edit',\n 'list_dir': 'Bash', // ls equivalent\n 'list_directory': 'Bash',\n 'LS': 'Bash', // Cursor's PascalCase variant\n\n // Search operations\n 'grep_search': 'Grep',\n 'file_search': 'Glob',\n 'codebase_search': 'Grep',\n 'search': 'Grep',\n\n // Terminal operations\n 'run_terminal_cmd': 'Bash',\n 'run_command': 'Bash',\n 'terminal': 'Bash',\n\n // Web operations\n 'web_search': 'WebSearch',\n 'fetch_url': 'WebFetch',\n 'browser': 'WebFetch',\n\n // Code operations\n 'code_edit': 'Edit',\n 'apply_diff': 'Edit',\n 'insert_code': 'Edit',\n 'replace_code': 'Edit',\n 'ApplyPatch': 'Edit', // Cursor's PascalCase variant\n\n // Shell operations (Cursor uses 'Shell' directly)\n 'Shell': 'Bash',\n\n // Notebook operations\n 'notebook_edit': 'NotebookEdit',\n 'jupyter': 'NotebookEdit',\n\n // MCP/Plugin operations\n 'mcp_call': 'Skill',\n 'plugin': 'Skill',\n\n // Task/Agent operations\n 'spawn_agent': 'Task',\n 'delegate': 'Task',\n\n // Misc\n 'ask_user': 'AskUserQuestion',\n 'user_input': 'AskUserQuestion',\n },\n\n /**\n * Cursor Composer uses the same snake_case tool names as Cursor\n * Reuses the same mapping for consistency\n */\n 'cursor-composer': {\n // File operations\n 'read_file': 'Read',\n 'write_file': 'Write',\n 'edit_file': 'Edit',\n 'list_dir': 'Bash',\n 'list_directory': 'Bash',\n 'LS': 'Bash',\n\n // Search operations\n 'grep_search': 'Grep',\n 'file_search': 'Glob',\n 'codebase_search': 'Grep',\n 'search': 'Grep',\n\n // Terminal operations\n 'run_terminal_cmd': 'Bash',\n 'run_command': 'Bash',\n 'terminal': 'Bash',\n\n // Web operations\n 'web_search': 'WebSearch',\n 'fetch_url': 'WebFetch',\n 'browser': 'WebFetch',\n\n // Code operations\n 'code_edit': 'Edit',\n 'apply_diff': 'Edit',\n 'insert_code': 'Edit',\n 'replace_code': 'Edit',\n 'ApplyPatch': 'Edit',\n\n // Shell operations\n 'Shell': 'Bash',\n\n // Notebook operations\n 'notebook_edit': 'NotebookEdit',\n 'jupyter': 'NotebookEdit',\n\n // MCP/Plugin operations\n 'mcp_call': 'Skill',\n 'plugin': 'Skill',\n\n // Task/Agent operations\n 'spawn_agent': 'Task',\n 'delegate': 'Task',\n\n // Misc\n 'ask_user': 'AskUserQuestion',\n 'user_input': 'AskUserQuestion',\n },\n};\n\n/**\n * Normalize a tool name to its canonical form\n *\n * @param toolName - The source-specific tool name\n * @param source - The session source type\n * @returns The canonical tool name (Claude Code format)\n */\nexport function normalizeToolName(\n toolName: string,\n source: SessionSourceType\n): string {\n const mapping = TOOL_MAPPING[source];\n\n // Check if there's a direct mapping\n if (mapping && toolName in mapping) {\n return mapping[toolName];\n }\n\n // For Claude Code or unmapped tools, return as-is\n return toolName;\n}\n\n/**\n * Get all known tool names for a source\n */\nexport function getKnownTools(source: SessionSourceType): string[] {\n return Object.keys(TOOL_MAPPING[source] || {});\n}\n\n/**\n * Check if a tool name needs normalization\n */\nexport function needsNormalization(\n toolName: string,\n source: SessionSourceType\n): boolean {\n if (source === 'claude-code') return false;\n\n const mapping = TOOL_MAPPING[source];\n return mapping ? toolName in mapping : false;\n}\n\n/**\n * Canonical tool categories for analysis\n *\n * Groups tools by their primary function for pattern analysis\n */\nexport const TOOL_CATEGORIES = {\n /** File reading operations */\n READ: ['Read', 'Glob', 'Grep'],\n\n /** File modification operations */\n WRITE: ['Write', 'Edit', 'NotebookEdit'],\n\n /** Command execution */\n EXECUTE: ['Bash', 'Task'],\n\n /** External resources */\n EXTERNAL: ['WebSearch', 'WebFetch'],\n\n /** User interaction */\n INTERACTION: ['AskUserQuestion', 'Skill'],\n} as const;\n\n/**\n * Get the category for a canonical tool name\n */\nexport function getToolCategory(\n canonicalToolName: string\n): keyof typeof TOOL_CATEGORIES | 'OTHER' {\n for (const [category, tools] of Object.entries(TOOL_CATEGORIES)) {\n if ((tools as readonly string[]).includes(canonicalToolName)) {\n return category as keyof typeof TOOL_CATEGORIES;\n }\n }\n return 'OTHER';\n}\n\n/**\n * Cursor Composer numeric tool ID → tool name mapping\n *\n * Cursor Composer stores tool calls with numeric capabilityType IDs\n * in the toolFormerData.tool field. This maps known IDs to tool names\n * which can then be normalized via TOOL_MAPPING['cursor-composer'].\n *\n * Known IDs verified from real state.vscdb data (2026-02-05).\n * Unknown IDs will fall through as 'tool_{id}'.\n */\nexport const CURSOR_COMPOSER_TOOL_IDS: Record = {\n 15: 'run_terminal_cmd',\n 38: 'edit_file',\n 39: 'list_dir',\n 40: 'write_file',\n};\n\n/**\n * Resolve a Cursor Composer numeric tool ID to a canonical tool name\n */\nexport function resolveComposerToolId(numericId: number): string {\n const toolName = CURSOR_COMPOSER_TOOL_IDS[numericId];\n if (toolName) {\n return normalizeToolName(toolName, 'cursor-composer');\n }\n // Unknown ID: return a descriptive fallback\n return `tool_${numericId}`;\n}\n","/**\n * Shared SQLite Loader\n *\n * Dynamic import wrapper for better-sqlite3.\n * Used by both CursorSource and CursorComposerSource.\n */\n\n/**\n * Minimal SQLite Database interface (from better-sqlite3)\n */\nexport interface SqliteDatabase {\n prepare(sql: string): SqliteStatement;\n close(): void;\n}\n\nexport interface SqliteStatement {\n all(...params: unknown[]): unknown[];\n get(...params: unknown[]): unknown | undefined;\n}\n\nexport interface SqliteOpenOptions {\n readonly?: boolean;\n}\n\ntype DatabaseConstructorType = new (path: string, options?: SqliteOpenOptions) => SqliteDatabase;\n\nlet cachedConstructor: DatabaseConstructorType | null = null;\nlet loadAttempted = false;\n\n/**\n * Dynamically load better-sqlite3 and return the Database constructor.\n * Returns null if better-sqlite3 is not installed.\n * Caches the result after first load attempt.\n */\nexport async function loadSqlite(): Promise {\n if (loadAttempted) return cachedConstructor;\n loadAttempted = true;\n\n try {\n // @ts-ignore - better-sqlite3 may not be installed\n const sqlite = await import('better-sqlite3');\n cachedConstructor = (sqlite.default ?? sqlite) as unknown as DatabaseConstructorType;\n return cachedConstructor;\n } catch {\n return null;\n }\n}\n","/**\n * Cursor Composer Session Source\n *\n * Parses Cursor AI sessions stored in globalStorage/state.vscdb.\n * This is the modern Cursor storage format (2025+), replacing the\n * legacy ~/.cursor/chats/ directory structure.\n *\n * Storage: ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb\n * Format: SQLite database with `cursorDiskKV` table\n *\n * Key patterns:\n * - composerData:{composerId} → session metadata (JSON)\n * - bubbleId:{composerId}:{messageId} → individual messages (JSON)\n *\n * Bubble types:\n * - type 1: user message\n * - type 2: assistant message (text, tool calls, or thinking)\n *\n * Note: Requires better-sqlite3. Opens database in readonly mode\n * to avoid conflicts with running Cursor process.\n */\n\nimport { stat } from 'node:fs/promises';\nimport {\n BaseSessionSource,\n type FileMetadata,\n type SourcedSessionMetadata,\n type SourcedParsedSession,\n type DiscoveryConfig,\n} from './base.js';\nimport type { ParsedMessage, ToolCall } from '../session-types.js';\nimport { resolveComposerToolId } from '../tool-mapping.js';\nimport { getCursorGlobalStateDbPath } from './cursor-paths.js';\nimport { loadSqlite, type SqliteDatabase } from './sqlite-loader.js';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Types for Cursor Composer data structures\n// ─────────────────────────────────────────────────────────────────────────\n\n/** Row from cursorDiskKV table */\ninterface KVRow {\n key: string;\n value: string;\n}\n\n/** ComposerData metadata stored under composerData:{id} key */\ninterface ComposerData {\n composerId?: string;\n name?: string;\n unifiedMode?: string;\n createdAt?: string;\n lastUpdatedAt?: string;\n context?: unknown;\n tokenCount?: { inputTokens?: number; outputTokens?: number };\n richText?: unknown;\n workspaceProjectDir?: string;\n}\n\n/** Bubble (message) stored under bubbleId:{composerId}:{messageId} key */\ninterface ComposerBubble {\n type: number; // 1 = user, 2 = assistant\n text?: string;\n createdAt?: string;\n tokenCount?: { inputTokens?: number; outputTokens?: number };\n capabilityType?: number;\n toolFormerData?: {\n tool: number;\n toolCallId?: string;\n status?: string;\n rawArgs?: string;\n };\n thinking?: { text?: string };\n codeBlocks?: unknown[];\n workspaceProjectDir?: string;\n context?: {\n fileSelections?: unknown[];\n terminalSelections?: unknown[];\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// CursorComposerSource implementation\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Cursor Composer session source\n *\n * Reads sessions from Cursor's globalStorage/state.vscdb SQLite database.\n * Each composer session is identified by a composerId and contains\n * multiple bubbles (messages) stored as individual key-value entries.\n */\nexport class CursorComposerSource extends BaseSessionSource {\n readonly name = 'cursor-composer' as const;\n readonly displayName = 'Cursor Composer';\n\n private readonly dbPath: string;\n\n constructor(dbPath?: string) {\n super();\n this.dbPath = dbPath ?? getCursorGlobalStateDbPath();\n }\n\n getBaseDir(): string {\n return this.dbPath;\n }\n\n async isAvailable(): Promise {\n try {\n await stat(this.dbPath);\n const Database = await loadSqlite();\n return Database !== null;\n } catch {\n return false;\n }\n }\n\n /**\n * Collect file metadata for all composer sessions in state.vscdb.\n *\n * Each composerId becomes a virtual \"file\" entry with a synthetic path\n * of the form: state.vscdb#{composerId}\n */\n async collectFileMetadata(config?: DiscoveryConfig): Promise {\n const Database = await loadSqlite();\n if (!Database) return [];\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n const composerIds = this.listComposerIds(db);\n const results: FileMetadata[] = [];\n\n for (const composerId of composerIds) {\n try {\n const data = this.getComposerData(db, composerId);\n if (!data) continue;\n\n // Count bubbles to estimate session size\n const bubbleCount = this.countBubbles(db, composerId);\n // Rough size estimate: each bubble averages ~2KB\n const estimatedSize = bubbleCount * 2048;\n\n if (config?.minFileSize && estimatedSize < config.minFileSize) continue;\n if (config?.maxFileSize && estimatedSize > config.maxFileSize) continue;\n\n // Determine project path from bubble data or composerData\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbles(db, composerId)\n ?? 'unknown';\n\n // Parse timestamp\n const createdAt = data.createdAt ? new Date(data.createdAt) : new Date();\n const lastUpdated = data.lastUpdatedAt ? new Date(data.lastUpdatedAt) : createdAt;\n\n results.push({\n filePath: `${this.dbPath}#${composerId}`,\n fileSize: estimatedSize,\n mtime: lastUpdated,\n projectDirName: this.encodeProjectDir(projectDir),\n source: this.name,\n });\n } catch {\n // Skip problematic sessions\n }\n }\n\n return results;\n } catch {\n return [];\n } finally {\n db?.close();\n }\n }\n\n async extractMetadata(\n filePath: string,\n _content: string,\n ): Promise {\n const composerId = this.extractComposerId(filePath);\n if (!composerId) return null;\n\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n const data = this.getComposerData(db, composerId);\n if (!data) return null;\n\n const bubbles = this.getBubbles(db, composerId);\n const conversationBubbles = bubbles.filter(b => b.type === 1 || b.type === 2);\n if (conversationBubbles.length === 0) return null;\n\n const timestamps = conversationBubbles\n .map(b => b.createdAt ? new Date(b.createdAt) : null)\n .filter((t): t is Date => t !== null && !isNaN(t.getTime()));\n\n if (timestamps.length === 0) return null;\n\n const firstTimestamp = new Date(Math.min(...timestamps.map(t => t.getTime())));\n const lastTimestamp = new Date(Math.max(...timestamps.map(t => t.getTime())));\n\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbleList(bubbles)\n ?? 'unknown';\n\n return {\n sessionId: composerId,\n projectPath: projectDir,\n projectName: this.getProjectName(projectDir),\n timestamp: firstTimestamp,\n messageCount: conversationBubbles.length,\n durationSeconds: this.calculateDuration(firstTimestamp, lastTimestamp),\n filePath,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async parseSessionContent(\n _sessionId: string,\n _projectPath: string,\n _projectName: string,\n _content: string,\n ): Promise {\n // SQLite-based source: use parseFromFile instead\n return null;\n }\n\n /**\n * Parse a composer session directly from state.vscdb\n */\n async parseFromFile(filePath: string): Promise {\n const composerId = this.extractComposerId(filePath);\n if (!composerId) return null;\n\n const Database = await loadSqlite();\n if (!Database) return null;\n\n let db: SqliteDatabase | null = null;\n try {\n db = new Database(this.dbPath, { readonly: true });\n\n const data = this.getComposerData(db, composerId);\n if (!data) return null;\n\n const bubbles = this.getBubbles(db, composerId);\n if (bubbles.length === 0) return null;\n\n const messages = this.convertBubblesToMessages(bubbles);\n if (messages.length === 0) return null;\n\n // Extract timestamps\n const timestamps = messages.map(m => m.timestamp);\n const startTime = new Date(Math.min(...timestamps.map(t => t.getTime())));\n const endTime = new Date(Math.max(...timestamps.map(t => t.getTime())));\n\n // Determine project path\n const projectDir = data.workspaceProjectDir\n ?? this.getProjectDirFromBubbleList(bubbles)\n ?? 'unknown';\n\n const stats = this.computeStats(messages);\n\n return {\n sessionId: composerId,\n projectPath: projectDir,\n projectName: this.getProjectName(projectDir),\n startTime,\n endTime,\n durationSeconds: this.calculateDuration(startTime, endTime),\n claudeCodeVersion: 'cursor-composer',\n messages,\n stats,\n source: this.name,\n };\n } catch {\n return null;\n } finally {\n db?.close();\n }\n }\n\n async readSessionContent(_filePath: string): Promise {\n // SQLite source: return empty string\n return '';\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Database query helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all composer IDs from composerData:* keys\n */\n private listComposerIds(db: SqliteDatabase): string[] {\n const stmt = db.prepare(\n \"SELECT key FROM cursorDiskKV WHERE key LIKE 'composerData:%'\",\n );\n const rows = stmt.all() as KVRow[];\n return rows.map(r => r.key.replace('composerData:', ''));\n }\n\n /**\n * Get composer metadata for a specific composer ID\n */\n private getComposerData(db: SqliteDatabase, composerId: string): ComposerData | null {\n const stmt = db.prepare(\n \"SELECT value FROM cursorDiskKV WHERE key = ?\",\n );\n const row = stmt.get(`composerData:${composerId}`) as KVRow | undefined;\n if (!row?.value) return null;\n\n try {\n return JSON.parse(row.value) as ComposerData;\n } catch {\n return null;\n }\n }\n\n /**\n * Count bubbles for a composer session\n */\n private countBubbles(db: SqliteDatabase, composerId: string): number {\n const stmt = db.prepare(\n \"SELECT COUNT(*) as count FROM cursorDiskKV WHERE key LIKE ?\",\n );\n const row = stmt.get(`bubbleId:${composerId}:%`) as { count: number } | undefined;\n return row?.count ?? 0;\n }\n\n /**\n * Get all bubbles for a composer session, sorted by creation time\n */\n private getBubbles(db: SqliteDatabase, composerId: string): ComposerBubble[] {\n const stmt = db.prepare(\n \"SELECT key, value FROM cursorDiskKV WHERE key LIKE ?\",\n );\n const rows = stmt.all(`bubbleId:${composerId}:%`) as KVRow[];\n\n const bubbles: ComposerBubble[] = [];\n for (const row of rows) {\n try {\n const bubble = JSON.parse(row.value) as ComposerBubble;\n bubbles.push(bubble);\n } catch {\n // Skip unparseable bubbles\n }\n }\n\n // Sort by createdAt timestamp\n bubbles.sort((a, b) => {\n const timeA = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const timeB = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return timeA - timeB;\n });\n\n return bubbles;\n }\n\n /**\n * Get project directory from the first bubble that has workspaceProjectDir\n */\n private getProjectDirFromBubbles(db: SqliteDatabase, composerId: string): string | null {\n const stmt = db.prepare(\n \"SELECT value FROM cursorDiskKV WHERE key LIKE ? LIMIT 20\",\n );\n const rows = stmt.all(`bubbleId:${composerId}:%`) as KVRow[];\n\n for (const row of rows) {\n try {\n const bubble = JSON.parse(row.value) as ComposerBubble;\n if (bubble.workspaceProjectDir) {\n return bubble.workspaceProjectDir;\n }\n } catch {\n // Skip\n }\n }\n\n return null;\n }\n\n /**\n * Get project directory from already-loaded bubbles\n */\n private getProjectDirFromBubbleList(bubbles: ComposerBubble[]): string | null {\n for (const bubble of bubbles) {\n if (bubble.workspaceProjectDir) {\n return bubble.workspaceProjectDir;\n }\n }\n return null;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Bubble → ParsedMessage conversion\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Convert sorted bubbles into ParsedMessages.\n *\n * Conversion rules:\n * - User bubbles (type=1): → ParsedMessage { role: 'user' }\n * - Assistant text bubbles (type=2, has text): → ParsedMessage { role: 'assistant' }\n * - Assistant tool bubbles (type=2, has toolFormerData): → append toolCall to previous assistant message\n * - Thinking bubbles (type=2, has thinking): → skip (not relevant for analysis)\n * - Empty bubbles (type=2, no text, no tool): → skip\n *\n * Consecutive assistant tool bubbles are merged into the preceding text message.\n */\n private convertBubblesToMessages(bubbles: ComposerBubble[]): ParsedMessage[] {\n const messages: ParsedMessage[] = [];\n let currentAssistant: ParsedMessage | null = null;\n\n for (const bubble of bubbles) {\n if (bubble.type === 1) {\n // User message\n const text = bubble.text?.trim();\n if (!text) continue;\n\n // Close any pending assistant message\n currentAssistant = null;\n\n messages.push({\n uuid: this.generateUUID(),\n role: 'user',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: text,\n });\n } else if (bubble.type === 2) {\n // Assistant message — determine subtype\n const hasText = bubble.text && bubble.text.trim().length > 0;\n const hasTool = bubble.toolFormerData != null;\n const hasThinking = bubble.thinking?.text != null;\n\n if (hasThinking && !hasText && !hasTool) {\n // Thinking-only bubble: skip\n continue;\n }\n\n if (hasText) {\n // Text bubble: create new assistant message\n currentAssistant = {\n uuid: this.generateUUID(),\n role: 'assistant',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: bubble.text!.trim(),\n toolCalls: [],\n tokenUsage: this.extractTokenUsage(bubble),\n };\n messages.push(currentAssistant);\n }\n\n if (hasTool) {\n const toolCall = this.convertToolFormerData(bubble.toolFormerData!);\n if (toolCall) {\n if (currentAssistant) {\n // Append to existing assistant message\n if (!currentAssistant.toolCalls) {\n currentAssistant.toolCalls = [];\n }\n currentAssistant.toolCalls.push(toolCall);\n } else {\n // No preceding text bubble: create a new assistant message for the tool call\n currentAssistant = {\n uuid: this.generateUUID(),\n role: 'assistant',\n timestamp: bubble.createdAt ? new Date(bubble.createdAt) : new Date(),\n content: '',\n toolCalls: [toolCall],\n tokenUsage: this.extractTokenUsage(bubble),\n };\n messages.push(currentAssistant);\n }\n }\n }\n\n // Update token usage if this bubble has it (last bubble often has cumulative tokens)\n if (bubble.tokenCount && currentAssistant) {\n const usage = this.extractTokenUsage(bubble);\n if (usage && (usage.input > 0 || usage.output > 0)) {\n currentAssistant.tokenUsage = usage;\n }\n }\n }\n // type !== 1 && type !== 2: skip unknown types\n }\n\n // Clean up empty toolCalls arrays\n for (const msg of messages) {\n if (msg.toolCalls && msg.toolCalls.length === 0) {\n delete msg.toolCalls;\n }\n }\n\n return messages;\n }\n\n /**\n * Convert toolFormerData to a ToolCall\n */\n private convertToolFormerData(\n toolData: NonNullable,\n ): ToolCall | null {\n const toolName = resolveComposerToolId(toolData.tool);\n\n // Parse rawArgs into input object\n let input: Record = {};\n if (toolData.rawArgs) {\n try {\n input = JSON.parse(toolData.rawArgs);\n } catch {\n input = { raw: toolData.rawArgs };\n }\n }\n\n return {\n id: toolData.toolCallId ?? this.generateUUID(),\n name: toolName,\n input,\n };\n }\n\n /**\n * Extract token usage from bubble\n */\n private extractTokenUsage(\n bubble: ComposerBubble,\n ): { input: number; output: number } | undefined {\n if (!bubble.tokenCount) return undefined;\n const input = bubble.tokenCount.inputTokens ?? 0;\n const output = bubble.tokenCount.outputTokens ?? 0;\n if (input === 0 && output === 0) return undefined;\n return { input, output };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private: Utility helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Extract composerId from synthetic file path: state.vscdb#{composerId}\n */\n private extractComposerId(filePath: string): string | null {\n const hashIndex = filePath.indexOf('#');\n if (hashIndex === -1) return null;\n return filePath.substring(hashIndex + 1);\n }\n\n /**\n * Encode a project directory path into a safe directory name.\n * Replaces '/' with '-' for consistency with ClaudeCodeSource encoding.\n */\n private encodeProjectDir(projectDir: string): string {\n return projectDir.replace(/\\//g, '-');\n }\n\n private generateUUID(): string {\n return 'composer-' + Math.random().toString(36).substring(2, 15);\n }\n}\n\n// Export singleton instance\nexport const cursorComposerSource = new CursorComposerSource();\n","/**\n * Cursor Platform Paths\n *\n * Cross-platform path resolution for Cursor's data directories.\n * Cursor stores data in platform-specific locations following each OS's conventions.\n */\n\nimport { join } from 'node:path';\nimport { homedir, platform } from 'node:os';\n\n/**\n * Get the Cursor User data directory for the current platform\n *\n * - macOS: ~/Library/Application Support/Cursor/User\n * - Linux: ~/.config/Cursor/User\n * - Windows: %APPDATA%/Cursor/User\n */\nfunction getCursorUserDir(): string {\n const home = homedir();\n\n switch (platform()) {\n case 'darwin':\n return join(home, 'Library', 'Application Support', 'Cursor', 'User');\n case 'win32':\n return join(process.env.APPDATA ?? join(home, 'AppData', 'Roaming'), 'Cursor', 'User');\n default: // linux, freebsd, etc.\n return join(home, '.config', 'Cursor', 'User');\n }\n}\n\n/**\n * Get the globalStorage directory path\n */\nexport function getCursorGlobalStoragePath(): string {\n return join(getCursorUserDir(), 'globalStorage');\n}\n\n/**\n * Get the workspaceStorage directory path\n */\nexport function getCursorWorkspaceStoragePath(): string {\n return join(getCursorUserDir(), 'workspaceStorage');\n}\n\n/**\n * Get the full path to globalStorage/state.vscdb\n */\nexport function getCursorGlobalStateDbPath(): string {\n return join(getCursorGlobalStoragePath(), 'state.vscdb');\n}\n","/**\n * Claude Data Directory Discovery\n *\n * Discovers Claude Code data directories using a 2-step waterfall:\n * 1. Default ~/.claude/projects/ path\n * 2. Prefix glob: scan homedir for .claude* directories\n *\n * Each candidate is validated with a fingerprint check:\n * - Has a projects/ subdirectory\n * - Contains at least one encoded directory (dash-prefixed or Windows drive pattern)\n * - Contains at least one .jsonl session file\n *\n * Symlink dedup ensures the same physical directory isn't registered twice.\n */\n\nimport { readdir, stat, realpath } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { isWindowsEncodedPath } from '../path-encoding.js';\n\n/**\n * Validate that a directory looks like a Claude Code data directory.\n *\n * Fingerprint criteria:\n * 1. {dir}/projects/ exists and is a directory\n * 2. projects/ contains at least one encoded directory\n * (Unix: /Users/dev/app → -Users-dev-app, Windows: C:\\app → C--app)\n * 3. That subdirectory contains at least one .jsonl file\n */\nexport async function validateClaudeDataDir(dir: string): Promise {\n try {\n const projectsDir = join(dir, 'projects');\n const projectsStat = await stat(projectsDir);\n if (!projectsStat.isDirectory()) return false;\n\n const entries = await readdir(projectsDir);\n\n for (const entry of entries) {\n // Claude encodes paths: Unix starts with '-', Windows matches X--\n if (!entry.startsWith('-') && !isWindowsEncodedPath(entry)) continue;\n\n const entryPath = join(projectsDir, entry);\n const entryStat = await stat(entryPath);\n if (!entryStat.isDirectory()) continue;\n\n // Check for at least one .jsonl file\n const files = await readdir(entryPath);\n if (files.some((f) => f.endsWith('.jsonl'))) {\n return true;\n }\n }\n\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Discover Claude Code data directories using a 3-step waterfall.\n *\n * Returns validated projects/ directory paths (ready to pass to ClaudeCodeSource).\n * Results are deduped by resolved real path to handle symlinks.\n *\n * Waterfall:\n * 1. ~/.claude/projects/ → check existence → use if valid\n * 2. Scan homedir for .claude* directories → validate each\n */\nexport async function discoverClaudeDataDirs(): Promise {\n const discovered = new Map(); // realPath → projectsDir\n\n const addIfValid = async (dir: string): Promise => {\n try {\n const projectsDir = join(dir, 'projects');\n const resolved = await realpath(projectsDir);\n\n // Already discovered this physical path\n if (discovered.has(resolved)) return true;\n\n if (await validateClaudeDataDir(dir)) {\n discovered.set(resolved, projectsDir);\n return true;\n }\n } catch {\n // Path doesn't exist or isn't accessible\n }\n return false;\n };\n\n // Step 1: Default path ~/.claude/projects/\n const defaultDir = join(homedir(), '.claude');\n await addIfValid(defaultDir);\n\n // If default path works, return it (most common case — fast path)\n if (discovered.size > 0) {\n return Array.from(discovered.values());\n }\n\n // Step 2: Prefix glob — scan homedir for .claude* directories\n try {\n const home = homedir();\n const entries = await readdir(home);\n\n for (const entry of entries) {\n if (!entry.startsWith('.claude')) continue;\n // Skip the default .claude (already checked in step 2)\n if (entry === '.claude') continue;\n\n const candidateDir = join(home, entry);\n try {\n const s = await stat(candidateDir);\n if (s.isDirectory()) {\n await addIfValid(candidateDir);\n }\n } catch {\n // Skip inaccessible entries\n }\n }\n } catch {\n // homedir not readable — unusual but handle gracefully\n }\n\n return Array.from(discovered.values());\n}\n","/**\n * Multi-Source Session Scanner\n *\n * Unified scanner that discovers and parses sessions from multiple\n * AI coding assistant sources (Claude Code, Cursor, etc.)\n *\n * Architecture:\n * - SessionSource interface defines the contract for each source\n * - SourceRegistry maintains available sources\n * - MultiSourceScanner coordinates scanning across all sources\n */\n\n// Export types\nexport type {\n SessionSourceType,\n FileMetadata,\n SourcedSessionMetadata,\n SourcedParsedSession,\n DiscoveryConfig,\n SessionSource,\n} from './sources/base.js';\n\nexport { BaseSessionSource } from './sources/base.js';\n\n// Export source implementations\nexport { ClaudeCodeSource, claudeCodeSource, CLAUDE_PROJECTS_DIR } from './sources/claude-code.js';\nexport { CursorSource, cursorSource, CURSOR_CHATS_DIR } from './sources/cursor.js';\nexport { CursorComposerSource, cursorComposerSource } from './sources/cursor-composer.js';\nexport { discoverClaudeDataDirs, validateClaudeDataDir } from './sources/claude-discovery.js';\n\n// Export tool mapping utilities\nexport {\n TOOL_MAPPING,\n TOOL_CATEGORIES,\n CURSOR_COMPOSER_TOOL_IDS,\n normalizeToolName,\n resolveComposerToolId,\n getKnownTools,\n needsNormalization,\n getToolCategory,\n} from './tool-mapping.js';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Source Registry\n// ─────────────────────────────────────────────────────────────────────────\n\nimport type { SessionSource, FileMetadata, SourcedSessionMetadata, SourcedParsedSession } from './sources/base.js';\nimport { ClaudeCodeSource } from './sources/claude-code.js';\nimport { CursorSource } from './sources/cursor.js';\nimport { CursorComposerSource } from './sources/cursor-composer.js';\nimport { discoverClaudeDataDirs } from './sources/claude-discovery.js';\n\n/**\n * Registry of all available session sources\n *\n * Claude Code sources are lazily discovered on first getAvailable() call\n * using waterfall discovery (default path → prefix glob).\n * Cursor sources are registered synchronously in the constructor.\n */\nexport class SourceRegistry {\n private sources: SessionSource[] = [];\n private claudeInitialized = false;\n\n constructor() {\n // Claude Code sources are registered lazily via initClaudeSources()\n this.register(new CursorSource());\n this.register(new CursorComposerSource());\n }\n\n /**\n * Register a new session source\n */\n register(source: SessionSource): void {\n this.sources.push(source);\n }\n\n /**\n * Get all registered sources\n */\n getAll(): SessionSource[] {\n return [...this.sources];\n }\n\n /**\n * Get available sources (directory exists, dependencies met).\n * Lazily initializes Claude Code sources on first call.\n */\n async getAvailable(): Promise {\n if (!this.claudeInitialized) {\n await this.initClaudeSources();\n this.claudeInitialized = true;\n }\n\n const available: SessionSource[] = [];\n\n for (const source of this.sources) {\n if (await source.isAvailable()) {\n available.push(source);\n }\n }\n\n return available;\n }\n\n /**\n * Get a specific source by name\n */\n get(name: string): SessionSource | undefined {\n return this.sources.find((s) => s.name === name);\n }\n\n /**\n * Discover and register Claude Code sources from available data directories.\n */\n private async initClaudeSources(): Promise {\n const dirs = await discoverClaudeDataDirs();\n for (const dir of dirs) {\n this.register(new ClaudeCodeSource(dir));\n }\n }\n}\n\n// Default registry instance\nexport const sourceRegistry = new SourceRegistry();\n\n// ─────────────────────────────────────────────────────────────────────────\n// Multi-Source Scanner\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Configuration for multi-source scanning\n */\nexport interface MultiSourceScanConfig {\n /** Maximum candidates per source for pre-filtering */\n maxCandidatesPerSource?: number;\n /** Minimum file size to consider */\n minFileSize?: number;\n /** Maximum file size to consider */\n maxFileSize?: number;\n /** Source types to include (all if undefined) */\n includeSources?: string[];\n /** Source types to exclude */\n excludeSources?: string[];\n}\n\n/**\n * Result of multi-source file metadata collection\n */\nexport interface MultiSourceFileResult {\n files: FileMetadata[];\n sourceStats: Map;\n}\n\n/**\n * Multi-source session scanner\n *\n * Coordinates scanning across multiple session sources and\n * merges results into a unified format.\n */\nexport class MultiSourceScanner {\n constructor(private registry: SourceRegistry = sourceRegistry) {}\n\n /**\n * Collect file metadata from all available sources\n */\n async collectAllFileMetadata(\n config?: MultiSourceScanConfig\n ): Promise {\n const sources = await this.getFilteredSources(config);\n const allFiles: FileMetadata[] = [];\n const sourceStats = new Map();\n\n for (const source of sources) {\n const files = await source.collectFileMetadata({\n minFileSize: config?.minFileSize,\n maxFileSize: config?.maxFileSize,\n });\n\n allFiles.push(...files);\n sourceStats.set(source.name, files.length);\n }\n\n return { files: allFiles, sourceStats };\n }\n\n /**\n * Extract metadata for a file from the appropriate source\n */\n async extractMetadata(\n file: FileMetadata\n ): Promise {\n const source = this.registry.get(file.source);\n if (!source) return null;\n\n try {\n const content = await source.readSessionContent(file.filePath);\n return source.extractMetadata(file.filePath, content);\n } catch {\n return null;\n }\n }\n\n /**\n * Parse a session from the appropriate source\n */\n async parseSession(\n metadata: SourcedSessionMetadata\n ): Promise {\n const source = this.registry.get(metadata.source);\n if (!source) return null;\n\n try {\n // Handle SQLite-based sources (requires parseFromFile)\n if (metadata.source === 'cursor') {\n const cursorSource = source as CursorSource;\n return cursorSource.parseFromFile(metadata.filePath);\n }\n\n if (metadata.source === 'cursor-composer') {\n const composerSource = source as CursorComposerSource;\n return composerSource.parseFromFile(metadata.filePath);\n }\n\n // Standard path: read content and parse\n const content = await source.readSessionContent(metadata.filePath);\n return source.parseSessionContent(\n metadata.sessionId,\n metadata.projectPath,\n metadata.projectName,\n content\n );\n } catch {\n return null;\n }\n }\n\n /**\n * Get available source names\n */\n async getAvailableSources(): Promise {\n const sources = await this.registry.getAvailable();\n return sources.map((s) => s.name);\n }\n\n /**\n * Check source availability status.\n * Triggers lazy Claude source init if not yet done.\n */\n async getSourceStatus(): Promise> {\n // Ensure Claude sources are discovered before checking status\n const available = await this.registry.getAvailable();\n const status = new Map();\n\n for (const source of this.registry.getAll()) {\n status.set(source.name, available.some((s) => s === source));\n }\n\n return status;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Private helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n private async getFilteredSources(\n config?: MultiSourceScanConfig\n ): Promise {\n let sources = await this.registry.getAvailable();\n\n // Apply include filter\n if (config?.includeSources && config.includeSources.length > 0) {\n sources = sources.filter((s) => config.includeSources!.includes(s.name));\n }\n\n // Apply exclude filter\n if (config?.excludeSources && config.excludeSources.length > 0) {\n sources = sources.filter((s) => !config.excludeSources!.includes(s.name));\n }\n\n return sources;\n }\n}\n\n// Default scanner instance\nexport const multiSourceScanner = new MultiSourceScanner();\n\n// ─────────────────────────────────────────────────────────────────────────\n// Convenience functions\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Check if any session sources are available\n */\nexport async function hasAnySources(): Promise {\n const sources = await sourceRegistry.getAvailable();\n return sources.length > 0;\n}\n\n/**\n * Get display names for available sources\n */\nexport async function getAvailableSourceNames(): Promise<{ name: string; displayName: string }[]> {\n const sources = await sourceRegistry.getAvailable();\n return sources.map((s) => ({\n name: s.name,\n displayName: s.displayName,\n }));\n}\n","/**\n * Normalize project identifiers into canonical names.\n *\n * BetterPrompt tools filter sessions by `projectName`, but setup flows may\n * sometimes persist path-like values. This helper defensively collapses those\n * values back to the terminal project segment so filtering still works.\n */\n\nconst TEMP_PROJECT_PREFIXES = [\n 'private/tmp/',\n 'tmp/',\n 'temp/',\n 'var/folders/',\n 'private/var/',\n];\n\nfunction normalizeSlashes(value: string): string {\n return value.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '').replace(/\\/+$/, '');\n}\n\nexport function normalizeProjectNameValue(value?: string | null): string {\n const normalized = value ? normalizeSlashes(value) : '';\n if (!normalized) {\n return 'unknown';\n }\n\n const lower = normalized.toLowerCase();\n if (TEMP_PROJECT_PREFIXES.some(prefix => lower.startsWith(prefix))) {\n const segments = normalized.split('/').filter(Boolean);\n return segments[segments.length - 1] ?? normalized;\n }\n\n return normalized;\n}\n\nfunction normalizeProjectFilter(value: string): string {\n const normalized = normalizeSlashes(value);\n if (!normalized) {\n return '';\n }\n\n const segments = normalized.split('/').filter(Boolean);\n return segments[segments.length - 1] ?? normalized;\n}\n\nexport function normalizeProjectFilters(includeProjects?: string[]): string[] | undefined {\n if (!includeProjects?.length) {\n return includeProjects;\n }\n\n const normalized = Array.from(\n new Set(includeProjects.map(normalizeProjectFilter).filter(Boolean)),\n );\n\n return normalized.length ? normalized : undefined;\n}\n","/**\n * scan_sessions MCP Tool\n *\n * Scans all supported local session sources and caches fully parsed sessions.\n * Returns session metadata (count, date range, total messages).\n */\n\nimport {\n scanAndCacheParsedSessions,\n} from '../../lib/core/multi-source-session-scanner.js';\nimport { getAnalysisLifecycleState, isAnalysisPending } from '../../lib/debounce.js';\nimport { normalizeProjectFilters, normalizeProjectNameValue } from '../../lib/project-filters.js';\n\nexport const definition = {\n name: 'scan_sessions',\n description:\n 'Scan Claude Code and Cursor session logs on this machine. Returns session metadata ' +\n '(count, date range, projects, total messages, and sources). Use this as the first step before ' +\n 'running extract_data. Does not return full session content.',\n};\n\nexport async function execute(args: { includeProjects?: string[] }): Promise {\n const allSessions = await scanAndCacheParsedSessions();\n const includeProjects = normalizeProjectFilters(args.includeProjects);\n\n if (allSessions.length === 0) {\n return JSON.stringify({\n status: 'no_sessions',\n message: 'No supported Claude Code or Cursor sessions found on this machine.',\n });\n }\n\n // Build per-project session counts (always from full set)\n const allProjectNames = [...new Set(allSessions.map(s => normalizeProjectNameValue(s.projectName)))];\n const allProjects = allProjectNames.map(name => ({\n name,\n sessionCount: allSessions.filter(s => normalizeProjectNameValue(s.projectName) === name).length,\n })).sort((a, b) => b.sessionCount - a.sessionCount);\n\n // Apply project filter if provided\n const sessions = includeProjects?.length\n ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName)))\n : allSessions;\n\n if (sessions.length === 0) {\n return JSON.stringify({\n status: 'no_sessions_after_filter',\n allProjects,\n message: `No sessions match the selected projects. ${allSessions.length} total sessions available across ${allProjectNames.length} projects.`,\n });\n }\n\n // Aggregate metadata from filtered sessions\n const projectNames = [...new Set(sessions.map(s => normalizeProjectNameValue(s.projectName)))];\n const totalMessages = sessions.reduce((sum, s) => sum + s.messages.length, 0);\n const totalDuration = sessions.reduce((sum, s) => sum + s.durationSeconds, 0);\n const sourceCounts = sessions.reduce>((acc, session) => {\n const source = session.source ?? 'unknown';\n acc[source] = (acc[source] ?? 0) + 1;\n return acc;\n }, {});\n\n const earliest = sessions[sessions.length - 1]!;\n const latest = sessions[0]!;\n\n const pending = isAnalysisPending();\n const analysisState = getAnalysisLifecycleState();\n\n return JSON.stringify({\n status: 'ok',\n sessionCount: sessions.length,\n projectCount: projectNames.length,\n projects: projectNames.slice(0, 10),\n allProjects,\n sources: sourceCounts,\n totalMessages,\n totalDurationMinutes: Math.round(totalDuration / 60),\n dateRange: {\n earliest: earliest.startTime,\n latest: latest.startTime,\n },\n avgMessagesPerSession: Math.round(totalMessages / sessions.length),\n analysisState,\n analysisPending: pending,\n message: pending\n ? `Found ${sessions.length} sessions. A queued BetterPrompt analysis is pending and will be injected on the next session start. You can also run the analyze skill now.`\n : `Found ${sessions.length} sessions across ${projectNames.length} projects. Call extract_data to run Phase 1 extraction.`,\n });\n}\n","/**\n * extract_data MCP Tool\n *\n * Runs deterministic Phase 1 extraction:\n * 1. Reads parsed sessions from scan cache\n * 2. Extracts developer utterances with structural metadata\n * 3. Computes session metrics (friction, context fill, etc.)\n * 4. Runs DeterministicScorer (rubric-based scoring)\n * 5. Stores Phase1Output in ~/.betterprompt/phase1-output.json\n * 6. Creates an analysis run in the results database\n *\n * Returns summary metrics for the orchestrator.\n */\n\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { readCachedParsedSessions } from '../../lib/core/multi-source-session-scanner.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport { extractPhase1DataFromParsedSessions } from '../../lib/core/data-extractor.js';\nimport { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js';\nimport { buildReportActivitySessions } from '../../lib/evaluation-assembler.js';\nimport { createAnalysisRun } from '../../lib/results-db.js';\nimport { normalizeProjectFilters, normalizeProjectNameValue } from '../../lib/project-filters.js';\nimport {\n clearAnalysisPending,\n markAnalysisFailed,\n markAnalysisStarted,\n} from '../../lib/debounce.js';\n\nexport const definition = {\n name: 'extract_data',\n description:\n 'Run deterministic Phase 1 data extraction on scanned sessions. ' +\n 'Extracts developer utterances, computes session metrics, friction signals, ' +\n 'and deterministic scores. Must call scan_sessions first. ' +\n 'Returns summary metrics and creates an analysis run for subsequent domain analysis.',\n};\n\nexport async function execute(args: { maxSessions?: number; includeProjects?: string[] }): Promise {\n const maxSessions = args.maxSessions ?? 50;\n const includeProjects = normalizeProjectFilters(args.includeProjects);\n\n // Read cached parsed sessions from the multi-source scanner\n const allSessions = await readCachedParsedSessions();\n if (allSessions.length === 0) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No cached parsed sessions. Call scan_sessions first.',\n });\n }\n\n // Filter by project before applying recency limit\n const sessions = includeProjects?.length\n ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName)))\n : allSessions;\n\n if (sessions.length === 0) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No sessions match the selected projects. Call scan_sessions to see available projects.',\n });\n }\n\n // Clear any pending analysis flag and mark as in-progress\n clearAnalysisPending();\n markAnalysisStarted();\n\n try {\n // Limit to recent sessions (within filtered set)\n const selectedSessions = sessions.slice(0, maxSessions);\n\n // Run Phase 1 extraction\n const phase1Output = await extractPhase1DataFromParsedSessions(selectedSessions);\n\n // Run deterministic scoring\n const scores = computeDeterministicScores(phase1Output);\n const activitySessions = buildReportActivitySessions(phase1Output);\n\n // Store Phase 1 output for domain analysis skills to read\n const pluginDataDir = getPluginDataDir();\n await mkdir(pluginDataDir, { recursive: true });\n const phase1Path = join(pluginDataDir, 'phase1-output.json');\n await writeFile(phase1Path, JSON.stringify(phase1Output, null, 2), 'utf-8');\n\n // Create analysis run in results DB\n const runId = createAnalysisRun({\n metrics: phase1Output.sessionMetrics,\n scores,\n phase1Output,\n activitySessions,\n });\n\n // Store run ID for subsequent tools\n const runIdPath = join(pluginDataDir, 'current-run-id.txt');\n await writeFile(runIdPath, String(runId), 'utf-8');\n\n const metrics = phase1Output.sessionMetrics;\n\n return JSON.stringify({\n status: 'ok',\n runId,\n phase1OutputPath: phase1Path,\n metrics: {\n totalSessions: metrics.totalSessions,\n totalUtterances: metrics.totalDeveloperUtterances,\n totalMessages: metrics.totalMessages,\n avgMessagesPerSession: Math.round(metrics.avgMessagesPerSession),\n avgMessageLength: Math.round(metrics.avgDeveloperMessageLength),\n questionRatio: Math.round(metrics.questionRatio * 100),\n codeBlockRatio: Math.round(metrics.codeBlockRatio * 100),\n dateRange: metrics.dateRange,\n },\n deterministicScores: {\n aiPartnership: scores.aiPartnership,\n sessionCraft: scores.sessionCraft,\n toolMastery: scores.toolMastery,\n skillResilience: scores.skillResilience,\n sessionMastery: scores.sessionMastery,\n controlScore: scores.controlScore,\n },\n message:\n `Extracted ${metrics.totalDeveloperUtterances} utterances from ${metrics.totalSessions} sessions. ` +\n `Analysis run #${runId} created. Phase 1 data saved to ${phase1Path}. ` +\n `Ready for domain analysis.`,\n });\n } catch (error) {\n markAnalysisFailed(error);\n throw error;\n }\n}\n","/**\n * Data Extractor - Deterministic Phase 1 extraction from parsed sessions\n *\n * Accepts canonical parsed sessions and produces the plugin Phase 1 artifact.\n * Full parsed sessions are preserved on the output so downstream stages keep\n * transcript access while the extracted utterance layer remains deterministic.\n *\n * @module plugin/lib/core/data-extractor\n */\n\nimport type {\n UserUtterance,\n AIInsightBlock,\n Phase1Output,\n Phase1SessionMetrics,\n FrictionSignals,\n SessionHints,\n ParsedSession,\n} from './types.js';\nimport { CONTEXT_WINDOW_SIZE } from './types.js';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MAX_TEXT_LENGTH = 2000;\nconst SKILL_INJECTION_PREFIX = 'Base directory for this skill:';\n/** Known slash commands (prevents false positives from file paths) */\nconst KNOWN_SLASH_COMMANDS = new Set([\n 'plan', 'review', 'commit', 'compact', 'clear', 'help', 'init',\n 'sisyphus', 'orchestrator', 'ultrawork', 'ralph-loop', 'deepsearch',\n 'analyze', 'prometheus', 'cancel-ralph', 'update',\n 'bug', 'config', 'cost', 'doctor', 'login', 'logout', 'memory',\n 'model', 'permissions', 'project', 'status', 'terminal-setup',\n 'vim', 'fast',\n]);\n\n/** Patterns for /clear command detection */\nconst CLEAR_COMMAND_PATTERNS = [\n /^\\/clear\\b/m,\n /\\/clear<\\/command-name>/,\n];\n\n/** Insight block regex */\nconst INSIGHT_BLOCK_PATTERN = /`★\\s*Insight\\s*─+`\\n([\\s\\S]*?)\\n`─+`/g;\n\n// ============================================================================\n// System Tag Stripping\n// ============================================================================\n\n/**\n * Strip system-injected tags from user message content.\n * These tags are added by Claude Code, not the developer.\n */\nfunction stripSystemTags(content: string): string {\n return content\n // Remove system-reminder tags\n .replace(/[\\s\\S]*?<\\/system-reminder>/g, '')\n // Remove command-name tags but keep the text\n .replace(/([\\s\\S]*?)<\\/command-name>/g, '$1')\n // Remove EXTREMELY_IMPORTANT tags\n .replace(/[\\s\\S]*?<\\/EXTREMELY_IMPORTANT>/g, '')\n // Remove tool result formatting\n .replace(/[\\s\\S]*?<\\/tool_result>/g, '')\n // Collapse excessive whitespace\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\n// ============================================================================\n// Text Utilities\n// ============================================================================\n\nfunction truncateText(text: string, maxLen: number): string {\n if (text.length <= maxLen) return text;\n return text.slice(0, maxLen) + '... [truncated]';\n}\n\nfunction countWords(text: string): number {\n const cleaned = text.replace(/```[\\s\\S]*?```/g, '').trim();\n if (!cleaned) return 0;\n return cleaned.split(/\\s+/).filter(w => w.length > 0).length;\n}\n\nfunction hasCodeBlock(text: string): boolean {\n return /```/.test(text);\n}\n\nfunction hasQuestion(text: string): boolean {\n return /\\?/.test(text);\n}\n\nfunction isContinuation(text: string): boolean {\n const lower = text.toLowerCase().trim();\n return /^(continue|go ahead|proceed|keep going|next|yes|ok|okay|sure|do it|let's go)/i.test(lower);\n}\n\nfunction isClearCommand(content: string): boolean {\n return CLEAR_COMMAND_PATTERNS.some(p => p.test(content));\n}\n\n// ============================================================================\n// Slash Command Extraction\n// ============================================================================\n\nfunction extractSlashCommands(rawContent: string): string[] {\n const commands: string[] = [];\n\n // XML-tagged commands (always trusted)\n const xmlPattern = /\\/([\\w-]+)<\\/command-name>/g;\n let match;\n while ((match = xmlPattern.exec(rawContent)) !== null) {\n commands.push(match[1]!);\n }\n\n // Plain-text `/xxx` at line start (whitelist-matched only)\n const plainPattern = /^\\/(\\w[\\w-]*)/gm;\n while ((match = plainPattern.exec(rawContent)) !== null) {\n const cmd = match[1]!;\n if (KNOWN_SLASH_COMMANDS.has(cmd)) {\n commands.push(cmd);\n }\n }\n\n return commands;\n}\n\n// ============================================================================\n// Content Extraction Helpers\n// ============================================================================\n\n/** Extract text content from JSONL message content field */\nfunction extractTextFromContent(content: string | Array<{ type: string; text?: string }>): string {\n if (typeof content === 'string') return content;\n return content\n .filter((block): block is { type: 'text'; text: string } => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n}\n\n/** Check if assistant response had errors (tool_result with is_error) */\nfunction assistantHadError(\n assistantContent: Array<{ type: string; is_error?: boolean }>,\n): boolean {\n return assistantContent.some(block => block.type === 'tool_result' && block.is_error);\n}\n\n/** Get tool call names from assistant response */\nfunction extractToolCallNames(\n assistantContent: Array<{ type: string; name?: string }>,\n): string[] {\n return assistantContent\n .filter((block): block is { type: 'tool_use'; name: string } => block.type === 'tool_use')\n .map(block => block.name);\n}\n\n// ============================================================================\n// Friction Signal Detection\n// ============================================================================\n\nconst REJECTION_PATTERNS = [\n /\\bno\\b/i, /\\bwrong\\b/i, /\\bincorrect\\b/i, /\\btry again\\b/i,\n /\\bthat's not right\\b/i, /\\bnot what i/i, /\\bdon't\\b.*\\bthat\\b/i,\n /\\bundo\\b/i, /\\brevert\\b/i,\n];\n\nconst FRUSTRATION_PATTERNS = [\n /\\bagain\\b/i, /\\bstill not working\\b/i, /\\bsame error\\b/i,\n /\\bfrustrat/i, /\\bugh\\b/i, /\\bwhy (won't|doesn't|isn't)/i,\n];\n\nfunction isRejection(text: string): boolean {\n const lower = text.toLowerCase();\n if (lower.length > 200) return false;\n return REJECTION_PATTERNS.some(p => p.test(lower));\n}\n\nfunction isFrustration(text: string): boolean {\n return FRUSTRATION_PATTERNS.some(p => p.test(text));\n}\n\n// ============================================================================\n// Session Processing\n// ============================================================================\n\ninterface RawSessionData {\n sessionId: string;\n messages: Array<{\n role: 'user' | 'assistant';\n rawContent: string;\n content: Array<{ type: string; text?: string; name?: string; is_error?: boolean; id?: string; tool_use_id?: string; content?: string | unknown[] }>;\n timestamp: Date;\n isMeta?: boolean;\n sourceToolUseID?: string;\n toolUseResult?: unknown;\n tokenUsage?: { input: number; output: number };\n }>;\n}\n\nfunction isAnalyzableUserMessage(\n message: RawSessionData['messages'][number],\n): boolean {\n const isSkillInjectedPrompt = message.rawContent.trim().startsWith(SKILL_INJECTION_PREFIX);\n\n return message.role === 'user'\n && !message.isMeta\n && typeof message.sourceToolUseID !== 'string'\n && message.toolUseResult === undefined\n && !isSkillInjectedPrompt;\n}\n\nfunction toRawSessionData(session: ParsedSession): RawSessionData {\n return {\n sessionId: session.sessionId,\n messages: session.messages.map(message => {\n if (message.role === 'user') {\n return {\n role: 'user',\n rawContent: message.content,\n content: [{ type: 'text', text: message.content }],\n timestamp: new Date(message.timestamp),\n ...(message.isMeta ? { isMeta: true } : {}),\n ...(typeof message.sourceToolUseID === 'string'\n ? { sourceToolUseID: message.sourceToolUseID }\n : {}),\n ...(message.toolUseResult !== undefined ? { toolUseResult: message.toolUseResult } : {}),\n };\n }\n\n const content: RawSessionData['messages'][0]['content'] = [];\n if (message.content) {\n content.push({ type: 'text', text: message.content });\n }\n for (const toolCall of message.toolCalls ?? []) {\n content.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n });\n if (toolCall.result !== undefined) {\n content.push({\n type: 'tool_result',\n tool_use_id: toolCall.id,\n content: toolCall.result,\n is_error: toolCall.isError,\n });\n }\n }\n\n return {\n role: 'assistant',\n rawContent: message.content,\n content,\n timestamp: new Date(message.timestamp),\n tokenUsage: message.tokenUsage,\n };\n }),\n };\n}\n\n/** Extract utterances from a single session */\nfunction extractFromSession(session: RawSessionData): {\n utterances: UserUtterance[];\n slashCommands: string[];\n insightBlocks: AIInsightBlock[];\n} {\n const utterances: UserUtterance[] = [];\n const slashCommands: string[] = [];\n const insightBlocks: AIInsightBlock[] = [];\n const seenKeys = new Set();\n\n let precedingAssistantContent: RawSessionData['messages'][0]['content'] | null = null;\n\n for (let i = 0; i < session.messages.length; i++) {\n const message = session.messages[i]!;\n\n if (message.role === 'user') {\n if (!isAnalyzableUserMessage(message)) {\n precedingAssistantContent = null;\n continue;\n }\n\n // Extract slash commands from raw content BEFORE stripping\n const rawText = extractTextFromContent(\n message.content as unknown as string | Array<{ type: string; text?: string }>,\n );\n slashCommands.push(...extractSlashCommands(message.rawContent || rawText));\n\n // Skip /clear commands\n if (isClearCommand(rawText)) {\n precedingAssistantContent = null;\n continue;\n }\n\n // Strip system tags\n const cleanText = stripSystemTags(rawText);\n if (!cleanText.trim()) continue;\n\n // Deduplication\n const dedupeKey = `${message.timestamp.toISOString()}|${cleanText.slice(0, 200)}`;\n if (seenKeys.has(dedupeKey)) continue;\n seenKeys.add(dedupeKey);\n\n const text = truncateText(cleanText, MAX_TEXT_LENGTH);\n const id = `${session.sessionId}_${i}`;\n\n utterances.push({\n id,\n text,\n timestamp: message.timestamp.toISOString(),\n sessionId: session.sessionId,\n turnIndex: i,\n characterCount: cleanText.length,\n wordCount: countWords(cleanText),\n hasCodeBlock: hasCodeBlock(cleanText),\n hasQuestion: hasQuestion(cleanText),\n isSessionStart: utterances.length === 0,\n isContinuation: isContinuation(cleanText),\n precedingAIToolCalls: precedingAssistantContent\n ? extractToolCallNames(precedingAssistantContent)\n : undefined,\n precedingAIHadError: precedingAssistantContent\n ? assistantHadError(precedingAssistantContent)\n : undefined,\n });\n\n precedingAssistantContent = null;\n } else if (message.role === 'assistant') {\n precedingAssistantContent = message.content;\n\n // Extract insight blocks from assistant text\n const assistantText = message.content\n .filter((b): b is { type: 'text'; text: string } => b.type === 'text')\n .map(b => b.text)\n .join('\\n');\n\n let match;\n const pattern = new RegExp(INSIGHT_BLOCK_PATTERN.source, 'g');\n while ((match = pattern.exec(assistantText)) !== null) {\n const content = match[1]!.trim().slice(0, 500);\n if (content) {\n insightBlocks.push({\n sessionId: session.sessionId,\n turnIndex: i,\n content,\n triggeringUtteranceId: utterances.length > 0\n ? utterances[utterances.length - 1]!.id\n : undefined,\n });\n }\n }\n }\n }\n\n return { utterances, slashCommands, insightBlocks };\n}\n\n// ============================================================================\n// Metrics Computation\n// ============================================================================\n\nfunction computeFrictionSignals(\n sessions: RawSessionData[],\n utterances: UserUtterance[],\n): FrictionSignals {\n let toolFailureCount = 0;\n let userRejectionSignals = 0;\n let excessiveIterationSessions = 0;\n let contextOverflowSessions = 0;\n let frustrationExpressionCount = 0;\n let bareRetryAfterErrorCount = 0;\n let errorChainMaxLength = 0;\n\n // Count tool failures and context overflows per session\n for (const session of sessions) {\n let sessionUserMessages = 0;\n let sessionHadOverflow = false;\n let currentErrorChain = 0;\n\n for (const message of session.messages) {\n if (isAnalyzableUserMessage(message)) {\n sessionUserMessages++;\n } else if (message.role === 'assistant') {\n // Count tool failures\n for (const block of message.content) {\n if (block.type === 'tool_result' && block.is_error) {\n toolFailureCount++;\n currentErrorChain++;\n errorChainMaxLength = Math.max(errorChainMaxLength, currentErrorChain);\n }\n }\n // Check context overflow\n if (message.tokenUsage && message.tokenUsage.input / CONTEXT_WINDOW_SIZE >= 0.9) {\n sessionHadOverflow = true;\n }\n }\n // Reset error chain on non-error\n if (message.role === 'assistant') {\n const hasError = message.content.some(b => b.type === 'tool_result' && b.is_error);\n if (!hasError) currentErrorChain = 0;\n }\n }\n\n if (sessionUserMessages >= 10) excessiveIterationSessions++;\n if (sessionHadOverflow) contextOverflowSessions++;\n }\n\n // Count rejection/frustration from utterances\n for (const u of utterances) {\n if (isRejection(u.text)) userRejectionSignals++;\n if (isFrustration(u.text)) frustrationExpressionCount++;\n // Bare retry: short message after error\n if (u.precedingAIHadError && u.wordCount < 10) {\n bareRetryAfterErrorCount++;\n }\n }\n\n // Count repeated tool error patterns (simplified fingerprinting)\n const errorPatterns = new Map();\n for (const session of sessions) {\n for (const message of session.messages) {\n if (message.role === 'assistant') {\n for (const block of message.content) {\n if (block.type === 'tool_result' && block.is_error) {\n const errText = typeof block.content === 'string' ? block.content : '';\n // Fingerprint: remove paths and timestamps\n const fingerprint = errText\n .replace(/\\/[\\w/.-]+/g, '')\n .replace(/\\d{4}-\\d{2}-\\d{2}/g, '')\n .slice(0, 100);\n errorPatterns.set(fingerprint, (errorPatterns.get(fingerprint) ?? 0) + 1);\n }\n }\n }\n }\n }\n const repeatedToolErrorPatterns = [...errorPatterns.values()].filter(c => c >= 2).length;\n\n return {\n toolFailureCount,\n userRejectionSignals,\n excessiveIterationSessions,\n contextOverflowSessions,\n frustrationExpressionCount,\n repeatedToolErrorPatterns,\n bareRetryAfterErrorCount,\n errorChainMaxLength,\n };\n}\n\nfunction computeSessionHints(sessions: RawSessionData[]): SessionHints {\n let totalUserTurns = 0;\n let shortSessions = 0;\n let mediumSessions = 0;\n let longSessions = 0;\n\n for (const session of sessions) {\n const userTurns = session.messages.filter(isAnalyzableUserMessage).length;\n totalUserTurns += userTurns;\n\n if (userTurns <= 3) shortSessions++;\n else if (userTurns <= 10) mediumSessions++;\n else longSessions++;\n }\n\n return {\n avgTurnsPerSession: sessions.length > 0 ? totalUserTurns / sessions.length : 0,\n shortSessions,\n mediumSessions,\n longSessions,\n };\n}\n\nfunction computeContextFillMetrics(\n sessions: RawSessionData[],\n): {\n avgContextFillPercent?: number;\n maxContextFillPercent?: number;\n contextFillExceeded90Count?: number;\n} {\n const fillPercentages: number[] = [];\n\n for (const session of sessions) {\n for (const message of session.messages) {\n if (message.role === 'assistant' && message.tokenUsage?.input) {\n fillPercentages.push((message.tokenUsage.input / CONTEXT_WINDOW_SIZE) * 100);\n }\n }\n }\n\n if (fillPercentages.length === 0) return {};\n\n const avgFill = fillPercentages.reduce((sum, p) => sum + p, 0) / fillPercentages.length;\n const maxFill = Math.max(...fillPercentages);\n\n return {\n avgContextFillPercent: Math.round(avgFill * 10) / 10,\n maxContextFillPercent: Math.round(maxFill * 10) / 10,\n contextFillExceeded90Count: fillPercentages.filter(p => p >= 90).length,\n };\n}\n\n/**\n * Extract Phase 1 output from parsed sessions.\n */\nexport async function extractPhase1DataFromParsedSessions(\n sessions: ParsedSession[],\n): Promise {\n const allUtterances: UserUtterance[] = [];\n const allSlashCommands: string[] = [];\n const allInsightBlocks: AIInsightBlock[] = [];\n const allSessions: RawSessionData[] = [];\n if (sessions.length === 0) {\n throw new Error('No parsed sessions available for Phase 1 extraction.');\n }\n\n for (const parsedSession of sessions) {\n const session = toRawSessionData(parsedSession);\n allSessions.push(session);\n\n const { utterances, slashCommands, insightBlocks } = extractFromSession(session);\n allUtterances.push(...utterances);\n allSlashCommands.push(...slashCommands);\n allInsightBlocks.push(...insightBlocks);\n }\n\n // Compute metrics\n const totalMessages = allSessions.reduce((sum, s) => sum + s.messages.length, 0);\n const totalUserMessages = allSessions.reduce(\n (sum, s) => sum + s.messages.filter(isAnalyzableUserMessage).length, 0,\n );\n const questionCount = allUtterances.filter(u => u.hasQuestion).length;\n const codeBlockCount = allUtterances.filter(u => u.hasCodeBlock).length;\n\n const slashCommandCounts: Record = {};\n for (const cmd of allSlashCommands) {\n slashCommandCounts[cmd] = (slashCommandCounts[cmd] ?? 0) + 1;\n }\n\n const timestamps = allUtterances.map(u => u.timestamp).sort();\n const contextFillMetrics = computeContextFillMetrics(allSessions);\n const frictionSignals = computeFrictionSignals(allSessions, allUtterances);\n const sessionHints = computeSessionHints(allSessions);\n\n const sessionMetrics: Phase1SessionMetrics = {\n totalSessions: allSessions.length,\n totalMessages,\n totalDeveloperUtterances: allUtterances.length,\n totalAIResponses: totalMessages - totalUserMessages,\n avgMessagesPerSession: allSessions.length > 0 ? totalMessages / allSessions.length : 0,\n avgDeveloperMessageLength: allUtterances.length > 0\n ? allUtterances.reduce((sum, u) => sum + u.characterCount, 0) / allUtterances.length\n : 0,\n questionRatio: allUtterances.length > 0 ? questionCount / allUtterances.length : 0,\n codeBlockRatio: allUtterances.length > 0 ? codeBlockCount / allUtterances.length : 0,\n dateRange: {\n earliest: timestamps[0] ?? new Date().toISOString(),\n latest: timestamps[timestamps.length - 1] ?? new Date().toISOString(),\n },\n ...(Object.keys(slashCommandCounts).length > 0 ? { slashCommandCounts } : {}),\n ...contextFillMetrics,\n frictionSignals,\n sessionHints,\n ...(allInsightBlocks.length > 0 ? { aiInsightBlockCount: allInsightBlocks.length } : {}),\n };\n\n // Build per-session activity metadata for Phase 1.5/2 stages\n const activitySessions = allSessions.map((session, idx) => {\n const parsedSession = sessions[idx]!;\n const userMessages = session.messages.filter(isAnalyzableUserMessage);\n const assistantMessages = session.messages.filter(m => m.role === 'assistant');\n const sessionTimestamps = session.messages.map(m => m.timestamp.getTime()).sort();\n const startTime = sessionTimestamps.length > 0\n ? new Date(sessionTimestamps[0]).toISOString()\n : new Date().toISOString();\n const endTime = sessionTimestamps.length > 0\n ? sessionTimestamps[sessionTimestamps.length - 1]\n : Date.now();\n const durationSeconds = sessionTimestamps.length > 1\n ? (endTime - sessionTimestamps[0]) / 1000\n : parsedSession.durationSeconds;\n\n const totalInputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.input ?? 0), 0);\n const totalOutputTokens = session.messages.reduce((sum, m) => sum + (m.tokenUsage?.output ?? 0), 0);\n\n const firstUserMsg = userMessages[0]?.rawContent?.slice(0, 200) ?? '';\n\n return {\n sessionId: session.sessionId,\n projectName: parsedSession.projectName ?? 'unknown',\n ...(parsedSession.projectPath ? { projectPath: parsedSession.projectPath } : {}),\n startTime,\n durationSeconds: Math.round(durationSeconds),\n messageCount: session.messages.length,\n userMessageCount: userMessages.length,\n assistantMessageCount: assistantMessages.length,\n totalInputTokens,\n totalOutputTokens,\n ...(firstUserMsg ? { firstUserMessage: firstUserMsg } : {}),\n };\n });\n\n return {\n developerUtterances: allUtterances,\n sessionMetrics,\n ...(allInsightBlocks.length > 0 ? { aiInsightBlocks: allInsightBlocks } : {}),\n activitySessions,\n sessions,\n };\n}\n","/**\n * save_domain_results MCP Tool\n *\n * Accepts structured analysis results for a specific domain.\n * Validates the input against shared schemas (including domain-specific\n * typed data) and stores it in the results database.\n *\n * Includes:\n * - Domain-specific Zod validation for the `data` field (Fix 2)\n * - Description quality gates matching server-side BaseWorker checks (Fix 3)\n *\n * Called by domain analysis skills after the host LLM completes analysis.\n */\n\nimport { z } from 'zod';\nimport {\n EvidenceSchema as SharedEvidenceSchema,\n DomainStrengthSchema,\n DomainGrowthAreaSchema,\n DOMAIN_NAMES,\n // Domain-specific worker output schemas\n PlanningHabitSchema,\n CriticalThinkingMomentSchema,\n VerificationBehaviorSchema,\n DetectedAntiPatternSchema,\n MultitaskingPatternSchema,\n CommunicationPatternSchema,\n SignatureQuoteSchema,\n} from '@betterprompt/shared';\nimport { saveDomainResult, getCurrentRunId } from '../../lib/results-db.js';\nimport { recordStageStatus } from '../../lib/stage-db.js';\nimport type { DomainResult } from '../../lib/core/types.js';\n\nexport const definition = {\n name: 'save_domain_results',\n description:\n 'Save structured analysis results for a specific domain. ' +\n 'Called after analyzing a domain (aiPartnership, sessionCraft, toolMastery, ' +\n 'skillResilience, sessionMastery). ' +\n 'Input must include domain name, overall score, strengths, and growth areas.',\n};\n\n// Re-export shared schemas for backward compatibility\nexport const EvidenceSchema = SharedEvidenceSchema;\nexport const StrengthSchema = DomainStrengthSchema;\nexport const GrowthAreaSchema = DomainGrowthAreaSchema;\n\nfunction extractDomainName(args: Record): string | null {\n return typeof args.domain === 'string' ? args.domain : null;\n}\n\nfunction parseStringifiedInput(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n\n const trimmed = value.trim();\n if (!trimmed) {\n return value;\n }\n\n if ((trimmed.startsWith('{') && trimmed.endsWith('}'))\n || (trimmed.startsWith('[') && trimmed.endsWith(']'))) {\n try {\n return JSON.parse(trimmed);\n } catch {\n return value;\n }\n }\n\n if (/^-?\\d+(?:\\.\\d+)?$/.test(trimmed)) {\n const numericValue = Number(trimmed);\n if (Number.isFinite(numericValue)) {\n return numericValue;\n }\n }\n\n return value;\n}\n\nfunction normalizeDomainResultArgs(args: Record): Record {\n return {\n ...args,\n overallScore: parseStringifiedInput(args.overallScore),\n confidenceScore: parseStringifiedInput(args.confidenceScore),\n strengths: parseStringifiedInput(args.strengths),\n growthAreas: parseStringifiedInput(args.growthAreas),\n data: parseStringifiedInput(args.data),\n };\n}\n\n// ============================================================================\n// Domain-Specific Data Schemas (Fix 2)\n//\n// These enforce the same structures that Gemini's responseJsonSchema enforces\n// at generation time on the server. Without these, the `data` field accepts\n// literally anything — including empty objects.\n// ============================================================================\n\n/**\n * ThinkingQuality data: validates structure without strict enum enforcement.\n * The host LLM may produce slight field variations; assembly normalizes later.\n * Key requirement: planningHabits[] and verificationBehavior must exist as objects.\n */\nconst ThinkingQualityDataSchema = z.object({\n planningHabits: z.union([\n // Canonical array format: [{ type, frequency, examples, effectiveness }]\n z.array(z.object({\n type: z.string(),\n frequency: z.string().optional(),\n examples: z.array(z.string()).optional(),\n effectiveness: z.string().optional(),\n }).passthrough()).min(1),\n // Plugin summary format: { dominantType, typeDistribution, ... }\n z.object({\n dominantType: z.string().optional(),\n typeDistribution: z.record(z.string(), z.number()).optional(),\n }).passthrough(),\n ]),\n verificationBehavior: z.object({\n level: z.string(),\n }).passthrough(),\n criticalThinkingMoments: z.array(z.object({\n type: z.string(),\n quote: z.string().optional(),\n result: z.string().optional(),\n utteranceId: z.string().optional(),\n sessionId: z.string().optional(),\n }).passthrough()),\n verificationAntiPatterns: z.array(z.object({\n type: z.string(),\n frequency: z.number().optional(),\n severity: z.string().optional(),\n examples: z.array(z.unknown()).optional(),\n evidence: z.array(z.unknown()).optional(),\n improvement: z.string().optional(),\n }).passthrough()),\n planQualityScore: z.number().min(0).max(100).optional(),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n}).passthrough();\n\n/**\n * CommunicationPatterns data: accepts both canonical and plugin field names.\n * The assembly layer normalizes patternName/patternId/title and frequency formats.\n */\nconst CommunicationPatternsDataSchema = z.object({\n communicationPatterns: z.array(z.object({\n // Accept any of: patternName (canonical), patternId, title (plugin)\n patternName: z.string().optional(),\n patternId: z.string().optional(),\n title: z.string().optional(),\n category: z.string().optional(),\n description: z.string().optional(),\n // Frequency: accept both enum string and number\n frequency: z.union([z.string(), z.number()]).optional(),\n effectiveness: z.string().optional(),\n tip: z.string().optional(),\n // Examples: accept both canonical and plugin evidence format\n examples: z.array(z.unknown()).optional(),\n evidence: z.array(z.unknown()).optional(),\n }).passthrough()).min(1),\n signatureQuotes: z.array(z.object({\n utteranceId: z.string(),\n }).passthrough()).optional(),\n structuralDistribution: z.record(z.string(), z.number()).optional(),\n contextDistribution: z.record(z.string(), z.number()).optional(),\n questioningDistribution: z.record(z.string(), z.number()).optional(),\n}).passthrough();\n\n/**\n * LearningBehavior data: requires at least one of the primary arrays.\n * Accepts both canonical field names (topic, questionCount) and plugin variants (area, severity).\n */\nconst LearningBehaviorDataSchema = z.object({\n knowledgeGaps: z.array(z.object({\n // Accept both canonical (topic) and plugin (area) field names\n area: z.string().optional(),\n topic: z.string().optional(),\n severity: z.string().optional(),\n trend: z.string().optional(),\n evidence: z.array(z.unknown()).optional(),\n description: z.string().optional(),\n questionCount: z.number().optional(),\n depth: z.string().optional(),\n example: z.string().optional(),\n }).passthrough()).optional(),\n repeatedMistakePatterns: z.array(z.object({\n category: z.string(),\n description: z.string().optional(),\n mistakeType: z.string().optional(),\n // Accept both canonical (occurrenceCount) and plugin (frequency)\n frequency: z.number().optional(),\n occurrenceCount: z.number().optional(),\n sessionsAffected: z.array(z.string()).optional(),\n exampleUtteranceIds: z.array(z.string()).optional(),\n evidence: z.array(z.unknown()).optional(),\n recommendation: z.string().optional(),\n }).passthrough()).optional(),\n learningProgress: z.array(z.object({\n area: z.string().optional(),\n topic: z.string().optional(),\n startLevel: z.string().optional(),\n currentLevel: z.string().optional(),\n evidence: z.unknown().optional(),\n milestones: z.array(z.string()).optional(),\n description: z.string().optional(),\n }).passthrough()).optional(),\n recommendedResources: z.array(z.object({\n name: z.string().optional(),\n topic: z.string().optional(),\n url: z.string().optional(),\n resourceType: z.string().optional(),\n targetGap: z.string().optional(),\n timeInvestment: z.string().optional(),\n priority: z.string().optional(),\n }).passthrough()).optional(),\n topInsights: z.array(z.unknown()).optional(),\n}).passthrough();\n\n/**\n * ContextEfficiency data: requires inefficiencyPatterns with type or pattern field.\n * Accepts both canonical (pattern) and plugin (type) field names.\n */\nconst ContextEfficiencyDataSchema = z.object({\n inefficiencyPatterns: z.array(z.object({\n // Accept both canonical (pattern) and plugin (type) field names\n type: z.string().optional(),\n pattern: z.string().optional(),\n frequency: z.number().optional(),\n severity: z.string().optional(),\n impact: z.string().optional(),\n description: z.string().optional(),\n evidence: z.array(z.unknown()).optional(),\n }).passthrough()).optional(),\n contextUsagePatterns: z.array(z.object({\n sessionId: z.string().optional(),\n avgFillPercent: z.number().optional(),\n pattern: z.string().optional(),\n trajectory: z.string().optional(),\n }).passthrough()).optional(),\n promptLengthTrends: z.unknown().optional(),\n iterationAnalysis: z.unknown().optional(),\n avgContextFillPercent: z.number().optional(),\n topInsights: z.array(z.unknown()).optional(),\n}).passthrough();\n\nconst SessionOutcomeDataSchema = z.object({\n sessionAnalyses: z.array(z.object({\n sessionId: z.string(),\n goals: z.array(z.string()).optional(),\n primaryGoal: z.string().optional(),\n sessionType: z.string(),\n outcome: z.string(),\n satisfaction: z.string().optional(),\n satisfactionSignal: z.string().optional(),\n frictionPoints: z.array(z.unknown()).optional(),\n frictionTypes: z.array(z.string()).optional(),\n outcomeScore: z.number().optional(),\n duration: z.string().optional(),\n utteranceCount: z.number().optional(),\n keyMoment: z.string().optional(),\n })).min(1),\n overallSuccessRate: z.number().min(0).max(100).optional(),\n goalDistribution: z.array(z.unknown()).optional(),\n frictionSummary: z.array(z.unknown()).optional(),\n successPatterns: z.array(z.unknown()).optional(),\n failurePatterns: z.array(z.unknown()).optional(),\n}).passthrough();\n\n/** Domain → data schema lookup. Domains without specific schemas fall through to permissive. */\nconst DOMAIN_DATA_SCHEMAS: Record = {\n // v2 domains: merged schemas are permissive (.passthrough()) to accept combined data\n aiPartnership: ThinkingQualityDataSchema.merge(SessionOutcomeDataSchema.partial()).passthrough(),\n sessionCraft: ContextEfficiencyDataSchema.merge(LearningBehaviorDataSchema.partial()).passthrough(),\n toolMastery: CommunicationPatternsDataSchema,\n skillResilience: z.record(z.string(), z.unknown()), // permissive\n sessionMastery: z.record(z.string(), z.unknown()), // permissive\n // Legacy domains\n thinkingQuality: ThinkingQualityDataSchema,\n communicationPatterns: CommunicationPatternsDataSchema,\n learningBehavior: LearningBehaviorDataSchema,\n contextEfficiency: ContextEfficiencyDataSchema,\n sessionOutcome: SessionOutcomeDataSchema,\n};\n\n// ============================================================================\n// Quality Gate Constants (Fix 3)\n//\n// These match the server-side BaseWorker.validateDescriptionQuality() thresholds.\n// ============================================================================\n\nconst QUALITY_THRESHOLDS = {\n /** Minimum characters for strength/growth area descriptions */\n minDescriptionLength: 300,\n /** Minimum characters for growth area recommendations */\n minRecommendationLength: 150,\n /** Minimum evidence items per strength/growth area */\n minEvidenceCount: 2,\n} as const;\n\n// ============================================================================\n// Input Schema\n// ============================================================================\n\nexport const DomainResultInputSchema = z.object({\n domain: z.enum([\n // v2 domains\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Legacy domains\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n ]),\n overallScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1).optional(),\n strengths: z.array(DomainStrengthSchema),\n growthAreas: z.array(DomainGrowthAreaSchema),\n /** Domain-specific typed data. Validated per domain using typed schemas. */\n data: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ============================================================================\n// Quality Validation (Fix 3)\n// ============================================================================\n\ninterface QualityIssue {\n field: string;\n message: string;\n actual: number;\n required: number;\n}\n\nfunction validateContentQuality(\n strengths: Array<{ title: string; description: string; evidence: unknown[] }>,\n growthAreas: Array<{ title: string; description: string; recommendation: string; evidence: unknown[] }>,\n): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n for (const [i, strength] of strengths.entries()) {\n if (strength.description.length < QUALITY_THRESHOLDS.minDescriptionLength) {\n issues.push({\n field: `strengths[${i}].description`,\n message: `Description for \"${strength.title}\" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure: WHAT the pattern is (2-3 sentences), WHY it matters (1-2 sentences), HOW to leverage it (1-2 sentences).`,\n actual: strength.description.length,\n required: QUALITY_THRESHOLDS.minDescriptionLength,\n });\n }\n if (strength.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) {\n issues.push({\n field: `strengths[${i}].evidence`,\n message: `Strength \"${strength.title}\" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}). Search across ALL sessions for additional examples of this pattern.`,\n actual: strength.evidence.length,\n required: QUALITY_THRESHOLDS.minEvidenceCount,\n });\n }\n }\n\n for (const [i, area] of growthAreas.entries()) {\n if (area.description.length < QUALITY_THRESHOLDS.minDescriptionLength) {\n issues.push({\n field: `growthAreas[${i}].description`,\n message: `Description for \"${area.title}\" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required. Use WHAT-WHY-HOW structure.`,\n actual: area.description.length,\n required: QUALITY_THRESHOLDS.minDescriptionLength,\n });\n }\n if (area.recommendation.length < QUALITY_THRESHOLDS.minRecommendationLength) {\n issues.push({\n field: `growthAreas[${i}].recommendation`,\n message: `Recommendation for \"${area.title}\" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required. Provide step-by-step actionable advice.`,\n actual: area.recommendation.length,\n required: QUALITY_THRESHOLDS.minRecommendationLength,\n });\n }\n if (area.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) {\n issues.push({\n field: `growthAreas[${i}].evidence`,\n message: `Growth area \"${area.title}\" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${area.evidence.length}).`,\n actual: area.evidence.length,\n required: QUALITY_THRESHOLDS.minEvidenceCount,\n });\n }\n }\n\n return issues;\n}\n\n// ============================================================================\n// Execute\n// ============================================================================\n\nexport async function execute(args: Record): Promise {\n const normalizedArgs = normalizeDomainResultArgs(args);\n\n // Get current run ID\n const runId = getCurrentRunId();\n const domainName = extractDomainName(normalizedArgs);\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first to start an analysis.',\n });\n }\n\n // Step 1: Validate top-level structure\n const parsed = DomainResultInputSchema.safeParse(normalizedArgs);\n if (!parsed.success) {\n if (domainName) {\n recordStageStatus(runId, domainName, {\n status: 'failed',\n lastError: 'Invalid domain result format.',\n });\n }\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid domain result format.',\n errors: parsed.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n });\n }\n\n // Step 2: Validate domain-specific data structure (Fix 2)\n const domainSchema = DOMAIN_DATA_SCHEMAS[parsed.data.domain];\n if (domainSchema && parsed.data.data) {\n const dataResult = domainSchema.safeParse(parsed.data.data);\n if (!dataResult.success) {\n recordStageStatus(runId, parsed.data.domain, {\n status: 'failed',\n lastError: `Domain-specific data for \"${parsed.data.domain}\" is incomplete or invalid.`,\n });\n const missingFields = dataResult.error.issues.map(i => ({\n path: `data.${i.path.join('.')}`,\n message: i.message,\n }));\n return JSON.stringify({\n status: 'validation_error',\n message: `Domain-specific data for \"${parsed.data.domain}\" is incomplete or invalid. `\n + `The data field must contain the required structures for this domain. `\n + `Review the skill instructions for the expected data format.`,\n errors: missingFields,\n hint: getDomainDataHint(parsed.data.domain),\n });\n }\n } else if (parsed.data.domain !== 'content' && !parsed.data.data) {\n recordStageStatus(runId, parsed.data.domain, {\n status: 'failed',\n lastError: `Domain \"${parsed.data.domain}\" requires a data field with domain-specific structures.`,\n });\n return JSON.stringify({\n status: 'validation_error',\n message: `Domain \"${parsed.data.domain}\" requires a data field with domain-specific structures. `\n + `Do not omit the data field.`,\n hint: getDomainDataHint(parsed.data.domain),\n });\n }\n\n // Step 3: Quality gate - check description/recommendation lengths (Fix 3)\n const qualityIssues = validateContentQuality(\n parsed.data.strengths,\n parsed.data.growthAreas,\n );\n\n if (qualityIssues.length > 0) {\n recordStageStatus(runId, parsed.data.domain, {\n status: 'failed',\n lastError: `Quality gate failed for \"${parsed.data.domain}\" analysis.`,\n });\n return JSON.stringify({\n status: 'quality_error',\n message: `${qualityIssues.length} quality issue(s) detected. `\n + `Descriptions must be ${QUALITY_THRESHOLDS.minDescriptionLength}+ chars, `\n + `recommendations must be ${QUALITY_THRESHOLDS.minRecommendationLength}+ chars, `\n + `and each insight needs ${QUALITY_THRESHOLDS.minEvidenceCount}+ evidence items. `\n + `Please expand the flagged fields and call save_domain_results again.`,\n issues: qualityIssues,\n });\n }\n\n // All validation passed — save to database\n const domainResult: DomainResult = {\n domain: parsed.data.domain,\n overallScore: parsed.data.overallScore,\n confidenceScore: parsed.data.confidenceScore ?? 0.5,\n strengths: parsed.data.strengths,\n growthAreas: parsed.data.growthAreas,\n data: parsed.data.data,\n analyzedAt: new Date().toISOString(),\n };\n\n saveDomainResult(runId, domainResult);\n recordStageStatus(runId, domainResult.domain, {\n status: 'validated',\n });\n\n return JSON.stringify({\n status: 'ok',\n domain: domainResult.domain,\n score: domainResult.overallScore,\n strengthCount: domainResult.strengths.length,\n growthAreaCount: domainResult.growthAreas.length,\n runId,\n message: `Saved ${domainResult.domain} analysis (score: ${domainResult.overallScore}/100) to run #${runId}.`,\n });\n}\n\n// ============================================================================\n// Hints for domain data requirements\n// ============================================================================\n\nfunction getDomainDataHint(domain: string): string {\n const hints: Record = {\n aiPartnership:\n 'Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate',\n sessionCraft:\n 'Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]',\n toolMastery:\n 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]',\n skillResilience:\n 'Expected: domain-specific data (flexible schema)',\n sessionMastery:\n 'Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore',\n // Legacy domains\n thinkingQuality:\n 'Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]',\n communicationPatterns:\n 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]',\n learningBehavior:\n 'Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]',\n contextEfficiency:\n 'Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent',\n sessionOutcome:\n 'Required: sessionAnalyses[] (min 1, each with sessionId, sessionType, outcome). Optional: overallSuccessRate',\n };\n return hints[domain] ?? '';\n}\n","/**\n * get_domain_results MCP Tool\n *\n * Reads previously saved domain analysis results from the local DB.\n * Used by downstream skills that need the full domain payloads\n * (evidence verification, content writer, translator).\n *\n * @module plugin/mcp/tools/get-domain-results\n */\n\nimport { z } from 'zod';\nimport { getCurrentRunId, getDomainResult, getDomainResults } from '../../lib/results-db.js';\n\nexport const definition = {\n name: 'get_domain_results',\n description:\n 'Read previously saved domain analysis results from the current local analysis run. ' +\n 'Provide a domain name to get one domain, or omit it to get all saved domains. ' +\n 'Available domains: aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery.',\n};\n\nexport const GetDomainResultsInputSchema = z.object({\n domain: z.enum([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n // Legacy domains\n 'thinkingQuality',\n 'communicationPatterns',\n 'learningBehavior',\n 'contextEfficiency',\n 'sessionOutcome',\n 'content',\n ]).optional(),\n});\n\nexport async function execute(args: { domain?: string }): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first.',\n });\n }\n\n if (args.domain) {\n const result = getDomainResult(runId, args.domain);\n if (!result) {\n return JSON.stringify({\n status: 'not_found',\n domain: args.domain,\n runId,\n message: `No ${args.domain} result found for run #${runId}. This domain may not have been analyzed yet.`,\n });\n }\n\n return JSON.stringify({\n status: 'ok',\n domain: args.domain,\n runId,\n data: result,\n });\n }\n\n const results = getDomainResults(runId);\n\n return JSON.stringify({\n status: 'ok',\n runId,\n domainsAvailable: results.map(result => result.domain),\n data: results,\n });\n}\n","/**\n * get_user_prefs MCP Tool\n *\n * Reads BetterPrompt user preferences from ~/.betterprompt/prefs.json\n * without requiring Claude to request filesystem permissions directly.\n *\n * @module plugin/mcp/tools/get-user-prefs\n */\n\nimport { readPrefs } from '../../lib/prefs.js';\n\nexport const definition = {\n name: 'get_user_prefs',\n description:\n 'Read BetterPrompt user preferences from ~/.betterprompt/prefs.json. ' +\n 'Use this instead of direct file reads in setup and analysis skills.',\n};\n\nexport async function execute(): Promise {\n return JSON.stringify({\n status: 'ok',\n prefs: readPrefs(),\n message: 'Loaded BetterPrompt user preferences.',\n });\n}\n","/**\n * get_run_progress MCP Tool\n *\n * Reports resumable progress for the current local analysis run so the\n * orchestrator can continue from the first incomplete required stage.\n *\n * @module plugin/mcp/tools/get-run-progress\n */\n\nimport { getAnalysisRun, getCurrentRunId, getDomainResult } from '../../lib/results-db.js';\nimport {\n getStageOutput,\n getStageStatuses,\n type StageLifecycleStatus,\n} from '../../lib/stage-db.js';\n\nexport const definition = {\n name: 'get_run_progress',\n description:\n 'Inspect the current local analysis run and report which required stages are complete, ' +\n 'missing, or need to be resumed. Use this before starting bp analyze to resume interrupted runs.',\n};\n\nconst DOMAIN_STAGE_NAMES = new Set([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n]);\n\n/**\n * 5-dimension pipeline stage sequence (v2).\n * Reduced from 19 stages (6+6 extract/write) to 17 stages (5+5 extract/write + context/classification/verification/content).\n */\nexport const REQUIRED_STAGE_SEQUENCE = [\n { stage: 'sessionSummaries', skill: 'summarize-sessions', tool: null, kind: 'stage' },\n // 5 extractors (down from 6)\n { stage: 'extractAiPartnership', skill: 'extract-ai-partnership', tool: null, kind: 'stage' },\n { stage: 'extractSessionCraft', skill: 'extract-session-craft', tool: null, kind: 'stage' },\n { stage: 'extractToolMastery', skill: 'extract-tool-mastery', tool: null, kind: 'stage' },\n { stage: 'extractSkillResilience', skill: 'extract-skill-resilience', tool: null, kind: 'stage' },\n { stage: 'extractSessionMastery', skill: 'extract-session-mastery', tool: null, kind: 'stage' },\n // 5 writers (down from 6)\n { stage: 'aiPartnership', skill: 'write-ai-partnership', tool: null, kind: 'domain' },\n { stage: 'sessionCraft', skill: 'write-session-craft', tool: null, kind: 'domain' },\n { stage: 'toolMastery', skill: 'write-tool-mastery', tool: null, kind: 'domain' },\n { stage: 'skillResilience', skill: 'write-skill-resilience', tool: null, kind: 'domain' },\n { stage: 'sessionMastery', skill: 'write-session-mastery', tool: null, kind: 'domain' },\n // Context generation + classification\n { stage: 'projectSummaries', skill: 'summarize-projects', tool: null, kind: 'stage' },\n { stage: 'weeklyInsights', skill: 'generate-weekly-insights', tool: null, kind: 'stage' },\n { stage: 'deterministicType', skill: null, tool: 'classify_developer_type', kind: 'stage' },\n { stage: 'typeClassification', skill: 'classify-type', tool: null, kind: 'stage' },\n { stage: 'evidenceVerification', skill: null, tool: 'verify_evidence', kind: 'stage' },\n { stage: 'contentWriter', skill: 'write-content', tool: null, kind: 'stage' },\n] as const;\n\ntype RequiredStep = (typeof REQUIRED_STAGE_SEQUENCE)[number];\n\ntype StepStatus = StageLifecycleStatus | 'missing';\n\nexport interface RunProgressStep {\n stage: string;\n skill: string | null;\n tool: string | null;\n kind: 'stage' | 'domain';\n status: StepStatus;\n completed: boolean;\n hasArtifact: boolean;\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\n/**\n * Internal representation returned by `computeRunProgress`.\n * The MCP `execute()` response transforms this — it sends only `pendingStages`\n * (incomplete/failed entries) instead of the full `stages` array to reduce\n * orchestrator context accumulation.\n */\nexport interface RunProgressSummary {\n runId: number;\n analyzedAt: string;\n phase1Complete: boolean;\n sessionCount: number;\n projectNames: string[];\n completionStatus: 'incomplete' | 'complete';\n completedRequiredStages: number;\n totalRequiredStages: number;\n completedDomainCount: number;\n totalDomainCount: number;\n nextStep: {\n stage: string;\n skill: string | null;\n tool: string | null;\n kind: 'stage' | 'domain' | 'report';\n };\n /** Full stage list — used internally. MCP response sends only pendingStages. */\n stages: RunProgressStep[];\n}\n\nfunction hasArtifact(runId: number, stage: string): boolean {\n if (stage === 'deterministicType') {\n return getAnalysisRun(runId)?.typeResult !== null;\n }\n\n if (DOMAIN_STAGE_NAMES.has(stage)) {\n return getDomainResult(runId, stage) !== null;\n }\n\n return getStageOutput(runId, stage) !== null;\n}\n\nfunction buildStepStatus(\n runId: number,\n step: RequiredStep,\n statusLookup: Map[number]>,\n): RunProgressStep {\n const savedStatus = statusLookup.get(step.stage);\n const artifactPresent = hasArtifact(runId, step.stage);\n\n if (savedStatus) {\n return {\n stage: step.stage,\n skill: step.skill,\n tool: step.tool,\n kind: step.kind,\n status: savedStatus.status,\n completed: savedStatus.status === 'validated',\n hasArtifact: artifactPresent,\n attemptCount: savedStatus.attemptCount,\n lastError: savedStatus.lastError,\n updatedAt: savedStatus.updatedAt,\n };\n }\n\n return {\n stage: step.stage,\n skill: step.skill,\n tool: step.tool,\n kind: step.kind,\n status: artifactPresent ? 'validated' : 'missing',\n completed: artifactPresent,\n hasArtifact: artifactPresent,\n attemptCount: 0,\n lastError: null,\n updatedAt: null,\n };\n}\n\nexport function computeRunProgress(runId: number): RunProgressSummary | null {\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return null;\n }\n\n const statusLookup = new Map(\n getStageStatuses(runId).map(status => [status.stage, status]),\n );\n const stages = REQUIRED_STAGE_SEQUENCE.map(step => buildStepStatus(runId, step, statusLookup));\n const nextIncomplete = stages.find(stage => !stage.completed);\n const completedRequiredStages = stages.filter(stage => stage.completed).length;\n const projectNames = Array.from(\n new Set(\n (run.phase1Output.sessions ?? [])\n .map(session => session.projectName)\n .filter((name): name is string => typeof name === 'string' && name.length > 0),\n ),\n ).sort();\n\n return {\n runId,\n analyzedAt: run.analyzedAt,\n phase1Complete: true,\n sessionCount: run.phase1Output.sessionMetrics.totalSessions,\n projectNames,\n completionStatus: nextIncomplete ? 'incomplete' : 'complete',\n completedRequiredStages,\n totalRequiredStages: REQUIRED_STAGE_SEQUENCE.length,\n completedDomainCount: stages.filter(stage => DOMAIN_STAGE_NAMES.has(stage.stage) && stage.completed).length,\n totalDomainCount: DOMAIN_STAGE_NAMES.size,\n nextStep: nextIncomplete\n ? {\n stage: nextIncomplete.stage,\n skill: nextIncomplete.skill,\n tool: nextIncomplete.tool,\n kind: nextIncomplete.kind,\n }\n : {\n stage: 'generateReport',\n skill: null,\n tool: 'generate_report',\n kind: 'report',\n },\n stages,\n };\n}\n\nexport async function execute(): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'no_run',\n message: 'No active analysis run. Start Phase 1 with scan_sessions and extract_data.',\n });\n }\n\n const progress = computeRunProgress(runId);\n if (!progress) {\n return JSON.stringify({\n status: 'no_run',\n runId,\n message: 'The current run has no resumable Phase 1 data. Start Phase 1 again.',\n });\n }\n\n // Return compact response to reduce orchestrator context accumulation.\n // Only include incomplete/failed stages instead of the full 17-entry array.\n const pendingStages = progress.stages\n .filter(stage => !stage.completed)\n .map(({ stage, skill, tool, kind, status, lastError }) => ({\n stage, skill, tool, kind, status,\n ...(lastError ? { lastError } : {}),\n }));\n\n return JSON.stringify({\n status: 'ok',\n runId: progress.runId,\n analyzedAt: progress.analyzedAt,\n phase1Complete: progress.phase1Complete,\n sessionCount: progress.sessionCount,\n projectNames: progress.projectNames,\n completionStatus: progress.completionStatus,\n completedRequiredStages: progress.completedRequiredStages,\n totalRequiredStages: progress.totalRequiredStages,\n completedDomainCount: progress.completedDomainCount,\n totalDomainCount: progress.totalDomainCount,\n nextStep: progress.nextStep,\n pendingStages,\n message: progress.completionStatus === 'complete'\n ? `Run #${runId} already has all required stages. Call generate_report to reopen the report.`\n : `Run #${runId} is incomplete (${progress.completedRequiredStages}/${progress.totalRequiredStages}). Resume with ${progress.nextStep.tool ?? progress.nextStep.skill ?? progress.nextStep.stage}.`,\n });\n}\n","/**\n * save_user_prefs MCP Tool\n *\n * Persists BetterPrompt user preferences to ~/.betterprompt/prefs.json\n * with merge semantics. This keeps setup flows from hand-writing JSON\n * and allows setup completion timestamps to be stamped in code.\n *\n * @module plugin/mcp/tools/save-user-prefs\n */\n\nimport { z } from 'zod';\nimport { readPrefs, writePrefs, type UserPrefs } from '../../lib/prefs.js';\nimport { markAnalysisPending } from '../../lib/debounce.js';\n\nexport const definition = {\n name: 'save_user_prefs',\n description:\n 'Update BetterPrompt user preferences in ~/.betterprompt/prefs.json. ' +\n 'Provided fields are merged with existing prefs. ' +\n 'Set markWelcomeCompleted=true to stamp welcomeCompleted with the exact current ISO timestamp.',\n};\n\nexport const SaveUserPrefsInputSchema = z.object({\n selectedProjects: z.array(z.string()).optional().describe('Project names to analyze. Use [] to mean \"all projects\".'),\n starAsked: z.boolean().optional().describe('Whether the GitHub star prompt has already been handled.'),\n welcomeShown: z.boolean().optional().describe('Whether the setup welcome has been shown.'),\n welcomeVersion: z.string().optional().describe('Setup flow version, for example \"2.0\".'),\n markWelcomeCompleted: z.boolean().optional().describe('When true, sets welcomeCompleted to the exact current ISO timestamp.'),\n queueAnalysis: z.boolean().optional().describe('When true, queues a pending analysis for the next session via plugin-state.json.'),\n});\n\nfunction normalizeWelcomeVersion(value: string | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const trimmed = value.trim();\n if (\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n || (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))\n ) {\n return trimmed.slice(1, -1).trim();\n }\n\n return trimmed;\n}\n\nexport async function execute(args: z.infer): Promise {\n const parsed = SaveUserPrefsInputSchema.safeParse(args);\n if (!parsed.success) {\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid user prefs payload.',\n errors: parsed.error.issues.map(issue => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n\n const { markWelcomeCompleted = false, queueAnalysis = false, ...partial } = parsed.data;\n const nextPrefs: Partial = {\n ...partial,\n ...(partial.welcomeVersion !== undefined\n ? { welcomeVersion: normalizeWelcomeVersion(partial.welcomeVersion) }\n : {}),\n };\n\n if (markWelcomeCompleted) {\n nextPrefs.welcomeCompleted = new Date().toISOString();\n }\n\n if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) {\n return JSON.stringify({\n status: 'noop',\n prefs: readPrefs(),\n message: 'No preference fields were provided.',\n });\n }\n\n if (Object.keys(nextPrefs).length > 0) {\n writePrefs(nextPrefs);\n }\n\n if (queueAnalysis) {\n markAnalysisPending();\n }\n\n return JSON.stringify({\n status: 'ok',\n prefs: readPrefs(),\n ...(queueAnalysis ? { analysisQueued: true } : {}),\n message: queueAnalysis\n ? 'Updated preferences and queued analysis for next session.'\n : 'Updated BetterPrompt user preferences.',\n });\n}\n","/**\n * classify_developer_type MCP Tool\n *\n * Runs deterministic type classification from domain scores.\n * Uses Phase 1.2 rules (DeterministicTypeMapper) to determine\n * primary type and control level.\n */\n\nimport { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js';\nimport { computeDeterministicType } from '../../lib/core/deterministic-type-mapper.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport {\n getAnalysisRun,\n saveTypeResult,\n getCurrentRunId,\n} from '../../lib/results-db.js';\nimport type { Phase1Output } from '../../lib/core/types.js';\n\nexport const definition = {\n name: 'classify_developer_type',\n description:\n 'Classify the developer\\'s AI collaboration type using deterministic rules. ' +\n 'Uses the 5x3 type matrix (architect/analyst/conductor/speedrunner/trendsetter ' +\n 'x explorer/navigator/cartographer). Requires extract_data to have been run first. ' +\n 'Returns the primary type, distribution, control level, and matrix name.',\n};\n\nexport async function execute(_args: Record): Promise {\n const runId = getCurrentRunId();\n\n // Prefer the persisted run record so classification does not depend on the\n // legacy phase1-output.json artifact still existing on disk.\n let phase1Output: Phase1Output;\n const existingRun = runId ? getAnalysisRun(runId) : null;\n\n if (existingRun?.phase1Output) {\n phase1Output = existingRun.phase1Output;\n } else {\n try {\n const phase1Path = join(getPluginDataDir(), 'phase1-output.json');\n const content = await readFile(phase1Path, 'utf-8');\n phase1Output = JSON.parse(content);\n } catch {\n return JSON.stringify({\n status: 'error',\n message: 'No Phase 1 data found. Call extract_data first.',\n });\n }\n }\n\n // Compute scores and type\n const scores = existingRun?.phase1Output\n ? existingRun.scores\n : computeDeterministicScores(phase1Output);\n const typeResult = computeDeterministicType(scores, phase1Output);\n\n // Save to DB\n if (runId) {\n saveTypeResult(runId, typeResult);\n }\n\n return JSON.stringify({\n status: 'ok',\n primaryType: typeResult.primaryType,\n controlLevel: typeResult.controlLevel,\n matrixName: typeResult.matrixName,\n matrixEmoji: typeResult.matrixEmoji,\n distribution: typeResult.distribution,\n controlScore: typeResult.controlScore,\n runId,\n message:\n `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} ` +\n `(${typeResult.primaryType} / ${typeResult.controlLevel}). ` +\n `Distribution: architect ${typeResult.distribution.architect}%, ` +\n `analyst ${typeResult.distribution.analyst}%, ` +\n `conductor ${typeResult.distribution.conductor}%, ` +\n `speedrunner ${typeResult.distribution.speedrunner}%, ` +\n `trendsetter ${typeResult.distribution.trendsetter}%.`,\n });\n}\n","/**\n * verify_evidence MCP Tool\n *\n * Deterministically verifies that saved evidence quotes still map back to\n * utterances from the current run. This keeps Phase 2.8 fast and resumable\n * without relying on another large LLM pass.\n *\n * @module plugin/mcp/tools/verify-evidence\n */\n\nimport { z } from 'zod';\nimport {\n getAnalysisRun,\n getCurrentRunId,\n getDomainResults,\n} from '../../lib/results-db.js';\nimport {\n recordStageStatus,\n saveStageOutput,\n} from '../../lib/stage-db.js';\n\nexport const definition = {\n name: 'verify_evidence',\n description:\n 'Deterministically verify saved evidence quotes against the current run\\'s developer utterances, ' +\n 'persist the evidenceVerification stage output, and return kept/filtered counts.',\n};\n\nexport const VerifyEvidenceInputSchema = z.object({\n threshold: z.number().int().min(0).max(100).optional(),\n});\n\nfunction normalizeText(text: string): string {\n return text\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction tokenize(text: string): string[] {\n return normalizeText(text)\n .split(' ')\n .filter(token => token.length > 1);\n}\n\nfunction bigrams(text: string): string[] {\n const normalized = normalizeText(text).replace(/\\s+/g, ' ');\n if (normalized.length < 2) return normalized ? [normalized] : [];\n\n const grams: string[] = [];\n for (let index = 0; index < normalized.length - 1; index += 1) {\n grams.push(normalized.slice(index, index + 2));\n }\n return grams;\n}\n\nfunction diceCoefficient(left: string, right: string): number {\n const leftBigrams = bigrams(left);\n const rightBigrams = bigrams(right);\n\n if (leftBigrams.length === 0 || rightBigrams.length === 0) {\n return 0;\n }\n\n const rightCounts = new Map();\n for (const gram of rightBigrams) {\n rightCounts.set(gram, (rightCounts.get(gram) ?? 0) + 1);\n }\n\n let intersection = 0;\n for (const gram of leftBigrams) {\n const count = rightCounts.get(gram) ?? 0;\n if (count > 0) {\n intersection += 1;\n rightCounts.set(gram, count - 1);\n }\n }\n\n return (2 * intersection) / (leftBigrams.length + rightBigrams.length);\n}\n\nfunction scoreEvidence(quote: string, utterance: string): number {\n const normalizedQuote = normalizeText(quote);\n const normalizedUtterance = normalizeText(utterance);\n\n if (!normalizedQuote || !normalizedUtterance) {\n return 0;\n }\n\n if (\n normalizedUtterance.includes(normalizedQuote) ||\n normalizedQuote.includes(normalizedUtterance)\n ) {\n return 100;\n }\n\n const quoteTokens = tokenize(quote);\n const utteranceTokens = new Set(tokenize(utterance));\n if (quoteTokens.length === 0) {\n return 0;\n }\n\n const sharedTokens = quoteTokens.filter(token => utteranceTokens.has(token)).length;\n const tokenCoverage = sharedTokens / quoteTokens.length;\n const similarity = diceCoefficient(normalizedQuote, normalizedUtterance);\n\n if (tokenCoverage >= 0.85 || similarity >= 0.82) {\n return 85;\n }\n\n if (tokenCoverage >= 0.6 || similarity >= 0.65) {\n return 65;\n }\n\n if (tokenCoverage >= 0.4 || similarity >= 0.5) {\n return 45;\n }\n\n return 0;\n}\n\nexport async function execute(args: Record = {}): Promise {\n const parsed = VerifyEvidenceInputSchema.safeParse(args);\n if (!parsed.success) {\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid verify_evidence request.',\n errors: parsed.error.issues.map(issue => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n\n const threshold = parsed.data.threshold ?? 50;\n const runId = getCurrentRunId();\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first.',\n });\n }\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: `Run #${runId} has no Phase 1 output.`,\n });\n }\n\n const domainResults = getDomainResults(runId);\n if (domainResults.length === 0) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: `Run #${runId} has no saved domain results to verify.`,\n });\n }\n\n recordStageStatus(runId, 'evidenceVerification', { status: 'running' });\n\n try {\n const utteranceLookup = Object.fromEntries(\n run.phase1Output.developerUtterances.map(utterance => [\n utterance.id,\n utterance.displayText || utterance.text,\n ]),\n );\n\n const verifiedResults: Array<{\n utteranceId: string;\n quote: string;\n relevanceScore: number;\n verified: boolean;\n }> = [];\n const domainStats: Array<{\n domain: string;\n totalEvidence: number;\n keptCount: number;\n filteredCount: number;\n }> = [];\n\n for (const result of domainResults) {\n const evidenceItems = [\n ...result.strengths.flatMap(strength => strength.evidence ?? []),\n ...result.growthAreas.flatMap(growthArea => growthArea.evidence ?? []),\n ];\n\n let keptCount = 0;\n let filteredCount = 0;\n\n for (const evidence of evidenceItems) {\n const utteranceId = typeof evidence.utteranceId === 'string'\n ? evidence.utteranceId\n : '';\n const quote = typeof evidence.quote === 'string' ? evidence.quote : '';\n const sourceUtterance = utteranceId ? (utteranceLookup[utteranceId] ?? '') : '';\n const relevanceScore = scoreEvidence(quote, sourceUtterance);\n const verified = relevanceScore >= threshold;\n\n if (verified) {\n keptCount += 1;\n } else {\n filteredCount += 1;\n }\n\n verifiedResults.push({\n utteranceId,\n quote,\n relevanceScore,\n verified,\n });\n }\n\n domainStats.push({\n domain: result.domain,\n totalEvidence: evidenceItems.length,\n keptCount,\n filteredCount,\n });\n }\n\n const data = {\n verifiedResults,\n domainStats,\n threshold,\n };\n\n saveStageOutput(runId, 'evidenceVerification', data);\n recordStageStatus(runId, 'evidenceVerification', { status: 'validated' });\n\n const keptCount = verifiedResults.filter(result => result.verified).length;\n const filteredCount = verifiedResults.length - keptCount;\n\n return JSON.stringify({\n status: 'ok',\n runId,\n stage: 'evidenceVerification',\n threshold,\n totalEvidence: verifiedResults.length,\n keptCount,\n filteredCount,\n domainStats,\n message:\n `Verified ${verifiedResults.length} evidence items for run #${runId}. ` +\n `Kept ${keptCount}, filtered ${filteredCount}.`,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to verify evidence.';\n recordStageStatus(runId, 'evidenceVerification', {\n status: 'failed',\n lastError: message,\n });\n return JSON.stringify({\n status: 'error',\n runId,\n message,\n });\n }\n}\n","/**\n * generate_report MCP Tool\n *\n * Generates a standalone HTML report from analysis results\n * and serves it on a local HTTP server.\n */\n\nimport { readFileSync } from 'node:fs';\nimport { writeFile, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { createServer } from 'node:http';\nimport { exec } from 'node:child_process';\nimport {\n assembleCanonicalRun,\n getCurrentRunId,\n getDomainResult,\n} from '../../lib/results-db.js';\nimport { getPluginDataDir } from '../../lib/core/session-scanner.js';\nimport { generateCanonicalReportHtml } from '../../lib/report-template.js';\nimport { markAnalysisComplete } from '../../lib/debounce.js';\nimport {\n getStageStatuses,\n getStageOutput,\n REQUIRED_STAGE_NAMES,\n} from '../../lib/stage-db.js';\n\nexport const definition = {\n name: 'generate_report',\n description:\n 'Generate a standalone HTML report from all completed domain analyses ' +\n 'and serve it on a local HTTP server. Returns the URL to view the report. ' +\n 'Call this after all domain analyses and type classification are complete. ' +\n 'Pass allowIncomplete=true to override required-stage gating.',\n};\n\n/** Track the running server so we can shut it down */\nlet activeServer: ReturnType | null = null;\nlet shutdownTimer: ReturnType | null = null;\nconst SHUTDOWN_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes\nconst DOMAIN_STAGE_NAMES = new Set([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n]);\n\ninterface StageGateIssue {\n stage: string;\n required: boolean;\n status: 'validated' | 'failed' | 'running' | 'queued' | 'missing';\n attemptCount: number;\n lastError: string | null;\n updatedAt: string | null;\n}\n\nfunction resetShutdownTimer(): void {\n if (shutdownTimer) clearTimeout(shutdownTimer);\n shutdownTimer = setTimeout(() => {\n if (activeServer) {\n activeServer.close();\n activeServer = null;\n }\n }, SHUTDOWN_TIMEOUT_MS);\n}\n\n/** Close the active server and wait for it to fully release the port */\nfunction closeActiveServer(): Promise {\n return new Promise((resolve) => {\n if (!activeServer) {\n resolve();\n return;\n }\n activeServer.close(() => {\n activeServer = null;\n resolve();\n });\n });\n}\n\nfunction hasFallbackArtifact(runId: number, stage: string): boolean {\n if (DOMAIN_STAGE_NAMES.has(stage)) {\n return getDomainResult(runId, stage) !== null;\n }\n return getStageOutput(runId, stage) !== null;\n}\n\nfunction getRequiredStageGateIssues(runId: number): StageGateIssue[] {\n const statuses = getStageStatuses(runId);\n const statusLookup = new Map(statuses.map(status => [status.stage, status]));\n const issues: StageGateIssue[] = [];\n\n for (const stage of REQUIRED_STAGE_NAMES) {\n const status = statusLookup.get(stage);\n if (status) {\n if (status.status !== 'validated') {\n issues.push({\n stage,\n required: status.required,\n status: status.status,\n attemptCount: status.attemptCount,\n lastError: status.lastError,\n updatedAt: status.updatedAt,\n });\n }\n continue;\n }\n\n if (!hasFallbackArtifact(runId, stage)) {\n issues.push({\n stage,\n required: true,\n status: 'missing',\n attemptCount: 0,\n lastError: null,\n updatedAt: null,\n });\n }\n }\n\n return issues;\n}\n\nexport async function execute(args: { port?: number; openBrowser?: boolean; allowIncomplete?: boolean }): Promise {\n const port = args.port ?? 3456;\n const openBrowser = args.openBrowser ?? true;\n const allowIncomplete = args.allowIncomplete ?? false;\n\n // Assemble report data\n const runId = getCurrentRunId();\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No analysis results found. Run extract_data and domain analyses first.',\n });\n }\n\n const gateIssues = getRequiredStageGateIssues(runId);\n if (gateIssues.length > 0 && !allowIncomplete) {\n return JSON.stringify({\n status: 'blocked',\n message: 'Required analysis stages are incomplete. Re-run the missing stages or pass allowIncomplete=true to override.',\n issues: gateIssues,\n });\n }\n\n const run = assembleCanonicalRun(runId);\n if (!run) {\n return JSON.stringify({\n status: 'error',\n message: 'No analysis results found. Run extract_data and domain analyses first.',\n });\n }\n\n // Generate HTML\n const html = generateCanonicalReportHtml(run);\n\n // Save report file\n const reportsDir = join(getPluginDataDir(), 'reports');\n await mkdir(reportsDir, { recursive: true });\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);\n const reportPath = join(reportsDir, `report-${timestamp}.html`);\n await writeFile(reportPath, html, 'utf-8');\n\n // Also save as latest\n const latestPath = join(reportsDir, 'latest.html');\n await writeFile(latestPath, html, 'utf-8');\n\n // Close existing server before starting a new one\n await closeActiveServer();\n\n const url = await new Promise((resolve, reject) => {\n const server = createServer((req, res) => {\n // Only serve on root path\n if (req.url !== '/' && req.url !== '') {\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not Found');\n return;\n }\n\n resetShutdownTimer();\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'no-cache',\n });\n // Always serve the latest report\n try {\n const content = readFileSync(latestPath, 'utf-8');\n res.end(content);\n } catch {\n res.end(html);\n }\n });\n\n server.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n // Port in use - serve from file\n resolve(`file://${reportPath}`);\n } else {\n reject(err);\n }\n });\n\n server.listen(port, () => {\n activeServer = server;\n resetShutdownTimer();\n resolve(`http://localhost:${port}`);\n });\n });\n\n // Auto-open browser\n if (openBrowser && url.startsWith('http')) {\n try {\n let cmd: string;\n if (process.platform === 'darwin') {\n cmd = `open \"${url}\"`;\n } else if (process.platform === 'win32') {\n cmd = `start \"${url}\"`;\n } else {\n cmd = `xdg-open \"${url}\"`;\n }\n exec(cmd);\n } catch {\n // Non-critical - user can open manually\n }\n }\n\n markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions);\n\n return JSON.stringify({\n status: 'ok',\n url,\n reportPath,\n latestPath,\n domainCount: run.domainResults.length,\n type: run.typeResult ? `${run.typeResult.matrixEmoji} ${run.typeResult.matrixName}` : 'Not classified',\n ...(gateIssues.length > 0 ? { warning: 'Report generated with incomplete required stages because allowIncomplete=true.' } : {}),\n message: `Report generated and available at ${url}. Saved to ${reportPath}.`,\n });\n}\n","/**\n * HTML Report Template Generator\n *\n * Generates a standalone HTML report with inlined CSS/JS/SVG.\n * Uses the notebook-sketch design system from the main app.\n *\n * @module plugin/lib/report-template\n */\n\nimport type {\n AnalysisReport,\n CanonicalAnalysisRun,\n DomainResult,\n DeterministicTypeResult,\n CodingStyleType,\n ReportActivitySession,\n} from './core/types.js';\n\n// ============================================================================\n// HTML Escaping\n// ============================================================================\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n// ============================================================================\n// SVG Radar Chart (ported from RadarChart.tsx math)\n// ============================================================================\n\nfunction polarToCartesian(\n cx: number,\n cy: number,\n radius: number,\n angleDeg: number,\n): { x: number; y: number } {\n const angleRad = ((angleDeg - 90) * Math.PI) / 180;\n return {\n x: cx + radius * Math.cos(angleRad),\n y: cy + radius * Math.sin(angleRad),\n };\n}\n\nfunction generateRadarSvg(\n scores: Record,\n labels: Record,\n size = 300,\n): string {\n const entries = Object.entries(scores);\n const count = entries.length;\n if (count === 0) return '';\n\n const cx = size / 2;\n const cy = size / 2;\n const maxRadius = size / 2 - 40;\n const angleStep = 360 / count;\n\n // Grid circles\n const gridCircles = [0.25, 0.5, 0.75, 1.0]\n .map(frac => {\n const r = maxRadius * frac;\n return ``;\n })\n .join('\\n');\n\n // Grid lines + labels\n const gridLines = entries\n .map(([key], i) => {\n const angle = i * angleStep;\n const end = polarToCartesian(cx, cy, maxRadius, angle);\n const labelPos = polarToCartesian(cx, cy, maxRadius + 20, angle);\n const label = labels[key] ?? key;\n return `\n \n ${label}\n `;\n })\n .join('\\n');\n\n // Data polygon\n const points = entries\n .map(([, score], i) => {\n const angle = i * angleStep;\n const r = maxRadius * (score / 100);\n const p = polarToCartesian(cx, cy, r, angle);\n return `${p.x},${p.y}`;\n })\n .join(' ');\n\n // Data dots\n const dots = entries\n .map(([, score], i) => {\n const angle = i * angleStep;\n const r = maxRadius * (score / 100);\n const p = polarToCartesian(cx, cy, r, angle);\n return ``;\n })\n .join('\\n');\n\n return `\n \n ${gridCircles}\n ${gridLines}\n \n ${dots}\n \n `;\n}\n\n// ============================================================================\n// Type Distribution Bar\n// ============================================================================\n\nfunction generateTypeDistributionBar(distribution: DeterministicTypeResult['distribution']): string {\n const colors: Record = {\n architect: '#3B82F6',\n analyst: '#9C7CF4',\n conductor: '#FFD93D',\n speedrunner: '#4ADE80',\n trendsetter: '#FF6B9D',\n };\n\n const entries = Object.entries(distribution) as [CodingStyleType, number][];\n entries.sort((a, b) => b[1] - a[1]);\n\n const bars = entries\n .map(([type, pct]) => `\n
\n ${type}\n
\n
\n
\n ${pct}%\n
\n `)\n .join('');\n\n return `
${bars}
`;\n}\n\n// ============================================================================\n// Shared Radar / Scores Helpers\n// ============================================================================\n\nconst RADAR_LABELS: Record = {\n aiPartnership: 'AI Partnership',\n sessionCraft: 'Session Craft',\n toolMastery: 'Tool Mastery',\n skillResilience: 'Skill Resilience',\n sessionMastery: 'Session Mastery',\n};\n\nfunction buildRadarScores(scores: AnalysisReport['deterministicScores']): Record {\n return {\n aiPartnership: scores.aiPartnership,\n sessionCraft: scores.sessionCraft,\n toolMastery: scores.toolMastery,\n skillResilience: scores.skillResilience,\n sessionMastery: scores.sessionMastery,\n };\n}\n\n// ============================================================================\n// Domain Section Cards\n// ============================================================================\n\nconst DOMAIN_LABELS: Record = {\n aiPartnership: { label: 'AI Partnership', emoji: '🤝' },\n sessionCraft: { label: 'Session Craft', emoji: '🛠️' },\n toolMastery: { label: 'Tool Mastery', emoji: '🔧' },\n skillResilience: { label: 'Skill Resilience', emoji: '🧩' },\n sessionMastery: { label: 'Session Mastery', emoji: '✨' },\n // Legacy domain labels for old runs\n thinkingQuality: { label: 'Thinking Quality', emoji: '🧠' },\n communicationPatterns: { label: 'Communication', emoji: '💬' },\n learningBehavior: { label: 'Learning', emoji: '📚' },\n contextEfficiency: { label: 'Efficiency', emoji: '⚡' },\n sessionOutcome: { label: 'Sessions', emoji: '🎯' },\n content: { label: 'Skill Resilience', emoji: '🧩' },\n};\n\nfunction generateDomainSection(result: DomainResult): string {\n const meta = DOMAIN_LABELS[result.domain] ?? { label: result.domain, emoji: '📊' };\n\n const strengthCards = result.strengths\n .map(s => `\n
\n

${escapeHtml(s.title)}

\n

${escapeHtml(s.description)}

\n ${s.evidence.length > 0 ? `\n
\n Evidence (${s.evidence.length})\n
    \n ${s.evidence.map(e => `
  • ${escapeHtml(e.utteranceId)}: \"${escapeHtml(e.quote)}\"
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n const growthCards = result.growthAreas\n .map(g => `\n
\n
${escapeHtml(g.severity)}
\n

${escapeHtml(g.title)}

\n

${escapeHtml(g.description)}

\n
${escapeHtml(g.recommendation)}
\n ${g.evidence.length > 0 ? `\n
\n Evidence (${g.evidence.length})\n
    \n ${g.evidence.map(e => `
  • ${escapeHtml(e.utteranceId)}: \"${escapeHtml(e.quote)}\"
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

${meta.emoji} ${meta.label} ${result.overallScore}/100

\n ${result.strengths.length > 0 ? `

Strengths

${strengthCards}
` : ''}\n ${result.growthAreas.length > 0 ? `

Growth Areas

${growthCards}
` : ''}\n
\n `;\n}\n\n// ============================================================================\n// Focus Areas Section\n// ============================================================================\n\nfunction generateFocusAreas(content: AnalysisReport['content']): string {\n if (!content?.topFocusAreas?.length) return '';\n\n const areas = content.topFocusAreas\n .map(area => `\n
\n

${escapeHtml(area.title)}

\n

${escapeHtml(area.narrative ?? area.description ?? '')}

\n ${area.actions ? `\n
\n
Start: ${escapeHtml(area.actions.start)}
\n
Stop: ${escapeHtml(area.actions.stop)}
\n
Continue: ${escapeHtml(area.actions.continue)}
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

🎯 Top Focus Areas

\n ${areas}\n
\n `;\n}\n\nfunction generatePersonalitySummary(summary: string | undefined): string {\n if (!summary?.trim()) return '';\n\n return `\n
\n

🪞 Personality Summary

\n
\n

${escapeHtml(summary).replace(/\\n/g, '
')}

\n
\n
\n `;\n}\n\nfunction generatePromptPatternsSection(\n promptPatterns: Array<{ patternName?: string; description?: string; frequency?: string; examples?: Array<{ quote?: string; analysis?: string }> }> | undefined,\n): string {\n if (!promptPatterns?.length) return '';\n\n const items = promptPatterns\n .map(pattern => `\n
\n

${escapeHtml(pattern.patternName ?? 'Pattern')}

\n

${escapeHtml(pattern.description ?? '')}

\n

Frequency: ${escapeHtml(pattern.frequency ?? 'n/a')}

\n ${(pattern.examples?.length ?? 0) > 0 ? `\n
\n Examples (${pattern.examples!.length})\n
    \n ${pattern.examples!.map(example => `
  • \"${escapeHtml(example.quote ?? '')}\"${example.analysis ? ` — ${escapeHtml(example.analysis)}` : ''}
  • `).join('')}\n
\n
\n ` : ''}\n
\n `)\n .join('');\n\n return `\n
\n

🧩 Prompt Patterns

\n
${items}
\n
\n `;\n}\n\nfunction generateProjectSummariesSection(\n projectSummaries: Array<{ projectName: string; summaryLines: string[]; sessionCount: number }> | undefined,\n): string {\n if (!projectSummaries?.length) return '';\n\n const items = projectSummaries\n .map(project => `\n
\n

${escapeHtml(project.projectName)} (${project.sessionCount} sessions)

\n
    \n ${project.summaryLines.map(line => `
  • ${escapeHtml(line)}
  • `).join('')}\n
\n
\n `)\n .join('');\n\n return `\n
\n

📁 Project Summaries

\n
${items}
\n
\n `;\n}\n\n// ============================================================================\n// Activity Heatmap Section (ported from ActivitySection.tsx)\n// ============================================================================\n\ninterface HeatmapDayData {\n date: string;\n count: number;\n totalTokens: number;\n sessions: Array<{\n sessionId: string;\n projectName: string;\n startTime: string;\n durationMinutes: number;\n messageCount: number;\n summary: string;\n totalTokens: number;\n }>;\n}\n\nfunction heatmapToDateKey(dateStr: string): string {\n return dateStr.slice(0, 10);\n}\n\nfunction heatmapGetWeekStart(date: Date): Date {\n const d = new Date(date);\n d.setDate(d.getDate() - d.getDay());\n return d;\n}\n\nfunction heatmapAddDays(date: Date, days: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nfunction heatmapFormatTokenCount(tokens: number): string {\n if (tokens >= 1_000_000_000) return `${(tokens / 1_000_000_000).toFixed(1)}B`;\n if (tokens >= 1_000_000) return `${(tokens / 1_000_000).toFixed(1)}M`;\n if (tokens >= 1_000) return `${(tokens / 1_000).toFixed(1)}K`;\n return String(tokens);\n}\n\nfunction heatmapGetIntensityByCount(count: number): number {\n if (count === 0) return 0;\n if (count <= 2) return count;\n if (count <= 4) return 3;\n return 4;\n}\n\nfunction heatmapComputeTokenIntensity(grid: HeatmapDayData[]): (tokens: number) => number {\n const nonZero = grid\n .map(d => d.totalTokens)\n .filter(t => t > 0)\n .sort((a, b) => a - b);\n\n if (nonZero.length === 0) {\n return () => 0;\n }\n\n const p25 = nonZero[Math.floor(nonZero.length * 0.25)];\n const p50 = nonZero[Math.floor(nonZero.length * 0.50)];\n const p75 = nonZero[Math.floor(nonZero.length * 0.75)];\n\n return (tokens: number) => {\n if (tokens === 0) return 0;\n if (tokens <= p25) return 1;\n if (tokens <= p50) return 2;\n if (tokens <= p75) return 3;\n return 4;\n };\n}\n\nfunction heatmapFormatDate(dateStr: string): string {\n const d = new Date(dateStr + 'T00:00:00');\n return d.toLocaleDateString('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n}\n\nfunction generateActivityHeatmapSection(\n activitySessions: ReportActivitySession[] | undefined,\n): string {\n if (!activitySessions || activitySessions.length === 0) return '';\n\n const MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const DAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n // Unify session data\n const unified = activitySessions.map(s => ({\n sessionId: s.sessionId,\n projectName: s.projectName,\n startTime: s.startTime,\n durationMinutes: s.durationMinutes,\n messageCount: s.messageCount,\n summary: s.summary || '',\n totalTokens: (s.totalInputTokens || 0) + (s.totalOutputTokens || 0),\n }));\n\n // Group sessions by date\n const sessionsByDate = new Map();\n for (const session of unified) {\n const dateKey = heatmapToDateKey(session.startTime);\n if (!sessionsByDate.has(dateKey)) {\n sessionsByDate.set(dateKey, []);\n }\n sessionsByDate.get(dateKey)!.push(session);\n }\n\n // Compute date range\n const dates = unified.map(s => new Date(s.startTime)).sort((a, b) => a.getTime() - b.getTime());\n const startDate = dates[0];\n const endDate = dates[dates.length - 1];\n\n // Pad to full weeks\n const weekStart = heatmapGetWeekStart(startDate);\n const weekEnd = heatmapAddDays(endDate, 6 - endDate.getDay());\n\n // Build grid\n const grid: HeatmapDayData[] = [];\n const monthLabels: { text: string; column: number }[] = [];\n let currentDate = new Date(weekStart);\n let prevMonth = -1;\n let column = 0;\n\n while (currentDate <= weekEnd) {\n const dateKey = currentDate.toISOString().slice(0, 10);\n const sessions = sessionsByDate.get(dateKey) || [];\n const totalTokens = sessions.reduce((sum, s) => sum + s.totalTokens, 0);\n grid.push({ date: dateKey, count: sessions.length, totalTokens, sessions });\n\n const dayOfWeek = currentDate.getDay();\n const month = currentDate.getMonth();\n if (dayOfWeek === 0 && month !== prevMonth) {\n monthLabels.push({ text: MONTH_NAMES[month], column });\n prevMonth = month;\n }\n if (dayOfWeek === 6) {\n column++;\n }\n currentDate = heatmapAddDays(currentDate, 1);\n }\n\n const totalWeeks = Math.ceil(grid.length / 7);\n const hasTokenData = unified.some(s => s.totalTokens > 0);\n const getTokenIntensity = heatmapComputeTokenIntensity(grid);\n const cellSize = 16;\n const gap = 3;\n\n // Compute stats\n const totalSessions = unified.length;\n const activeDays = sessionsByDate.size;\n const totalTokensAll = unified.reduce((sum, s) => sum + s.totalTokens, 0);\n\n const projectCounts = new Map();\n for (const session of unified) {\n projectCounts.set(session.projectName, (projectCounts.get(session.projectName) || 0) + 1);\n }\n let mostActiveProject = '';\n let maxCount = 0;\n for (const [project, count] of projectCounts) {\n if (count > maxCount) {\n mostActiveProject = project;\n maxCount = count;\n }\n }\n\n // Build stat cards HTML\n const statCards = `\n
\n
\n ${totalSessions}\n Sessions\n
\n
\n ${activeDays}\n Active Days\n
\n ${totalTokensAll > 0 ? `\n
\n ${heatmapFormatTokenCount(totalTokensAll)}\n Total Tokens\n
\n ` : ''}\n ${mostActiveProject ? `\n
\n ${escapeHtml(mostActiveProject)}\n Top Project\n
\n ` : ''}\n
\n `;\n\n // Build month labels HTML\n const monthLabelsHtml = monthLabels.map(m =>\n `${m.text}`\n ).join('');\n\n // Build day labels HTML (show Mon/Wed/Fri only)\n const dayLabelsHtml = DAY_LABELS.map((label, i) =>\n `${label}`\n ).join('');\n\n // Build grid cells HTML\n const cellsHtml = grid.map((day) => {\n const intensity = hasTokenData\n ? getTokenIntensity(day.totalTokens)\n : heatmapGetIntensityByCount(day.count);\n const title = day.count > 0\n ? `${heatmapFormatDate(day.date)}: ${day.totalTokens > 0 ? `${heatmapFormatTokenCount(day.totalTokens)} tokens, ` : ''}${day.count} session${day.count !== 1 ? 's' : ''}`\n : `${heatmapFormatDate(day.date)}: No sessions`;\n return `
0 ? ' onclick=\"showHeatmapDetail(this.dataset.date)\"' : ''}>
`;\n }).join('');\n\n // Build legend\n const legendHtml = `\n
\n Less\n
\n ${[0, 1, 2, 3, 4].map(level => `
`).join('')}\n
\n More\n
\n `;\n\n // Build session data JSON for client-side detail panel\n const sessionDataByDate: Record = {};\n for (const day of grid) {\n if (day.sessions.length > 0) {\n sessionDataByDate[day.date] = day.sessions;\n }\n }\n\n return `\n
\n
\n 📊\n
\n

Monthly Vibe

\n

${totalSessions} sessions · ${activeDays} active days

\n
\n
\n
\n ${statCards}\n
\n
${monthLabelsHtml}
\n
\n
${dayLabelsHtml}
\n
\n ${cellsHtml}\n
\n
\n ${legendHtml}\n
\n
\n
\n
\n \n `;\n}\n\nfunction generateWeeklyInsightsSection(\n weeklyInsights: {\n stats?: { totalSessions?: number; totalMinutes?: number; totalTokens?: number; activeDays?: number };\n projects?: Array<{ projectName: string; sessionCount: number; percentage: number }>;\n narrative?: string;\n highlights?: string[];\n topProjectSessions?: Array<{ summary: string; durationMinutes: number; date: string }>;\n } | undefined,\n): string {\n if (!weeklyInsights) return '';\n\n const stats = weeklyInsights.stats;\n const highlights = weeklyInsights.highlights ?? [];\n const projects = weeklyInsights.projects ?? [];\n const topSessions = weeklyInsights.topProjectSessions ?? [];\n\n return `\n
\n

📆 Weekly Insights

\n ${stats ? `\n
\n
${stats.totalSessions ?? 0}
Sessions
\n
${Math.round(stats.totalMinutes ?? 0)}
Minutes
\n
${Math.round((stats.totalTokens ?? 0) / 1000)}k
Tokens
\n
${stats.activeDays ?? 0}
Active Days
\n
\n ` : ''}\n ${weeklyInsights.narrative ? `

${escapeHtml(weeklyInsights.narrative)}

` : ''}\n ${projects.length > 0 ? `\n
\n

Project Breakdown

\n
    \n ${projects.map(project => `
  • ${escapeHtml(project.projectName)}: ${project.sessionCount} sessions, ${project.percentage}%
  • `).join('')}\n
\n
\n ` : ''}\n ${topSessions.length > 0 ? `\n
\n

Top Sessions

\n
    \n ${topSessions.map(session => `
  • ${escapeHtml(session.date)} · ${Math.round(session.durationMinutes)} min · ${escapeHtml(session.summary)}
  • `).join('')}\n
\n
\n ` : ''}\n ${highlights.length > 0 ? `\n
\n

Highlights

\n
    \n ${highlights.map(item => `
  • ${escapeHtml(item)}
  • `).join('')}\n
\n
\n ` : ''}\n
\n `;\n}\n\nfunction generateKnowledgeResourcesSection(\n knowledgeResources: Array<{\n dimensionDisplayName?: string;\n knowledgeItems?: Array<{ title?: string; summary?: string; sourceAuthor?: string; sourceUrl?: string }>;\n professionalInsights?: Array<{ title?: string; keyTakeaway?: string; sourceAuthor?: string; sourceUrl?: string }>;\n }> | undefined,\n): string {\n if (!knowledgeResources?.length) return '';\n\n return `\n
\n

📚 Knowledge Resources

\n
\n ${knowledgeResources.map((group) => `\n
\n

${escapeHtml(group.dimensionDisplayName ?? 'Recommended Resources')}

\n ${(group.professionalInsights?.length ?? 0) > 0 ? `\n

Professional Insights

\n
    \n ${group.professionalInsights!.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? 'Insight')}${item.keyTakeaway ? `: ${escapeHtml(item.keyTakeaway)}` : ''}
  • `).join('')}\n
\n ` : ''}\n ${(group.knowledgeItems?.length ?? 0) > 0 ? `\n

Suggested Reading

\n
    \n ${group.knowledgeItems!.slice(0, 3).map((item) => `
  • ${escapeHtml(item.title ?? 'Resource')}${item.summary ? `: ${escapeHtml(item.summary)}` : ''}
  • `).join('')}\n
\n ` : ''}\n
\n `).join('')}\n
\n
\n `;\n}\n\n// ============================================================================\n// Shared HTML Fragments\n// ============================================================================\n\nfunction generateBaseCss(): string {\n return `\n /* ── Notebook Sketch Design System ── */\n\n :root {\n --bg-paper: #FFFFFF;\n --bg-paper-warm: #FFFEF8;\n --bg-grid-color: #E8EDF5;\n --bg-grid-size: 20px;\n --ink-primary: #1A1A2E;\n --ink-secondary: #4A4A5A;\n --ink-muted: #8A8A9A;\n --sketch-cyan: #00BCD4;\n --sketch-green: #4ADE80;\n --sketch-pink: #FF6B9D;\n --sketch-blue: #3B82F6;\n --sketch-purple: #9C7CF4;\n --sketch-yellow: #FFD93D;\n --sketch-orange: #FB923C;\n --sketch-red: #EF4444;\n }\n\n * { margin: 0; padding: 0; box-sizing: border-box; }\n\n body {\n font-family: 'Fira Code', monospace;\n background: var(--bg-paper-warm);\n background-image:\n linear-gradient(var(--bg-grid-color) 1px, transparent 1px),\n linear-gradient(90deg, var(--bg-grid-color) 1px, transparent 1px);\n background-size: var(--bg-grid-size) var(--bg-grid-size);\n color: var(--ink-primary);\n line-height: 1.6;\n padding: 40px 20px;\n }\n\n .container {\n max-width: 900px;\n margin: 0 auto;\n }\n\n /* ── Header ── */\n .header {\n text-align: center;\n margin-bottom: 48px;\n padding-bottom: 24px;\n border-bottom: 2px solid var(--ink-primary);\n }\n .header h1 { font-size: 28px; font-weight: 700; margin-bottom: 8px; }\n .header .subtitle { color: var(--ink-secondary); font-size: 13px; }\n\n /* ── Identity Section ── */\n .identity {\n display: flex;\n gap: 32px;\n align-items: center;\n margin-bottom: 48px;\n padding: 24px;\n background: var(--bg-paper);\n border: 2px solid var(--ink-primary);\n border-radius: 8px;\n }\n .identity .type-info { flex: 1; }\n .identity .type-emoji { font-size: 48px; }\n .identity .type-name { font-size: 22px; font-weight: 700; margin-top: 8px; }\n .identity .type-detail { color: var(--ink-secondary); font-size: 13px; margin-top: 4px; }\n\n /* ── Scores Grid ── */\n .scores-section {\n display: flex;\n gap: 32px;\n margin-bottom: 48px;\n align-items: flex-start;\n }\n .radar-container { flex-shrink: 0; }\n .distribution-container { flex: 1; }\n\n /* ── Cards ── */\n .card {\n background: var(--bg-paper);\n border: 1px solid var(--bg-grid-color);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 12px;\n }\n .card h4 { font-size: 14px; margin-bottom: 8px; }\n .card p { font-size: 13px; color: var(--ink-secondary); line-height: 1.5; }\n .card-grid { display: grid; grid-template-columns: 1fr; gap: 12px; }\n\n .strength-card { border-left: 3px solid var(--sketch-green); }\n .growth-card { border-left: 3px solid var(--sketch-orange); }\n .focus-card { border-left: 3px solid var(--sketch-cyan); }\n\n .severity-badge {\n display: inline-block;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n margin-bottom: 8px;\n text-transform: uppercase;\n }\n .severity-low { background: rgba(74,222,128,0.15); color: #16a34a; }\n .severity-medium { background: rgba(251,146,60,0.15); color: #ea580c; }\n .severity-high { background: rgba(239,68,68,0.15); color: #dc2626; }\n\n .recommendation {\n margin-top: 8px;\n padding: 8px 12px;\n background: rgba(0,188,212,0.08);\n border-radius: 4px;\n font-size: 12px;\n color: var(--ink-secondary);\n }\n\n details { margin-top: 8px; }\n details summary {\n cursor: pointer;\n font-size: 12px;\n color: var(--ink-muted);\n }\n details ul { margin-top: 4px; padding-left: 20px; font-size: 12px; color: var(--ink-secondary); }\n details li { margin-bottom: 4px; }\n details code { font-size: 11px; background: #f0f0f5; padding: 1px 4px; border-radius: 2px; }\n\n /* ── Domain Sections ── */\n .domain-section {\n margin-bottom: 48px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--bg-grid-color);\n }\n .domain-section h2 {\n font-size: 20px;\n margin-bottom: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .domain-section h3 {\n font-size: 14px;\n font-weight: 600;\n color: var(--ink-secondary);\n margin: 16px 0 8px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n .score {\n font-size: 14px;\n font-weight: 400;\n color: var(--sketch-cyan);\n margin-left: auto;\n }\n\n /* ── Actions Grid ── */\n .actions-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 8px;\n margin-top: 12px;\n }\n .action {\n padding: 8px;\n border-radius: 4px;\n font-size: 12px;\n color: var(--ink-secondary);\n }\n .action.start { background: rgba(74,222,128,0.1); }\n .action.stop { background: rgba(239,68,68,0.1); }\n .action.continue { background: rgba(59,130,246,0.1); }\n .action strong { display: block; font-size: 11px; color: var(--ink-primary); margin-bottom: 4px; }\n\n /* ── Metrics Bar ── */\n .metrics-bar {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n margin-bottom: 32px;\n padding: 16px;\n background: var(--bg-paper);\n border: 1px solid var(--bg-grid-color);\n border-radius: 8px;\n }\n .metric {\n text-align: center;\n }\n .metric .value { font-size: 24px; font-weight: 700; color: var(--sketch-cyan); }\n .metric .label { font-size: 11px; color: var(--ink-muted); }\n\n /* ── Navigation Dots ── */\n .nav-dots {\n position: fixed;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n flex-direction: column;\n gap: 12px;\n z-index: 100;\n }\n .nav-dot {\n display: block;\n text-decoration: none;\n }\n .nav-dot .dot {\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--bg-grid-color);\n border: 1px solid var(--ink-muted);\n transition: all 0.2s;\n }\n .nav-dot:hover .dot,\n .nav-dot.active .dot {\n background: var(--sketch-cyan);\n border-color: var(--sketch-cyan);\n transform: scale(1.5);\n }\n\n /* ── Footer ── */\n .footer {\n text-align: center;\n padding: 24px;\n color: var(--ink-muted);\n font-size: 12px;\n }\n\n @media (max-width: 640px) {\n .identity { flex-direction: column; text-align: center; }\n .scores-section { flex-direction: column; }\n .actions-grid { grid-template-columns: 1fr; }\n }\n `;\n}\n\nfunction renderNavDotsHtml(dots: Array<{ id: string; label: string }>): string {\n return dots\n .map(d => ``)\n .join('');\n}\n\nfunction renderIdentitySection(typeResult: DeterministicTypeResult | null, fallbackMessage: string): string {\n if (typeResult) {\n return `\n
${typeResult.matrixEmoji}
\n
\n
${escapeHtml(typeResult.matrixName)}
\n
${escapeHtml(typeResult.primaryType)} / ${escapeHtml(typeResult.controlLevel)} (control: ${typeResult.controlScore})
\n
\n `;\n }\n return `\n
\n
Type Not Classified
\n
${escapeHtml(fallbackMessage)}
\n
\n `;\n}\n\nfunction renderMetricsBar(metrics: AnalysisReport['phase1Metrics']): string {\n return `\n
\n
\n
${metrics.totalSessions}
\n
Sessions
\n
\n
\n
${metrics.totalDeveloperUtterances}
\n
Utterances
\n
\n
\n
${Math.round(metrics.avgMessagesPerSession)}
\n
Avg Messages/Session
\n
\n
\n
${Math.round(metrics.questionRatio * 100)}%
\n
Questions
\n
\n
\n
${Math.round(metrics.codeBlockRatio * 100)}%
\n
Code Blocks
\n
\n
\n `;\n}\n\nfunction renderScrollSpyScript(): string {\n return `\n `;\n}\n\n// ============================================================================\n// Main HTML Generator\n// ============================================================================\n\nexport function generateReportHtml(report: AnalysisReport): string {\n const { typeResult, deterministicScores, phase1Metrics, domainResults, content } = report;\n\n const radarSvg = generateRadarSvg(buildRadarScores(deterministicScores), RADAR_LABELS);\n const distributionBar = typeResult\n ? generateTypeDistributionBar(typeResult.distribution)\n : '

Type classification not yet performed. Run classify_developer_type first.

';\n const domainSections = domainResults.map(generateDomainSection).join('\\n');\n const focusAreasSection = generateFocusAreas(content);\n\n const navDots = [\n { id: 'identity', label: 'Identity' },\n { id: 'scores', label: 'Scores' },\n ...domainResults.map((d: DomainResult) => ({\n id: `domain-${d.domain}`,\n label: DOMAIN_LABELS[d.domain]?.label ?? d.domain,\n })),\n ...(content?.topFocusAreas?.length ? [{ id: 'focus-areas', label: 'Focus' }] : []),\n ];\n\n return `\n\n\n \n \n BetterPrompt Analysis Report\n \n \n\n\n \n\n
\n
\n

BetterPrompt Analysis

\n

Generated ${new Date(report.analyzedAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}

\n
\n\n
\n ${renderIdentitySection(typeResult, 'Run classify_developer_type to determine your collaboration style')}\n
\n\n ${renderMetricsBar(phase1Metrics)}\n\n
\n
${radarSvg}
\n
\n

Type Distribution

\n ${distributionBar}\n
\n
\n\n ${domainSections}\n ${focusAreasSection}\n\n
\n Generated by BetterPrompt Plugin v0.2.0 — local-first AI collaboration analysis\n
\n
\n ${renderScrollSpyScript()}\n\n`;\n}\n\nexport function generateCanonicalReportHtml(run: CanonicalAnalysisRun): string {\n const evaluation = run.evaluation as Record;\n const personalitySummary = typeof evaluation.personalitySummary === 'string'\n ? evaluation.personalitySummary\n : '';\n const promptPatterns = Array.isArray(evaluation.promptPatterns)\n ? evaluation.promptPatterns as Array<{ patternName?: string; description?: string; frequency?: string; examples?: Array<{ quote?: string; analysis?: string }> }>\n : [];\n const projectSummaries = Array.isArray(evaluation.projectSummaries)\n ? evaluation.projectSummaries as Array<{ projectName: string; summaryLines: string[]; sessionCount: number }>\n : [];\n const weeklyInsights = evaluation.weeklyInsights as {\n stats?: { totalSessions?: number; totalMinutes?: number; totalTokens?: number; activeDays?: number };\n projects?: Array<{ projectName: string; sessionCount: number; percentage: number }>;\n narrative?: string;\n highlights?: string[];\n topProjectSessions?: Array<{ summary: string; durationMinutes: number; date: string }>;\n } | undefined;\n const focusAreas = (evaluation.topFocusAreas as { areas?: Array<{ title: string; narrative?: string; actions?: { start: string; stop: string; continue: string } }> } | undefined)?.areas;\n const knowledgeResources = Array.isArray(evaluation.knowledgeResources)\n ? evaluation.knowledgeResources as Array<{\n dimensionDisplayName?: string;\n knowledgeItems?: Array<{ title?: string; summary?: string; sourceAuthor?: string; sourceUrl?: string }>;\n professionalInsights?: Array<{ title?: string; keyTakeaway?: string; sourceAuthor?: string; sourceUrl?: string }>;\n }>\n : [];\n\n const legacyContent = focusAreas\n ? {\n topFocusAreas: focusAreas.map(area => ({\n title: area.title,\n narrative: area.narrative,\n description: area.narrative,\n actions: area.actions,\n })),\n }\n : undefined;\n\n const typeResult = run.typeResult;\n const radarSvg = generateRadarSvg(buildRadarScores(run.deterministicScores), RADAR_LABELS);\n const distributionBar = typeResult\n ? generateTypeDistributionBar(typeResult.distribution)\n : '

Type classification not yet performed.

';\n const domainSections = run.domainResults.map(generateDomainSection).join('\\n');\n const focusAreasSection = generateFocusAreas(legacyContent);\n const personalitySummarySection = generatePersonalitySummary(personalitySummary);\n const promptPatternsSection = generatePromptPatternsSection(promptPatterns);\n const projectSummariesSection = generateProjectSummariesSection(projectSummaries);\n const weeklyInsightsSection = generateWeeklyInsightsSection(weeklyInsights);\n const knowledgeResourcesSection = generateKnowledgeResourcesSection(knowledgeResources);\n const activityHeatmapSection = generateActivityHeatmapSection(run.activitySessions);\n\n const navDots = [\n { id: 'identity', label: 'Identity' },\n { id: 'scores', label: 'Scores' },\n ...((run.activitySessions?.length ?? 0) > 0 ? [{ id: 'activity-heatmap', label: 'Activity' }] : []),\n ...(personalitySummary ? [{ id: 'personality-summary', label: 'Summary' }] : []),\n ...(promptPatterns.length > 0 ? [{ id: 'prompt-patterns', label: 'Patterns' }] : []),\n ...(projectSummaries.length > 0 ? [{ id: 'project-summaries', label: 'Projects' }] : []),\n ...(weeklyInsights ? [{ id: 'weekly-insights', label: 'Week' }] : []),\n ...(knowledgeResources.length > 0 ? [{ id: 'knowledge-resources', label: 'Resources' }] : []),\n ...run.domainResults.map((d: DomainResult) => ({\n id: `domain-${d.domain}`,\n label: DOMAIN_LABELS[d.domain]?.label ?? d.domain,\n })),\n ...(legacyContent?.topFocusAreas?.length ? [{ id: 'focus-areas', label: 'Focus' }] : []),\n ];\n\n return `\n\n\n \n \n BetterPrompt Analysis Report\n \n \n\n\n \n\n
\n
\n

BetterPrompt Analysis

\n

Generated ${new Date(run.analyzedAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}

\n
\n\n
\n ${renderIdentitySection(typeResult, 'Run type classification before generating the final report.')}\n
\n\n ${renderMetricsBar(run.phase1Output.sessionMetrics)}\n\n
\n
${radarSvg}
\n
\n

Type Distribution

\n ${distributionBar}\n
\n
\n\n ${activityHeatmapSection}\n ${personalitySummarySection}\n ${promptPatternsSection}\n ${projectSummariesSection}\n ${weeklyInsightsSection}\n ${knowledgeResourcesSection}\n ${domainSections}\n ${focusAreasSection}\n\n
\n Generated by BetterPrompt Plugin v0.2.0 - local-first AI collaboration analysis\n
\n
\n ${renderScrollSpyScript()}\n\n`;\n}\n","/**\n * sync_to_team MCP Tool\n *\n * Sends analysis results to a team server (self-hosted or cloud).\n * Optional tool — uses the configured plugin server URL unless overridden.\n */\n\nimport { getConfig } from '../../lib/config.js';\nimport { assembleCanonicalRun } from '../../lib/results-db.js';\nimport { markAnalysisComplete } from '../../lib/debounce.js';\n\nexport const definition = {\n name: 'sync_to_team',\n description:\n 'Sync local analysis results to a team BetterPrompt server. ' +\n 'Uses the BetterPrompt plugin server URL setting unless serverUrl is passed explicitly. ' +\n 'The server receives pre-analyzed results (no LLM work needed server-side). ' +\n 'Use this to share your analysis with your team dashboard.',\n};\n\nexport async function execute(args: { serverUrl?: string }): Promise {\n const serverUrl = (args.serverUrl ?? getConfig().serverUrl)?.replace(/\\/$/, '');\n\n if (!serverUrl) {\n return JSON.stringify({\n status: 'not_configured',\n message:\n 'No team server URL is available. Set the BetterPrompt plugin serverUrl setting ' +\n 'or pass serverUrl to enable team sync.',\n });\n }\n\n const run = assembleCanonicalRun();\n if (!run) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No analysis results to sync. Run a full analysis first.',\n });\n }\n\n try {\n const response = await fetch(`${serverUrl}/api/analysis/sync`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n run,\n syncedAt: new Date().toISOString(),\n }),\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'Unknown error');\n return JSON.stringify({\n status: 'sync_failed',\n httpStatus: response.status,\n message: `Server returned ${response.status}: ${errorText}`,\n });\n }\n\n const result = await response.json().catch(() => ({})) as Record;\n markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions);\n\n return JSON.stringify({\n status: 'ok',\n serverUrl,\n message: `Successfully synced analysis to ${serverUrl}.`,\n ...(result && typeof result === 'object' ? result : {}),\n });\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Failed to connect to ${serverUrl}: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n}\n","/**\n * save_stage_output MCP Tool\n *\n * Accepts and validates pipeline stage outputs (session summaries,\n * project summaries, weekly insights, evidence verification, etc.)\n * and persists them in the local results database.\n *\n * Called by stage-specific analysis skills after the host LLM\n * completes each pipeline stage.\n *\n * @module plugin/mcp/tools/save-stage-output\n */\n\nimport { z } from 'zod';\nimport {\n STAGE_NAMES,\n STAGE_SCHEMAS,\n} from '@betterprompt/shared';\nimport { getCurrentRunId } from '../../lib/results-db.js';\nimport { recordStageStatus, saveStageOutput } from '../../lib/stage-db.js';\n\nexport const definition = {\n name: 'save_stage_output',\n description:\n 'Save output from a pipeline stage. ' +\n 'Called after completing a stage (sessionSummaries, projectSummaries, ' +\n 'weeklyInsights, typeClassification, evidenceVerification, contentWriter, translator, ' +\n 'extractAiPartnership, extractSessionCraft, extractToolMastery, ' +\n 'extractSkillResilience, extractSessionMastery). ' +\n 'Input must include stage name and structured data matching the stage schema.',\n};\n\nexport const StageOutputInputSchema = z.object({\n stage: z.enum(STAGE_NAMES),\n data: z.record(z.string(), z.unknown()),\n});\n\nfunction extractStageName(args: Record): string | null {\n return typeof args.stage === 'string' ? args.stage : null;\n}\n\nexport async function execute(args: Record): Promise {\n const runId = getCurrentRunId();\n const stageName = extractStageName(args);\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first to start an analysis.',\n });\n }\n\n const parsed = StageOutputInputSchema.safeParse(args);\n if (!parsed.success) {\n if (stageName) {\n recordStageStatus(runId, stageName, {\n status: 'failed',\n lastError: 'Invalid stage output format.',\n });\n }\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid stage output format.',\n errors: parsed.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n });\n }\n\n const { stage, data } = parsed.data;\n const stageSchema = STAGE_SCHEMAS[stage];\n if (stageSchema) {\n const stageValidation = stageSchema.safeParse(data);\n if (!stageValidation.success) {\n recordStageStatus(runId, stage, {\n status: 'failed',\n lastError: `Data does not match ${stage} schema.`,\n });\n return JSON.stringify({\n status: 'validation_error',\n message: `Data does not match ${stage} schema.`,\n errors: stageValidation.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n });\n }\n }\n\n saveStageOutput(runId, stage, data);\n recordStageStatus(runId, stage, {\n status: 'validated',\n });\n\n return JSON.stringify({\n status: 'ok',\n stage,\n runId,\n message: `Saved ${stage} output to run #${runId}.`,\n });\n}\n","/**\n * get_stage_output MCP Tool\n *\n * Reads a previously saved pipeline stage output from the local DB.\n * Used by downstream skills to access results from earlier stages\n * (e.g., project summarizer reads session summaries from Phase 1.5).\n *\n * @module plugin/mcp/tools/get-stage-output\n */\n\nimport { getCurrentRunId } from '../../lib/results-db.js';\nimport { getStageOutput, getAllStageOutputs } from '../../lib/stage-db.js';\n\nexport const definition = {\n name: 'get_stage_output',\n description:\n 'Read a previously saved pipeline stage output. ' +\n 'Provide a stage name to get that specific output, or omit to get all stages. ' +\n 'Available stages: sessionSummaries, projectSummaries, weeklyInsights, ' +\n 'typeClassification, evidenceVerification, contentWriter, translator.',\n};\n\nexport async function execute(args: { stage?: string }): Promise {\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first.',\n });\n }\n\n if (args.stage) {\n const data = getStageOutput(runId, args.stage);\n if (!data) {\n return JSON.stringify({\n status: 'not_found',\n stage: args.stage,\n runId,\n message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.`,\n });\n }\n return JSON.stringify({\n status: 'ok',\n stage: args.stage,\n runId,\n data,\n });\n }\n\n const all = getAllStageOutputs(runId);\n const stages = Object.keys(all);\n return JSON.stringify({\n status: 'ok',\n runId,\n stagesAvailable: stages,\n data: all,\n });\n}\n","/**\n * Prompt Context Builders\n *\n * Produces stage- and domain-specific prompt payloads from the current\n * canonical run state so skills no longer need to reread the raw Phase 1 file.\n *\n * @module plugin/lib/prompt-context\n */\n\nimport type {\n CanonicalStageOutputs,\n DeterministicScores,\n DeterministicTypeResult,\n DomainResult,\n ParsedSession,\n Phase1Output,\n} from './core/types.js';\nimport { CONTEXT_WINDOW_SIZE } from './core/types.js';\n\nexport const PROMPT_CONTEXT_KINDS = [\n 'sessionSummaries',\n 'domainAnalysis',\n 'projectSummaries',\n 'weeklyInsights',\n 'typeClassification',\n 'evidenceVerification',\n 'contentWriter',\n 'translation',\n] as const;\n\nexport type PromptContextKind = typeof PROMPT_CONTEXT_KINDS[number];\n\nexport type PromptContextDomain =\n | 'aiPartnership'\n | 'sessionCraft'\n | 'toolMastery'\n | 'skillResilience'\n | 'sessionMastery';\n\ninterface PromptContextInput {\n kind: PromptContextKind;\n phase1Output: Phase1Output;\n deterministicScores: DeterministicScores;\n typeResult: DeterministicTypeResult | null;\n domainResults: DomainResult[];\n stageOutputs: CanonicalStageOutputs;\n domain?: PromptContextDomain;\n}\n\ntype SessionMessageWithMeta = ParsedSession['messages'][number] & {\n isMeta?: boolean;\n};\n\nconst SKILL_INJECTION_PREFIX = 'Base directory for this skill:';\n\nfunction trimText(text: string | undefined, maxChars: number): string {\n if (!text) return '';\n if (text.length <= maxChars) return text;\n return `${text.slice(0, maxChars - 1)}…`;\n}\n\nfunction isAnalyzablePromptContextUserMessage(message: SessionMessageWithMeta): boolean {\n return message.role === 'user'\n && !message.isMeta\n && typeof message.sourceToolUseID !== 'string'\n && message.toolUseResult === undefined\n && !message.content.trim().startsWith(SKILL_INJECTION_PREFIX);\n}\n\nfunction trimMessages(\n messages: ParsedSession['messages'],\n maxMessages: number,\n maxChars: number,\n) {\n return messages.slice(0, maxMessages).map((message) => ({\n role: message.role,\n timestamp: message.timestamp,\n content: trimText(message.content, maxChars),\n ...(Array.isArray(message.toolCalls) && message.toolCalls.length > 0\n ? {\n toolCalls: message.toolCalls.slice(0, 5).map((toolCall) => ({\n id: toolCall.id,\n name: toolCall.name,\n ...(toolCall.isError ? { isError: true } : {}),\n })),\n }\n : {}),\n ...(message.tokenUsage ? { tokenUsage: message.tokenUsage } : {}),\n }));\n}\n\n// Caps to keep domainAnalysis payloads under ~80k tokens for haiku-class models.\n// Tune these if analysis quality degrades or rate limits persist.\nconst MAX_UTTERANCES = 300;\nconst MAX_INTERACTION_SNAPSHOTS = 200;\nconst MAX_SESSION_OVERVIEWS = 40;\n\nfunction buildTrimmedDeveloperUtterances(\n phase1Output: Phase1Output,\n maxChars: number,\n) {\n return phase1Output.developerUtterances.slice(0, MAX_UTTERANCES).map((utterance) => ({\n id: utterance.id,\n text: trimText(utterance.displayText || utterance.text, maxChars),\n sessionId: utterance.sessionId,\n turnIndex: utterance.turnIndex,\n characterCount: utterance.characterCount,\n wordCount: utterance.wordCount,\n hasCodeBlock: utterance.hasCodeBlock,\n hasQuestion: utterance.hasQuestion,\n isSessionStart: utterance.isSessionStart,\n isContinuation: utterance.isContinuation,\n precedingAIToolCalls: utterance.precedingAIToolCalls?.slice(0, 8),\n precedingAIHadError: utterance.precedingAIHadError,\n timestamp: utterance.timestamp,\n }));\n}\n\nfunction asSessionMessageWithMeta(\n message: ParsedSession['messages'][number],\n): SessionMessageWithMeta {\n return message as SessionMessageWithMeta;\n}\n\nfunction buildSessionOverviews(phase1Output: Phase1Output) {\n return (phase1Output.sessions ?? []).slice(0, MAX_SESSION_OVERVIEWS).map((session) => {\n const messages = session.messages.map(asSessionMessageWithMeta);\n const userMessages = messages.filter(isAnalyzablePromptContextUserMessage);\n const assistantMessages = messages.filter((message) => message.role === 'assistant');\n const firstAssistant = assistantMessages[0];\n const toolSequence = assistantMessages\n .flatMap((message) => message.toolCalls?.map((toolCall) => toolCall.name) ?? [])\n .filter((toolName, index, all) => all.indexOf(toolName) === index)\n .slice(0, 10);\n const peakAssistantInputTokens = assistantMessages.reduce(\n (max, message) => Math.max(max, message.tokenUsage?.input ?? 0),\n 0,\n );\n const peakContextFillPercent = peakAssistantInputTokens > 0\n ? Math.round((peakAssistantInputTokens / CONTEXT_WINDOW_SIZE) * 1000) / 10\n : undefined;\n\n return {\n sessionId: session.sessionId,\n projectName: session.projectName ?? 'unknown',\n startTime: session.startTime,\n endTime: session.endTime,\n durationSeconds: session.durationSeconds,\n stats: {\n userMessageCount: userMessages.length,\n assistantMessageCount: assistantMessages.length,\n toolCallCount: session.stats.toolCallCount,\n uniqueToolsUsed: session.stats.uniqueToolsUsed,\n totalInputTokens: session.stats.totalInputTokens,\n totalOutputTokens: session.stats.totalOutputTokens,\n },\n firstUserMessage: trimText(userMessages[0]?.content, 220),\n firstAssistantPreview: trimText(firstAssistant?.content, 220),\n firstAssistantAskedQuestion: Boolean(firstAssistant?.content?.includes('?')),\n assistantErrorCount: assistantMessages.reduce(\n (count, message) => count + (message.toolCalls?.some((toolCall) => toolCall.isError) ? 1 : 0),\n 0,\n ),\n toolSequence,\n peakContextFillPercent,\n };\n });\n}\n\nfunction buildInteractionSnapshots(\n phase1Output: Phase1Output,\n options?: { maxUserChars?: number; maxAssistantChars?: number },\n) {\n const { maxUserChars = 260, maxAssistantChars = 220 } = options ?? {};\n\n const snapshots = (phase1Output.sessions ?? []).flatMap((session) => {\n const messages = session.messages.map(asSessionMessageWithMeta);\n return messages.flatMap((message, index) => {\n if (!isAnalyzablePromptContextUserMessage(message)) {\n return [];\n }\n\n const precedingAssistant = [...messages.slice(0, index)]\n .reverse()\n .find((candidate) => candidate.role === 'assistant');\n\n return [{\n utteranceId: `${session.sessionId}_${index}`,\n sessionId: session.sessionId,\n projectName: session.projectName ?? 'unknown',\n turnIndex: index,\n text: trimText(message.content, maxUserChars),\n characterCount: message.content.length,\n hasQuestion: message.content.includes('?'),\n isSessionStart: !messages.slice(0, index).some(isAnalyzablePromptContextUserMessage),\n precedingAssistantPreview: trimText(precedingAssistant?.content, maxAssistantChars),\n precedingAssistantLength: precedingAssistant?.content?.length ?? 0,\n precedingAssistantHadCodeBlock: Boolean(precedingAssistant?.content?.includes('```')),\n precedingAIToolCalls: precedingAssistant?.toolCalls?.map((toolCall) => toolCall.name).slice(0, 8),\n precedingAIHadError: precedingAssistant?.toolCalls?.some((toolCall) => toolCall.isError) ?? false,\n }];\n });\n });\n\n return snapshots.slice(0, MAX_INTERACTION_SNAPSHOTS);\n}\n\nfunction buildUtteranceLookup(phase1Output: Phase1Output): Record {\n return Object.fromEntries(\n phase1Output.developerUtterances.map((utterance) => [\n utterance.id,\n utterance.displayText || utterance.text,\n ]),\n );\n}\n\nfunction buildTrimmedSessionInput(phase1Output: Phase1Output) {\n return (phase1Output.sessions ?? []).map((session) => ({\n sessionId: session.sessionId,\n projectPath: session.projectPath,\n projectName: session.projectName ?? 'unknown',\n startTime: session.startTime,\n endTime: session.endTime,\n durationSeconds: session.durationSeconds,\n source: session.source,\n stats: session.stats,\n messages: trimMessages(session.messages, 12, 700),\n }));\n}\n\nfunction buildCondensedDomainResults(\n domainResults: DomainResult[],\n options?: {\n maxStrengths?: number;\n maxGrowthAreas?: number;\n maxDescriptionChars?: number;\n maxRecommendationChars?: number;\n },\n) {\n const {\n maxStrengths = 2,\n maxGrowthAreas = 2,\n maxDescriptionChars = 420,\n maxRecommendationChars = 260,\n } = options ?? {};\n\n return domainResults.map((result) => ({\n domain: result.domain,\n overallScore: result.overallScore,\n confidenceScore: result.confidenceScore,\n strengths: result.strengths.slice(0, maxStrengths).map((strength) => ({\n title: strength.title,\n description: trimText(strength.description, maxDescriptionChars),\n evidenceCount: strength.evidence.length,\n })),\n growthAreas: result.growthAreas.slice(0, maxGrowthAreas).map((growthArea) => ({\n title: growthArea.title,\n description: trimText(growthArea.description, maxDescriptionChars),\n severity: growthArea.severity,\n recommendation: trimText(growthArea.recommendation, maxRecommendationChars),\n evidenceCount: growthArea.evidence.length,\n })),\n analyzedAt: result.analyzedAt,\n }));\n}\n\nfunction buildCondensedContentWriterStageOutputs(stageOutputs: CanonicalStageOutputs) {\n return {\n typeClassification: stageOutputs.typeClassification\n ? {\n collaborationMaturity: stageOutputs.typeClassification.collaborationMaturity,\n reasoning: stageOutputs.typeClassification.reasoning.slice(0, 1).map((paragraph) => trimText(paragraph, 500)),\n personalityNarrative: stageOutputs.typeClassification.personalityNarrative\n .slice(0, 1)\n .map((paragraph) => trimText(paragraph, 500)),\n }\n : undefined,\n weeklyInsights: stageOutputs.weeklyInsights\n ? {\n stats: stageOutputs.weeklyInsights.stats,\n projects: stageOutputs.weeklyInsights.projects,\n topSessions: stageOutputs.weeklyInsights.topSessions,\n narrative: trimText(stageOutputs.weeklyInsights.narrative, 600),\n highlights: stageOutputs.weeklyInsights.highlights.slice(0, 5).map((item) => trimText(item, 180)),\n }\n : undefined,\n projectSummaries: stageOutputs.projectSummaries,\n evidenceVerification: stageOutputs.evidenceVerification\n ? {\n threshold: stageOutputs.evidenceVerification.threshold,\n domainStats: stageOutputs.evidenceVerification.domainStats,\n verifiedEvidenceCount: stageOutputs.evidenceVerification.verifiedResults.length,\n }\n : undefined,\n };\n}\n\nfunction buildThinkingQualityContext(phase1Output: Phase1Output) {\n return {\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 280),\n sessionMetrics: phase1Output.sessionMetrics,\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 260,\n maxAssistantChars: 200,\n }),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 20).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 180),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n };\n}\n\nfunction buildCommunicationContext(phase1Output: Phase1Output) {\n return {\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260),\n sessionMetrics: phase1Output.sessionMetrics,\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 220,\n maxAssistantChars: 160,\n }),\n };\n}\n\nfunction buildLearningContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 260),\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 240,\n maxAssistantChars: 200,\n }),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 200),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n };\n}\n\nfunction buildEfficiencyContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 220,\n maxAssistantChars: 160,\n }),\n developerUtterances: buildTrimmedDeveloperUtterances(phase1Output, 240),\n };\n}\n\nfunction buildSessionOutcomeContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n };\n}\n\nfunction buildSessionMasteryContext(phase1Output: Phase1Output) {\n return {\n sessionMetrics: phase1Output.sessionMetrics,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionOverviews: buildSessionOverviews(phase1Output),\n interactionSnapshots: buildInteractionSnapshots(phase1Output, {\n maxUserChars: 200,\n maxAssistantChars: 160,\n }),\n };\n}\n\nfunction buildDomainAnalysisContext(\n domain: PromptContextDomain,\n phase1Output: Phase1Output,\n deterministicScores: DeterministicScores,\n) {\n const base = {\n domain,\n deterministicScores,\n dateRange: phase1Output.sessionMetrics.dateRange,\n };\n\n switch (domain) {\n case 'aiPartnership':\n // Merged thinking + control: needs full interaction data + AI insight blocks\n return { ...base, phase1: {\n ...buildThinkingQualityContext(phase1Output),\n activitySessions: phase1Output.activitySessions ?? [],\n } };\n case 'sessionCraft':\n // Merged context efficiency + burnout: needs efficiency + learning context\n return { ...base, phase1: {\n ...buildEfficiencyContext(phase1Output),\n ...(phase1Output.aiInsightBlocks?.length\n ? {\n aiInsightBlocks: phase1Output.aiInsightBlocks.slice(0, 24).map((block) => ({\n sessionId: block.sessionId,\n turnIndex: block.turnIndex,\n content: trimText(block.content, 200),\n triggeringUtteranceId: block.triggeringUtteranceId,\n })),\n }\n : {}),\n } };\n case 'toolMastery':\n return { ...base, phase1: buildCommunicationContext(phase1Output) };\n case 'skillResilience':\n // Cold-start, error recovery: needs session overviews + interaction data\n return { ...base, phase1: buildLearningContext(phase1Output) };\n case 'sessionMastery':\n // Absence scoring: needs session-level anti-pattern data\n return { ...base, phase1: buildSessionMasteryContext(phase1Output) };\n }\n}\n\nexport function buildPromptContext(input: PromptContextInput): Record {\n const {\n kind,\n phase1Output,\n deterministicScores,\n typeResult,\n domainResults,\n stageOutputs,\n domain,\n } = input;\n\n const base = {\n kind,\n availableDomains: domainResults.map((result) => result.domain),\n availableStages: Object.keys(stageOutputs).filter(\n (key) => stageOutputs[key as keyof CanonicalStageOutputs] !== undefined,\n ),\n };\n\n switch (kind) {\n case 'sessionSummaries':\n return {\n ...base,\n phase1: {\n sessionMetrics: phase1Output.sessionMetrics,\n sessions: buildTrimmedSessionInput(phase1Output),\n activitySessions: phase1Output.activitySessions ?? [],\n },\n };\n case 'domainAnalysis':\n if (!domain) {\n throw new Error('Domain is required when kind=domainAnalysis.');\n }\n return {\n ...base,\n ...buildDomainAnalysisContext(domain, phase1Output, deterministicScores),\n };\n case 'projectSummaries':\n return {\n ...base,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] },\n };\n case 'weeklyInsights':\n return {\n ...base,\n activitySessions: phase1Output.activitySessions ?? [],\n sessionSummaries: stageOutputs.sessionSummaries ?? { summaries: [] },\n };\n case 'typeClassification':\n return {\n ...base,\n deterministicScores,\n deterministicType: typeResult,\n sessionMetrics: phase1Output.sessionMetrics,\n domainResults: buildCondensedDomainResults(domainResults, {\n maxStrengths: 2,\n maxGrowthAreas: 2,\n maxDescriptionChars: 420,\n maxRecommendationChars: 260,\n }),\n };\n case 'evidenceVerification':\n return {\n ...base,\n utteranceLookup: buildUtteranceLookup(phase1Output),\n domainResults,\n };\n case 'contentWriter':\n return {\n ...base,\n deterministicType: typeResult,\n domainResults: buildCondensedDomainResults(domainResults, {\n maxStrengths: 2,\n maxGrowthAreas: 2,\n maxDescriptionChars: 520,\n maxRecommendationChars: 320,\n }),\n stageOutputs: buildCondensedContentWriterStageOutputs(stageOutputs),\n };\n case 'translation':\n return {\n ...base,\n languageSample: phase1Output.developerUtterances\n .slice(-50)\n .map((utterance) => utterance.displayText || utterance.text),\n deterministicType: typeResult,\n domainResults,\n stageOutputs,\n };\n }\n}\n","/**\n * get_prompt_context MCP Tool\n *\n * Returns stage- or domain-specific prompt payloads derived from the current\n * canonical analysis run so skills do not need to reread raw Phase 1 files.\n *\n * @module plugin/mcp/tools/get-prompt-context\n */\n\nimport { z } from 'zod';\nimport { getCurrentRunId, getAnalysisRun, getDomainResults } from '../../lib/results-db.js';\nimport { getAllStageOutputs } from '../../lib/stage-db.js';\nimport {\n buildPromptContext,\n PROMPT_CONTEXT_KINDS,\n type PromptContextDomain,\n} from '../../lib/prompt-context.js';\nimport type { CanonicalStageOutputs } from '../../lib/core/types.js';\nimport { debug } from '../../lib/logger.js';\n\nexport const definition = {\n name: 'get_prompt_context',\n description:\n 'Read a stage- or domain-specific prompt payload from the current analysis run. ' +\n 'Use this instead of reading ~/.betterprompt/phase1-output.json directly. ' +\n 'Kinds: sessionSummaries, domainAnalysis, projectSummaries, weeklyInsights, ' +\n 'typeClassification, evidenceVerification, contentWriter, translation.',\n};\n\nexport const GetPromptContextInputSchema = z.object({\n kind: z.enum(PROMPT_CONTEXT_KINDS),\n domain: z.enum([\n 'aiPartnership',\n 'sessionCraft',\n 'toolMastery',\n 'skillResilience',\n 'sessionMastery',\n ]).optional(),\n});\n\nexport async function execute(args: { kind: typeof PROMPT_CONTEXT_KINDS[number]; domain?: string }): Promise {\n const parsed = GetPromptContextInputSchema.safeParse(args);\n if (!parsed.success) {\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid prompt-context request.',\n errors: parsed.error.issues.map((issue) => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n\n const runId = getCurrentRunId();\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Call extract_data first.',\n });\n }\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return JSON.stringify({\n status: 'not_found',\n runId,\n message: `Run #${runId} has no Phase 1 output.`,\n });\n }\n\n try {\n const data = buildPromptContext({\n kind: parsed.data.kind,\n domain: parsed.data.domain as PromptContextDomain | undefined,\n phase1Output: run.phase1Output,\n deterministicScores: run.scores,\n typeResult: run.typeResult,\n domainResults: getDomainResults(runId),\n stageOutputs: getAllStageOutputs(runId) as CanonicalStageOutputs,\n });\n\n const result = JSON.stringify({\n status: 'ok',\n runId,\n kind: parsed.data.kind,\n ...(parsed.data.domain ? { domain: parsed.data.domain } : {}),\n data,\n });\n\n const label = `${parsed.data.kind}${parsed.data.domain ? `:${parsed.data.domain}` : ''}`;\n debug('prompt-context', `${label} payload`, {\n bytes: result.length,\n estimatedTokens: Math.round(result.length / 4),\n });\n\n return result;\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: error instanceof Error ? error.message : 'Failed to build prompt context.',\n });\n }\n}\n","#!/usr/bin/env node\n\n/**\n * BetterPrompt MCP Server\n *\n * Stdio-based MCP server that exposes developer analysis insights\n * as tools for Claude Code to call proactively.\n *\n * === Local-First Tools (no server needed) ===\n * scan_sessions — Scan Claude Code session logs\n * extract_data — Run deterministic Phase 1 extraction\n * save_domain_results — Save domain analysis results\n * get_domain_results — Read saved domain analysis results\n * get_user_prefs — Read persisted BetterPrompt user preferences\n * get_run_progress — Inspect resumable local analysis progress\n * classify_developer_type — Classify developer type from scores\n * verify_evidence — Deterministically validate saved evidence quotes\n * generate_report — Generate HTML report + start localhost server\n * sync_to_team — Sync results to team server (optional)\n *\n * === Server-Backed Tools (backward compatible) ===\n * get_developer_profile — AI collaboration type, scores, personality\n * get_growth_areas — Top growth areas with recommendations\n * get_recent_insights — Strengths, anti-patterns, or KPT summary\n *\n * Data flow: local tools work entirely offline. Server tools use\n * local SQLite cache → server API (refresh if stale).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { z } from 'zod';\nimport { closeCache, getSummaryWithCache } from '../lib/cache.js';\nimport { verifyAuth } from '../lib/api-client.js';\nimport { closeResultsDb } from '../lib/results-db.js';\nimport { closeStageDb } from '../lib/stage-db.js';\nimport { recoverStaleAnalysisState, touchAnalysisHeartbeat } from '../lib/debounce.js';\nimport { debug, info, error as logError } from '../lib/logger.js';\n\n// Legacy server-backed tools\nimport {\n definition as profileDef,\n formatResult as formatProfile,\n} from './tools/get-developer-profile.js';\nimport {\n definition as growthDef,\n formatResult as formatGrowth,\n} from './tools/get-growth-areas.js';\nimport {\n definition as insightsDef,\n formatResult as formatInsights,\n} from './tools/get-recent-insights.js';\n\n// New local-first tools\nimport {\n definition as scanDef,\n execute as executeScan,\n} from './tools/scan-sessions.js';\nimport {\n definition as extractDef,\n execute as executeExtract,\n} from './tools/extract-data.js';\nimport {\n definition as saveDomainDef,\n execute as executeSaveDomain,\n DomainResultInputSchema,\n} from './tools/save-domain-results.js';\nimport {\n definition as getDomainResultsDef,\n execute as executeGetDomainResults,\n GetDomainResultsInputSchema,\n} from './tools/get-domain-results.js';\nimport {\n definition as getUserPrefsDef,\n execute as executeGetUserPrefs,\n} from './tools/get-user-prefs.js';\nimport {\n definition as runProgressDef,\n execute as executeRunProgress,\n} from './tools/get-run-progress.js';\nimport {\n definition as saveUserPrefsDef,\n execute as executeSaveUserPrefs,\n SaveUserPrefsInputSchema,\n} from './tools/save-user-prefs.js';\nimport {\n definition as classifyDef,\n execute as executeClassify,\n} from './tools/classify-developer-type.js';\nimport {\n definition as verifyEvidenceDef,\n execute as executeVerifyEvidence,\n VerifyEvidenceInputSchema,\n} from './tools/verify-evidence.js';\nimport {\n definition as reportDef,\n execute as executeReport,\n} from './tools/generate-report.js';\nimport {\n definition as syncDef,\n execute as executeSync,\n} from './tools/sync-to-team.js';\nimport {\n definition as stageDef,\n execute as executeStage,\n StageOutputInputSchema,\n} from './tools/save-stage-output.js';\nimport {\n definition as getStageOutputDef,\n execute as executeGetStageOutput,\n} from './tools/get-stage-output.js';\nimport {\n definition as getPromptContextDef,\n execute as executeGetPromptContext,\n GetPromptContextInputSchema,\n} from './tools/get-prompt-context.js';\n// Resolve user ID once at startup (for server-backed tools)\nlet resolvedUserId: string | null = null;\n\nasync function getUserId(): Promise {\n if (resolvedUserId) return resolvedUserId;\n\n const user = await verifyAuth();\n if (!user) {\n throw new Error(\n 'Could not reach the BetterPrompt server. ' +\n 'Check the plugin serverUrl setting and confirm the dashboard server is running.',\n );\n }\n\n resolvedUserId = user.id;\n return resolvedUserId;\n}\n\n// ---------------------------------------------------------------------------\n// Server setup\n// ---------------------------------------------------------------------------\n\nconst server = new McpServer({\n name: 'betterprompt',\n version: '0.2.0',\n});\n\n/** Wrap a tool handler with consistent error formatting and debug logging */\nfunction wrapToolExecution(\n toolName: string,\n fn: (args: T) => Promise,\n): (args: T) => Promise<{ content: Array<{ type: 'text'; text: string }>; isError?: boolean }> {\n return async (args: T) => {\n const start = Date.now();\n const argRecord = args as Record;\n touchAnalysisHeartbeat();\n debug('tool', `${toolName} called`, Object.keys(argRecord).length > 0 ? argRecord : undefined);\n try {\n const result = await fn(args);\n touchAnalysisHeartbeat();\n debug('tool', `${toolName} completed`, { durationMs: Date.now() - start });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (err) {\n touchAnalysisHeartbeat();\n const errorMsg = err instanceof Error ? err.message : 'Unknown error';\n logError('tool', `${toolName} failed`, { durationMs: Date.now() - start, error: errorMsg });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify({ error: errorMsg }) }],\n isError: true,\n };\n }\n };\n}\n\n// =========================================================================\n// LOCAL-FIRST TOOLS (no server needed)\n// =========================================================================\n\nserver.tool(scanDef.name, scanDef.description, {\n includeProjects: z.array(z.string()).optional().describe('Filter results to only these project names'),\n}, wrapToolExecution(scanDef.name, executeScan));\n\nserver.tool(extractDef.name, extractDef.description, {\n maxSessions: z.number().optional().describe('Maximum number of recent sessions to analyze (default: 50)'),\n includeProjects: z.array(z.string()).optional().describe('Filter to only these project names before applying maxSessions limit'),\n}, wrapToolExecution(extractDef.name, executeExtract));\n\nserver.tool(saveDomainDef.name, saveDomainDef.description, DomainResultInputSchema.shape,\n wrapToolExecution(saveDomainDef.name, executeSaveDomain));\n\nserver.tool(getDomainResultsDef.name, getDomainResultsDef.description, GetDomainResultsInputSchema.shape,\n wrapToolExecution(getDomainResultsDef.name, executeGetDomainResults));\n\nserver.tool(getUserPrefsDef.name, getUserPrefsDef.description, {},\n wrapToolExecution(getUserPrefsDef.name, () => executeGetUserPrefs()));\n\nserver.tool(runProgressDef.name, runProgressDef.description, {},\n wrapToolExecution(runProgressDef.name, () => executeRunProgress()));\n\nserver.tool(classifyDef.name, classifyDef.description, {},\n wrapToolExecution(classifyDef.name, () => executeClassify({})));\n\nserver.tool(verifyEvidenceDef.name, verifyEvidenceDef.description, VerifyEvidenceInputSchema.shape,\n wrapToolExecution(verifyEvidenceDef.name, executeVerifyEvidence));\n\nserver.tool(reportDef.name, reportDef.description, {\n port: z.number().optional().describe('Port for the report server (default: 3456)'),\n openBrowser: z.boolean().optional().describe('Auto-open report in browser (default: true)'),\n allowIncomplete: z.boolean().optional().describe('Override required-stage gating and generate a report anyway'),\n}, wrapToolExecution(reportDef.name, executeReport));\n\nserver.tool(syncDef.name, syncDef.description, {\n serverUrl: z.string().optional().describe('Override the configured BetterPrompt server URL for this sync call'),\n}, wrapToolExecution(syncDef.name, executeSync));\n\nserver.tool(stageDef.name, stageDef.description, StageOutputInputSchema.shape,\n wrapToolExecution(stageDef.name, executeStage));\n\nserver.tool(getStageOutputDef.name, getStageOutputDef.description, {\n stage: z.string().optional().describe('Stage name to retrieve (omit for all stages)'),\n}, wrapToolExecution(getStageOutputDef.name, executeGetStageOutput));\n\nserver.tool(getPromptContextDef.name, getPromptContextDef.description, GetPromptContextInputSchema.shape,\n wrapToolExecution(getPromptContextDef.name, executeGetPromptContext));\n\nserver.tool(saveUserPrefsDef.name, saveUserPrefsDef.description, SaveUserPrefsInputSchema.shape,\n wrapToolExecution(saveUserPrefsDef.name, executeSaveUserPrefs));\n\n// =========================================================================\n// SERVER-BACKED TOOLS (backward compatible)\n// =========================================================================\n\nserver.tool(profileDef.name, profileDef.description, {},\n wrapToolExecution(profileDef.name, async () => {\n const userId = await getUserId();\n const summary = await getSummaryWithCache(userId);\n return formatProfile(summary);\n }));\n\nserver.tool(growthDef.name, growthDef.description, {\n domain: z.enum(['aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery'])\n .optional()\n .describe('Filter by domain key'),\n}, wrapToolExecution(growthDef.name, async (args) => {\n const userId = await getUserId();\n const summary = await getSummaryWithCache(userId);\n return formatGrowth(summary, args);\n}));\n\nserver.tool(insightsDef.name, insightsDef.description, {\n category: z.enum(['strengths', 'anti_patterns', 'kpt']).optional().default('kpt')\n .describe('Category of insights: \"strengths\", \"anti_patterns\", or \"kpt\" (default)'),\n}, wrapToolExecution(insightsDef.name, async (args) => {\n const userId = await getUserId();\n const summary = await getSummaryWithCache(userId);\n return formatInsights(summary, args);\n}));\n\n// ---------------------------------------------------------------------------\n// Start\n// ---------------------------------------------------------------------------\n\nasync function main() {\n info('server', 'starting');\n recoverStaleAnalysisState({\n force: true,\n reason: 'Recovered stale running state on MCP server startup.',\n });\n const transport = new StdioServerTransport();\n await server.connect(transport);\n info('server', 'connected');\n}\n\nmain().catch((err) => {\n logError('server', 'failed to start', { error: err instanceof Error ? err.message : String(err) });\n process.exit(1);\n});\n\n// Clean up on shutdown\nfunction cleanup() {\n info('server', 'shutting down');\n closeCache();\n closeResultsDb();\n closeStageDb();\n process.exit(0);\n}\n\nprocess.on('SIGINT', cleanup);\nprocess.on('SIGTERM', cleanup);\n"],"mappings":"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","names":["UsedValueState","error","mergeValues","Type","error","DataType","_a","parse","Ajv","meta","definition","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","DiscrError","error","required","Ajv","error","util","object","array","objectUtil","error","errorUtil","error","errorMap","ZodOptional","ctx","result","issues","elements","processed","preprocess","ZodOptional","result","ZodFirstPartyTypeKind","ZodOptional","meta","object","object","safeParse","result","safeParseAsync","error","def","ErrorCode","emojiRegex","literal","object","types","x","base","required","name","schema","main","safeParse","error","info","task","safeParse","jsonrpcNotification","Ajv","_addFormats","safeParse","error","meta","McpZodTypeKind","config","error","safeParseAsync","config","process","process","error","config","Database","mkdirSync","getDb","db","db","definition","getDb","mkdirSync","Database","getDb","db","definition","formatResult","definition","formatResult","readFile","join","join","join","resolved","join","homedir","join","homedir","config","readdir","stat","join","basename","dirname","homedir","join","homedir","stat","Database","config","basename","db","dirname","readdir","stat","join","homedir","join","stat","Database","config","db","readdir","stat","join","homedir","join","stat","readdir","homedir","registry","config","cursorSource","join","readFile","error","definition","writeFile","mkdir","join","definition","execute","mkdir","join","writeFile","error","definition","execute","definition","execute","definition","execute","definition","execute","definition","execute","partial","readFile","join","definition","execute","join","readFile","definition","intersection","execute","keptCount","filteredCount","error","readFileSync","writeFile","mkdir","join","meta","definition","DOMAIN_STAGE_NAMES","execute","join","mkdir","writeFile","server","readFileSync","definition","execute","error","definition","execute","definition","execute","SKILL_INJECTION_PREFIX","definition","execute","error","definition","execute","formatResult"]} \ No newline at end of file diff --git a/packages/plugin/dist/save-domain-results-MGOM6TKS.js b/packages/plugin/dist/save-domain-results-MGOM6TKS.js new file mode 100644 index 00000000..b2c96129 --- /dev/null +++ b/packages/plugin/dist/save-domain-results-MGOM6TKS.js @@ -0,0 +1,364 @@ +import { + getCurrentRunId, + recordStageStatus, + saveDomainResult +} from "./chunk-T2XRMW7B.js"; +import { + DomainGrowthAreaSchema, + DomainStrengthSchema, + MultitaskingPatternSchema, + external_exports +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/save-domain-results.ts +import { readFileSync } from "fs"; +var ThinkingQualityDataSchema = external_exports.object({ + planningHabits: external_exports.union([ + external_exports.array(external_exports.object({ + type: external_exports.string(), + frequency: external_exports.string().optional(), + examples: external_exports.array(external_exports.string()).optional(), + effectiveness: external_exports.string().optional() + }).passthrough()).min(1), + external_exports.object({ + dominantType: external_exports.string().optional(), + typeDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional() + }).passthrough() + ]), + verificationBehavior: external_exports.object({ level: external_exports.string() }).passthrough(), + criticalThinkingMoments: external_exports.array(external_exports.object({ + type: external_exports.string(), + quote: external_exports.string().optional(), + result: external_exports.string().optional(), + utteranceId: external_exports.string().optional(), + sessionId: external_exports.string().optional() + }).passthrough()), + verificationAntiPatterns: external_exports.array(external_exports.object({ + type: external_exports.string(), + frequency: external_exports.number().optional(), + severity: external_exports.string().optional(), + examples: external_exports.array(external_exports.unknown()).optional(), + evidence: external_exports.array(external_exports.unknown()).optional(), + improvement: external_exports.string().optional() + }).passthrough()), + planQualityScore: external_exports.number().min(0).max(100).optional(), + multitaskingPattern: MultitaskingPatternSchema.optional() +}).passthrough(); +var CommunicationPatternsDataSchema = external_exports.object({ + communicationPatterns: external_exports.array(external_exports.object({ + patternName: external_exports.string().optional(), + patternId: external_exports.string().optional(), + title: external_exports.string().optional(), + category: external_exports.string().optional(), + description: external_exports.string().optional(), + frequency: external_exports.union([external_exports.string(), external_exports.number()]).optional(), + effectiveness: external_exports.string().optional(), + tip: external_exports.string().optional(), + examples: external_exports.array(external_exports.unknown()).optional(), + evidence: external_exports.array(external_exports.unknown()).optional() + }).passthrough()).min(1), + signatureQuotes: external_exports.array(external_exports.object({ utteranceId: external_exports.string() }).passthrough()).optional(), + structuralDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional(), + contextDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional(), + questioningDistribution: external_exports.record(external_exports.string(), external_exports.number()).optional() +}).passthrough(); +var LearningBehaviorDataSchema = external_exports.object({ + knowledgeGaps: external_exports.array(external_exports.object({ + area: external_exports.string().optional(), + topic: external_exports.string().optional(), + severity: external_exports.string().optional(), + trend: external_exports.string().optional(), + evidence: external_exports.array(external_exports.unknown()).optional(), + description: external_exports.string().optional(), + questionCount: external_exports.number().optional(), + depth: external_exports.string().optional(), + example: external_exports.string().optional() + }).passthrough()).optional(), + repeatedMistakePatterns: external_exports.array(external_exports.object({ + category: external_exports.string(), + description: external_exports.string().optional(), + mistakeType: external_exports.string().optional(), + frequency: external_exports.number().optional(), + occurrenceCount: external_exports.number().optional(), + sessionsAffected: external_exports.array(external_exports.string()).optional(), + exampleUtteranceIds: external_exports.array(external_exports.string()).optional(), + evidence: external_exports.array(external_exports.unknown()).optional(), + recommendation: external_exports.string().optional() + }).passthrough()).optional(), + learningProgress: external_exports.array(external_exports.object({ + area: external_exports.string().optional(), + topic: external_exports.string().optional(), + startLevel: external_exports.string().optional(), + currentLevel: external_exports.string().optional(), + evidence: external_exports.unknown().optional(), + milestones: external_exports.array(external_exports.string()).optional(), + description: external_exports.string().optional() + }).passthrough()).optional(), + recommendedResources: external_exports.array(external_exports.object({ + name: external_exports.string().optional(), + topic: external_exports.string().optional(), + url: external_exports.string().optional(), + resourceType: external_exports.string().optional(), + targetGap: external_exports.string().optional(), + timeInvestment: external_exports.string().optional(), + priority: external_exports.string().optional() + }).passthrough()).optional(), + topInsights: external_exports.array(external_exports.unknown()).optional() +}).passthrough(); +var ContextEfficiencyDataSchema = external_exports.object({ + inefficiencyPatterns: external_exports.array(external_exports.object({ + type: external_exports.string().optional(), + pattern: external_exports.string().optional(), + frequency: external_exports.number().optional(), + severity: external_exports.string().optional(), + impact: external_exports.string().optional(), + description: external_exports.string().optional(), + evidence: external_exports.array(external_exports.unknown()).optional() + }).passthrough()).optional(), + contextUsagePatterns: external_exports.array(external_exports.object({ + sessionId: external_exports.string().optional(), + avgFillPercent: external_exports.number().optional(), + pattern: external_exports.string().optional(), + trajectory: external_exports.string().optional() + }).passthrough()).optional(), + promptLengthTrends: external_exports.unknown().optional(), + iterationAnalysis: external_exports.unknown().optional(), + avgContextFillPercent: external_exports.number().optional(), + topInsights: external_exports.array(external_exports.unknown()).optional() +}).passthrough(); +var SessionOutcomeDataSchema = external_exports.object({ + sessionAnalyses: external_exports.array(external_exports.object({ + sessionId: external_exports.string(), + goals: external_exports.array(external_exports.string()).optional(), + primaryGoal: external_exports.string().optional(), + sessionType: external_exports.string(), + outcome: external_exports.string(), + satisfaction: external_exports.string().optional(), + satisfactionSignal: external_exports.string().optional(), + frictionPoints: external_exports.array(external_exports.unknown()).optional(), + frictionTypes: external_exports.array(external_exports.string()).optional(), + outcomeScore: external_exports.number().optional(), + duration: external_exports.string().optional(), + utteranceCount: external_exports.number().optional(), + keyMoment: external_exports.string().optional() + })).min(1), + overallSuccessRate: external_exports.number().min(0).max(100).optional(), + goalDistribution: external_exports.array(external_exports.unknown()).optional(), + frictionSummary: external_exports.array(external_exports.unknown()).optional(), + successPatterns: external_exports.array(external_exports.unknown()).optional(), + failurePatterns: external_exports.array(external_exports.unknown()).optional() +}).passthrough(); +var DOMAIN_DATA_SCHEMAS = { + aiPartnership: ThinkingQualityDataSchema.merge(SessionOutcomeDataSchema.partial()).passthrough(), + sessionCraft: ContextEfficiencyDataSchema.merge(LearningBehaviorDataSchema.partial()).passthrough(), + toolMastery: CommunicationPatternsDataSchema, + skillResilience: external_exports.record(external_exports.string(), external_exports.unknown()), + sessionMastery: external_exports.record(external_exports.string(), external_exports.unknown()), + thinkingQuality: ThinkingQualityDataSchema, + communicationPatterns: CommunicationPatternsDataSchema, + learningBehavior: LearningBehaviorDataSchema, + contextEfficiency: ContextEfficiencyDataSchema, + sessionOutcome: SessionOutcomeDataSchema +}; +var QUALITY_THRESHOLDS = { + minDescriptionLength: 300, + minRecommendationLength: 150, + minEvidenceCount: 2 +}; +var DomainResultInputSchema = external_exports.object({ + domain: external_exports.enum([ + "aiPartnership", + "sessionCraft", + "toolMastery", + "skillResilience", + "sessionMastery", + "thinkingQuality", + "communicationPatterns", + "learningBehavior", + "contextEfficiency", + "sessionOutcome", + "content" + ]), + overallScore: external_exports.number().min(0).max(100), + confidenceScore: external_exports.number().min(0).max(1).optional(), + strengths: external_exports.array(DomainStrengthSchema), + growthAreas: external_exports.array(DomainGrowthAreaSchema), + data: external_exports.record(external_exports.string(), external_exports.unknown()).optional() +}); +function parseStringifiedInput(value) { + if (typeof value !== "string") return value; + const trimmed = value.trim(); + if (!trimmed) return value; + if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) { + try { + return JSON.parse(trimmed); + } catch { + return value; + } + } + if (/^-?\d+(?:\.\d+)?$/.test(trimmed)) { + const n = Number(trimmed); + if (Number.isFinite(n)) return n; + } + return value; +} +function normalizeDomainResultArgs(args) { + return { + ...args, + overallScore: parseStringifiedInput(args.overallScore), + confidenceScore: parseStringifiedInput(args.confidenceScore), + strengths: parseStringifiedInput(args.strengths), + growthAreas: parseStringifiedInput(args.growthAreas), + data: parseStringifiedInput(args.data) + }; +} +function validateContentQuality(strengths, growthAreas) { + const issues = []; + for (const [i, strength] of strengths.entries()) { + if (strength.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { + issues.push({ + field: `strengths[${i}].description`, + message: `Description for "${strength.title}" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`, + actual: strength.description.length, + required: QUALITY_THRESHOLDS.minDescriptionLength + }); + } + if (strength.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) { + issues.push({ + field: `strengths[${i}].evidence`, + message: `Strength "${strength.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}).`, + actual: strength.evidence.length, + required: QUALITY_THRESHOLDS.minEvidenceCount + }); + } + } + for (const [i, area] of growthAreas.entries()) { + if (area.description.length < QUALITY_THRESHOLDS.minDescriptionLength) { + issues.push({ + field: `growthAreas[${i}].description`, + message: `Description for "${area.title}" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`, + actual: area.description.length, + required: QUALITY_THRESHOLDS.minDescriptionLength + }); + } + if (area.recommendation.length < QUALITY_THRESHOLDS.minRecommendationLength) { + issues.push({ + field: `growthAreas[${i}].recommendation`, + message: `Recommendation for "${area.title}" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required.`, + actual: area.recommendation.length, + required: QUALITY_THRESHOLDS.minRecommendationLength + }); + } + if (area.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) { + issues.push({ + field: `growthAreas[${i}].evidence`, + message: `Growth area "${area.title}" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${area.evidence.length}).`, + actual: area.evidence.length, + required: QUALITY_THRESHOLDS.minEvidenceCount + }); + } + } + return issues; +} +function getDomainDataHint(domain) { + const hints = { + aiPartnership: "Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate", + sessionCraft: "Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]", + toolMastery: "Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]", + skillResilience: "Expected: domain-specific data (flexible schema)", + sessionMastery: "Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore", + thinkingQuality: "Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]", + communicationPatterns: "Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]", + learningBehavior: "Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]", + contextEfficiency: "Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent", + sessionOutcome: "Required: sessionAnalyses[] (min 1). Optional: overallSuccessRate" + }; + return hints[domain] ?? ""; +} +async function execute(args) { + let inputArgs = args; + if (typeof args.file === "string") { + try { + inputArgs = JSON.parse(readFileSync(args.file, "utf-8")); + } catch (error) { + return JSON.stringify({ + status: "error", + message: `Failed to read input file: ${error instanceof Error ? error.message : "Unknown error"}` + }); + } + } + const normalizedArgs = normalizeDomainResultArgs(inputArgs); + const runId = getCurrentRunId(); + const domainName = typeof normalizedArgs.domain === "string" ? normalizedArgs.domain : null; + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first to start an analysis." + }); + } + const parsed = DomainResultInputSchema.safeParse(normalizedArgs); + if (!parsed.success) { + if (domainName) { + recordStageStatus(runId, domainName, { status: "failed", lastError: "Invalid domain result format." }); + } + return JSON.stringify({ + status: "validation_error", + message: "Invalid domain result format.", + errors: parsed.error.issues.map((i) => ({ path: i.path.join("."), message: i.message })) + }); + } + const domainSchema = DOMAIN_DATA_SCHEMAS[parsed.data.domain]; + if (domainSchema && parsed.data.data) { + const dataResult = domainSchema.safeParse(parsed.data.data); + if (!dataResult.success) { + recordStageStatus(runId, parsed.data.domain, { status: "failed", lastError: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.` }); + return JSON.stringify({ + status: "validation_error", + message: `Domain-specific data for "${parsed.data.domain}" is incomplete or invalid.`, + errors: dataResult.error.issues.map((i) => ({ path: `data.${i.path.join(".")}`, message: i.message })), + hint: getDomainDataHint(parsed.data.domain) + }); + } + } else if (parsed.data.domain !== "content" && !parsed.data.data) { + recordStageStatus(runId, parsed.data.domain, { status: "failed", lastError: `Domain "${parsed.data.domain}" requires a data field.` }); + return JSON.stringify({ + status: "validation_error", + message: `Domain "${parsed.data.domain}" requires a data field with domain-specific structures.`, + hint: getDomainDataHint(parsed.data.domain) + }); + } + const qualityIssues = validateContentQuality(parsed.data.strengths, parsed.data.growthAreas); + if (qualityIssues.length > 0) { + recordStageStatus(runId, parsed.data.domain, { status: "failed", lastError: `Quality gate failed for "${parsed.data.domain}".` }); + return JSON.stringify({ + status: "quality_error", + message: `${qualityIssues.length} quality issue(s) detected. Expand the flagged fields and try again.`, + issues: qualityIssues + }); + } + const domainResult = { + domain: parsed.data.domain, + overallScore: parsed.data.overallScore, + confidenceScore: parsed.data.confidenceScore ?? 0.5, + strengths: parsed.data.strengths, + growthAreas: parsed.data.growthAreas, + data: parsed.data.data, + analyzedAt: (/* @__PURE__ */ new Date()).toISOString() + }; + saveDomainResult(runId, domainResult); + recordStageStatus(runId, domainResult.domain, { status: "validated" }); + return JSON.stringify({ + status: "ok", + domain: domainResult.domain, + score: domainResult.overallScore, + strengthCount: domainResult.strengths.length, + growthAreaCount: domainResult.growthAreas.length, + runId, + message: `Saved ${domainResult.domain} analysis (score: ${domainResult.overallScore}/100) to run #${runId}.` + }); +} +export { + execute +}; +//# sourceMappingURL=save-domain-results-MGOM6TKS.js.map \ No newline at end of file diff --git a/packages/plugin/dist/save-domain-results-MGOM6TKS.js.map b/packages/plugin/dist/save-domain-results-MGOM6TKS.js.map new file mode 100644 index 00000000..76a6a175 --- /dev/null +++ b/packages/plugin/dist/save-domain-results-MGOM6TKS.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/save-domain-results.ts"],"sourcesContent":["/**\n * save-domain-results CLI command\n *\n * Validates and persists structured analysis results for a specific domain.\n * Includes domain-specific Zod validation and quality gates.\n *\n * Usage: betterprompt-cli save-domain-results --file /path/to/domain-result.json\n * OR: betterprompt-cli save-domain-results --domain aiPartnership --overallScore 75 ...\n */\n\nimport { readFileSync } from 'node:fs';\nimport { z } from 'zod';\nimport {\n DomainStrengthSchema,\n DomainGrowthAreaSchema,\n MultitaskingPatternSchema,\n} from '@betterprompt/shared';\nimport { saveDomainResult, getCurrentRunId } from '../../lib/results-db.js';\nimport { recordStageStatus } from '../../lib/stage-db.js';\nimport type { DomainResult } from '../../lib/core/types.js';\n\n// Domain-specific data schemas (ported from MCP tool)\nconst ThinkingQualityDataSchema = z.object({\n planningHabits: z.union([\n z.array(z.object({\n type: z.string(),\n frequency: z.string().optional(),\n examples: z.array(z.string()).optional(),\n effectiveness: z.string().optional(),\n }).passthrough()).min(1),\n z.object({\n dominantType: z.string().optional(),\n typeDistribution: z.record(z.string(), z.number()).optional(),\n }).passthrough(),\n ]),\n verificationBehavior: z.object({ level: z.string() }).passthrough(),\n criticalThinkingMoments: z.array(z.object({\n type: z.string(),\n quote: z.string().optional(),\n result: z.string().optional(),\n utteranceId: z.string().optional(),\n sessionId: z.string().optional(),\n }).passthrough()),\n verificationAntiPatterns: z.array(z.object({\n type: z.string(),\n frequency: z.number().optional(),\n severity: z.string().optional(),\n examples: z.array(z.unknown()).optional(),\n evidence: z.array(z.unknown()).optional(),\n improvement: z.string().optional(),\n }).passthrough()),\n planQualityScore: z.number().min(0).max(100).optional(),\n multitaskingPattern: MultitaskingPatternSchema.optional(),\n}).passthrough();\n\nconst CommunicationPatternsDataSchema = z.object({\n communicationPatterns: z.array(z.object({\n patternName: z.string().optional(),\n patternId: z.string().optional(),\n title: z.string().optional(),\n category: z.string().optional(),\n description: z.string().optional(),\n frequency: z.union([z.string(), z.number()]).optional(),\n effectiveness: z.string().optional(),\n tip: z.string().optional(),\n examples: z.array(z.unknown()).optional(),\n evidence: z.array(z.unknown()).optional(),\n }).passthrough()).min(1),\n signatureQuotes: z.array(z.object({ utteranceId: z.string() }).passthrough()).optional(),\n structuralDistribution: z.record(z.string(), z.number()).optional(),\n contextDistribution: z.record(z.string(), z.number()).optional(),\n questioningDistribution: z.record(z.string(), z.number()).optional(),\n}).passthrough();\n\nconst LearningBehaviorDataSchema = z.object({\n knowledgeGaps: z.array(z.object({\n area: z.string().optional(),\n topic: z.string().optional(),\n severity: z.string().optional(),\n trend: z.string().optional(),\n evidence: z.array(z.unknown()).optional(),\n description: z.string().optional(),\n questionCount: z.number().optional(),\n depth: z.string().optional(),\n example: z.string().optional(),\n }).passthrough()).optional(),\n repeatedMistakePatterns: z.array(z.object({\n category: z.string(),\n description: z.string().optional(),\n mistakeType: z.string().optional(),\n frequency: z.number().optional(),\n occurrenceCount: z.number().optional(),\n sessionsAffected: z.array(z.string()).optional(),\n exampleUtteranceIds: z.array(z.string()).optional(),\n evidence: z.array(z.unknown()).optional(),\n recommendation: z.string().optional(),\n }).passthrough()).optional(),\n learningProgress: z.array(z.object({\n area: z.string().optional(),\n topic: z.string().optional(),\n startLevel: z.string().optional(),\n currentLevel: z.string().optional(),\n evidence: z.unknown().optional(),\n milestones: z.array(z.string()).optional(),\n description: z.string().optional(),\n }).passthrough()).optional(),\n recommendedResources: z.array(z.object({\n name: z.string().optional(),\n topic: z.string().optional(),\n url: z.string().optional(),\n resourceType: z.string().optional(),\n targetGap: z.string().optional(),\n timeInvestment: z.string().optional(),\n priority: z.string().optional(),\n }).passthrough()).optional(),\n topInsights: z.array(z.unknown()).optional(),\n}).passthrough();\n\nconst ContextEfficiencyDataSchema = z.object({\n inefficiencyPatterns: z.array(z.object({\n type: z.string().optional(),\n pattern: z.string().optional(),\n frequency: z.number().optional(),\n severity: z.string().optional(),\n impact: z.string().optional(),\n description: z.string().optional(),\n evidence: z.array(z.unknown()).optional(),\n }).passthrough()).optional(),\n contextUsagePatterns: z.array(z.object({\n sessionId: z.string().optional(),\n avgFillPercent: z.number().optional(),\n pattern: z.string().optional(),\n trajectory: z.string().optional(),\n }).passthrough()).optional(),\n promptLengthTrends: z.unknown().optional(),\n iterationAnalysis: z.unknown().optional(),\n avgContextFillPercent: z.number().optional(),\n topInsights: z.array(z.unknown()).optional(),\n}).passthrough();\n\nconst SessionOutcomeDataSchema = z.object({\n sessionAnalyses: z.array(z.object({\n sessionId: z.string(),\n goals: z.array(z.string()).optional(),\n primaryGoal: z.string().optional(),\n sessionType: z.string(),\n outcome: z.string(),\n satisfaction: z.string().optional(),\n satisfactionSignal: z.string().optional(),\n frictionPoints: z.array(z.unknown()).optional(),\n frictionTypes: z.array(z.string()).optional(),\n outcomeScore: z.number().optional(),\n duration: z.string().optional(),\n utteranceCount: z.number().optional(),\n keyMoment: z.string().optional(),\n })).min(1),\n overallSuccessRate: z.number().min(0).max(100).optional(),\n goalDistribution: z.array(z.unknown()).optional(),\n frictionSummary: z.array(z.unknown()).optional(),\n successPatterns: z.array(z.unknown()).optional(),\n failurePatterns: z.array(z.unknown()).optional(),\n}).passthrough();\n\nconst DOMAIN_DATA_SCHEMAS: Record = {\n aiPartnership: ThinkingQualityDataSchema.merge(SessionOutcomeDataSchema.partial()).passthrough(),\n sessionCraft: ContextEfficiencyDataSchema.merge(LearningBehaviorDataSchema.partial()).passthrough(),\n toolMastery: CommunicationPatternsDataSchema,\n skillResilience: z.record(z.string(), z.unknown()),\n sessionMastery: z.record(z.string(), z.unknown()),\n thinkingQuality: ThinkingQualityDataSchema,\n communicationPatterns: CommunicationPatternsDataSchema,\n learningBehavior: LearningBehaviorDataSchema,\n contextEfficiency: ContextEfficiencyDataSchema,\n sessionOutcome: SessionOutcomeDataSchema,\n};\n\nconst QUALITY_THRESHOLDS = {\n minDescriptionLength: 300,\n minRecommendationLength: 150,\n minEvidenceCount: 2,\n} as const;\n\nconst DomainResultInputSchema = z.object({\n domain: z.enum([\n 'aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery',\n 'thinkingQuality', 'communicationPatterns', 'learningBehavior', 'contextEfficiency', 'sessionOutcome', 'content',\n ]),\n overallScore: z.number().min(0).max(100),\n confidenceScore: z.number().min(0).max(1).optional(),\n strengths: z.array(DomainStrengthSchema),\n growthAreas: z.array(DomainGrowthAreaSchema),\n data: z.record(z.string(), z.unknown()).optional(),\n});\n\nfunction parseStringifiedInput(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed) return value;\n if ((trimmed.startsWith('{') && trimmed.endsWith('}')) || (trimmed.startsWith('[') && trimmed.endsWith(']'))) {\n try { return JSON.parse(trimmed); } catch { return value; }\n }\n if (/^-?\\d+(?:\\.\\d+)?$/.test(trimmed)) {\n const n = Number(trimmed);\n if (Number.isFinite(n)) return n;\n }\n return value;\n}\n\nfunction normalizeDomainResultArgs(args: Record): Record {\n return {\n ...args,\n overallScore: parseStringifiedInput(args.overallScore),\n confidenceScore: parseStringifiedInput(args.confidenceScore),\n strengths: parseStringifiedInput(args.strengths),\n growthAreas: parseStringifiedInput(args.growthAreas),\n data: parseStringifiedInput(args.data),\n };\n}\n\ninterface QualityIssue {\n field: string;\n message: string;\n actual: number;\n required: number;\n}\n\nfunction validateContentQuality(\n strengths: Array<{ title: string; description: string; evidence: unknown[] }>,\n growthAreas: Array<{ title: string; description: string; recommendation: string; evidence: unknown[] }>,\n): QualityIssue[] {\n const issues: QualityIssue[] = [];\n\n for (const [i, strength] of strengths.entries()) {\n if (strength.description.length < QUALITY_THRESHOLDS.minDescriptionLength) {\n issues.push({\n field: `strengths[${i}].description`,\n message: `Description for \"${strength.title}\" is too short (${strength.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`,\n actual: strength.description.length,\n required: QUALITY_THRESHOLDS.minDescriptionLength,\n });\n }\n if (strength.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) {\n issues.push({\n field: `strengths[${i}].evidence`,\n message: `Strength \"${strength.title}\" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${strength.evidence.length}).`,\n actual: strength.evidence.length,\n required: QUALITY_THRESHOLDS.minEvidenceCount,\n });\n }\n }\n\n for (const [i, area] of growthAreas.entries()) {\n if (area.description.length < QUALITY_THRESHOLDS.minDescriptionLength) {\n issues.push({\n field: `growthAreas[${i}].description`,\n message: `Description for \"${area.title}\" is too short (${area.description.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minDescriptionLength} characters required.`,\n actual: area.description.length,\n required: QUALITY_THRESHOLDS.minDescriptionLength,\n });\n }\n if (area.recommendation.length < QUALITY_THRESHOLDS.minRecommendationLength) {\n issues.push({\n field: `growthAreas[${i}].recommendation`,\n message: `Recommendation for \"${area.title}\" is too short (${area.recommendation.length} chars). MINIMUM ${QUALITY_THRESHOLDS.minRecommendationLength} characters required.`,\n actual: area.recommendation.length,\n required: QUALITY_THRESHOLDS.minRecommendationLength,\n });\n }\n if (area.evidence.length < QUALITY_THRESHOLDS.minEvidenceCount) {\n issues.push({\n field: `growthAreas[${i}].evidence`,\n message: `Growth area \"${area.title}\" needs at least ${QUALITY_THRESHOLDS.minEvidenceCount} evidence items (has ${area.evidence.length}).`,\n actual: area.evidence.length,\n required: QUALITY_THRESHOLDS.minEvidenceCount,\n });\n }\n }\n\n return issues;\n}\n\nfunction getDomainDataHint(domain: string): string {\n const hints: Record = {\n aiPartnership: 'Expected: planningHabits[], verificationBehavior, sessionAnalyses[], overallSuccessRate',\n sessionCraft: 'Expected: inefficiencyPatterns[], contextUsagePatterns[], knowledgeGaps[], repeatedMistakePatterns[]',\n toolMastery: 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]',\n skillResilience: 'Expected: domain-specific data (flexible schema)',\n sessionMastery: 'Expected: absenceIndicators[], sessionCleanliness[], cleanSessionPercentage, scaffoldingDependencyScore',\n thinkingQuality: 'Required: planningHabits[] (min 1), verificationBehavior, criticalThinkingMoments[], verificationAntiPatterns[]',\n communicationPatterns: 'Required: communicationPatterns[] (min 1). Optional: signatureQuotes[]',\n learningBehavior: 'Expected: knowledgeGaps[], repeatedMistakePatterns[], learningProgress[], recommendedResources[]',\n contextEfficiency: 'Expected: inefficiencyPatterns[], contextUsagePatterns[], promptLengthTrends, avgContextFillPercent',\n sessionOutcome: 'Required: sessionAnalyses[] (min 1). Optional: overallSuccessRate',\n };\n return hints[domain] ?? '';\n}\n\nexport async function execute(args: Record): Promise {\n // Read from file if --file provided\n let inputArgs = args;\n if (typeof args.file === 'string') {\n try {\n inputArgs = JSON.parse(readFileSync(args.file, 'utf-8'));\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n }\n\n const normalizedArgs = normalizeDomainResultArgs(inputArgs);\n const runId = getCurrentRunId();\n const domainName = typeof normalizedArgs.domain === 'string' ? normalizedArgs.domain : null;\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first to start an analysis.',\n });\n }\n\n // Step 1: Validate top-level structure\n const parsed = DomainResultInputSchema.safeParse(normalizedArgs);\n if (!parsed.success) {\n if (domainName) {\n recordStageStatus(runId, domainName, { status: 'failed', lastError: 'Invalid domain result format.' });\n }\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid domain result format.',\n errors: parsed.error.issues.map(i => ({ path: i.path.join('.'), message: i.message })),\n });\n }\n\n // Step 2: Validate domain-specific data\n const domainSchema = DOMAIN_DATA_SCHEMAS[parsed.data.domain];\n if (domainSchema && parsed.data.data) {\n const dataResult = domainSchema.safeParse(parsed.data.data);\n if (!dataResult.success) {\n recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Domain-specific data for \"${parsed.data.domain}\" is incomplete or invalid.` });\n return JSON.stringify({\n status: 'validation_error',\n message: `Domain-specific data for \"${parsed.data.domain}\" is incomplete or invalid.`,\n errors: dataResult.error.issues.map(i => ({ path: `data.${i.path.join('.')}`, message: i.message })),\n hint: getDomainDataHint(parsed.data.domain),\n });\n }\n } else if (parsed.data.domain !== 'content' && !parsed.data.data) {\n recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Domain \"${parsed.data.domain}\" requires a data field.` });\n return JSON.stringify({\n status: 'validation_error',\n message: `Domain \"${parsed.data.domain}\" requires a data field with domain-specific structures.`,\n hint: getDomainDataHint(parsed.data.domain),\n });\n }\n\n // Step 3: Quality gate\n const qualityIssues = validateContentQuality(parsed.data.strengths, parsed.data.growthAreas);\n if (qualityIssues.length > 0) {\n recordStageStatus(runId, parsed.data.domain, { status: 'failed', lastError: `Quality gate failed for \"${parsed.data.domain}\".` });\n return JSON.stringify({\n status: 'quality_error',\n message: `${qualityIssues.length} quality issue(s) detected. Expand the flagged fields and try again.`,\n issues: qualityIssues,\n });\n }\n\n // Save to database\n const domainResult: DomainResult = {\n domain: parsed.data.domain,\n overallScore: parsed.data.overallScore,\n confidenceScore: parsed.data.confidenceScore ?? 0.5,\n strengths: parsed.data.strengths,\n growthAreas: parsed.data.growthAreas,\n data: parsed.data.data,\n analyzedAt: new Date().toISOString(),\n };\n\n saveDomainResult(runId, domainResult);\n recordStageStatus(runId, domainResult.domain, { status: 'validated' });\n\n return JSON.stringify({\n status: 'ok',\n domain: domainResult.domain,\n score: domainResult.overallScore,\n strengthCount: domainResult.strengths.length,\n growthAreaCount: domainResult.growthAreas.length,\n runId,\n message: `Saved ${domainResult.domain} analysis (score: ${domainResult.overallScore}/100) to run #${runId}.`,\n });\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/save-stage-output-D2ZQMBHP.js b/packages/plugin/dist/save-stage-output-D2ZQMBHP.js new file mode 100644 index 00000000..2c0922fc --- /dev/null +++ b/packages/plugin/dist/save-stage-output-D2ZQMBHP.js @@ -0,0 +1,94 @@ +import { + getCurrentRunId, + recordStageStatus, + saveStageOutput +} from "./chunk-T2XRMW7B.js"; +import { + STAGE_NAMES, + STAGE_SCHEMAS, + external_exports +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/save-stage-output.ts +import { readFileSync } from "fs"; +var StageOutputInputSchema = external_exports.object({ + stage: external_exports.enum(STAGE_NAMES), + data: external_exports.record(external_exports.string(), external_exports.unknown()) +}); +async function execute(args) { + const runId = getCurrentRunId(); + const stageName = typeof args.stage === "string" ? args.stage : null; + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first to start an analysis." + }); + } + let data = args.data; + if (typeof args.file === "string") { + try { + data = JSON.parse(readFileSync(args.file, "utf-8")); + } catch (error) { + return JSON.stringify({ + status: "error", + message: `Failed to read input file: ${error instanceof Error ? error.message : "Unknown error"}` + }); + } + } + if (typeof data === "string") { + try { + data = JSON.parse(data); + } catch { + } + } + const input = { stage: args.stage, data }; + const parsed = StageOutputInputSchema.safeParse(input); + if (!parsed.success) { + if (stageName) { + recordStageStatus(runId, stageName, { + status: "failed", + lastError: "Invalid stage output format." + }); + } + return JSON.stringify({ + status: "validation_error", + message: "Invalid stage output format.", + errors: parsed.error.issues.map((i) => ({ + path: i.path.join("."), + message: i.message + })) + }); + } + const { stage, data: validatedData } = parsed.data; + const stageSchema = STAGE_SCHEMAS[stage]; + if (stageSchema) { + const stageValidation = stageSchema.safeParse(validatedData); + if (!stageValidation.success) { + recordStageStatus(runId, stage, { + status: "failed", + lastError: `Data does not match ${stage} schema.` + }); + return JSON.stringify({ + status: "validation_error", + message: `Data does not match ${stage} schema.`, + errors: stageValidation.error.issues.map((i) => ({ + path: i.path.join("."), + message: i.message + })) + }); + } + } + saveStageOutput(runId, stage, validatedData); + recordStageStatus(runId, stage, { status: "validated" }); + return JSON.stringify({ + status: "ok", + stage, + runId, + message: `Saved ${stage} output to run #${runId}.` + }); +} +export { + execute +}; +//# sourceMappingURL=save-stage-output-D2ZQMBHP.js.map \ No newline at end of file diff --git a/packages/plugin/dist/save-stage-output-D2ZQMBHP.js.map b/packages/plugin/dist/save-stage-output-D2ZQMBHP.js.map new file mode 100644 index 00000000..ff4275ac --- /dev/null +++ b/packages/plugin/dist/save-stage-output-D2ZQMBHP.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/save-stage-output.ts"],"sourcesContent":["/**\n * save-stage-output CLI command\n *\n * Validates and persists pipeline stage outputs.\n *\n * Usage: betterprompt-cli save-stage-output --stage extractAiPartnership --file /path/to/data.json\n * OR: betterprompt-cli save-stage-output --stage extractAiPartnership --data '{\"key\":\"value\"}'\n */\n\nimport { readFileSync } from 'node:fs';\nimport { z } from 'zod';\nimport { STAGE_NAMES, STAGE_SCHEMAS } from '@betterprompt/shared';\nimport { getCurrentRunId } from '../../lib/results-db.js';\nimport { recordStageStatus, saveStageOutput } from '../../lib/stage-db.js';\n\nconst StageOutputInputSchema = z.object({\n stage: z.enum(STAGE_NAMES),\n data: z.record(z.string(), z.unknown()),\n});\n\nexport async function execute(args: Record): Promise {\n const runId = getCurrentRunId();\n const stageName = typeof args.stage === 'string' ? args.stage : null;\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first to start an analysis.',\n });\n }\n\n // Read data from file if --file is provided\n let data = args.data;\n if (typeof args.file === 'string') {\n try {\n data = JSON.parse(readFileSync(args.file, 'utf-8'));\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n }\n\n // Parse stringified data if needed\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch {\n // leave as-is\n }\n }\n\n const input = { stage: args.stage, data };\n const parsed = StageOutputInputSchema.safeParse(input);\n if (!parsed.success) {\n if (stageName) {\n recordStageStatus(runId, stageName, {\n status: 'failed',\n lastError: 'Invalid stage output format.',\n });\n }\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid stage output format.',\n errors: parsed.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n });\n }\n\n const { stage, data: validatedData } = parsed.data;\n const stageSchema = STAGE_SCHEMAS[stage];\n if (stageSchema) {\n const stageValidation = stageSchema.safeParse(validatedData);\n if (!stageValidation.success) {\n recordStageStatus(runId, stage, {\n status: 'failed',\n lastError: `Data does not match ${stage} schema.`,\n });\n return JSON.stringify({\n status: 'validation_error',\n message: `Data does not match ${stage} schema.`,\n errors: stageValidation.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n });\n }\n }\n\n saveStageOutput(runId, stage, validatedData);\n recordStageStatus(runId, stage, { status: 'validated' });\n\n return JSON.stringify({\n status: 'ok',\n stage,\n runId,\n message: `Saved ${stage} output to run #${runId}.`,\n });\n}\n"],"mappings":";;;;;;;;;;;;;AASA,SAAS,oBAAoB;AAM7B,IAAM,yBAAyB,iBAAE,OAAO;AAAA,EACtC,OAAO,iBAAE,KAAK,WAAW;AAAA,EACzB,MAAM,iBAAE,OAAO,iBAAE,OAAO,GAAG,iBAAE,QAAQ,CAAC;AACxC,CAAC;AAED,eAAsB,QAAQ,MAAgD;AAC5E,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,YAAY,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ;AAEhE,MAAI,CAAC,OAAO;AACV,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAGA,MAAI,OAAO,KAAK;AAChB,MAAI,OAAO,KAAK,SAAS,UAAU;AACjC,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,KAAK,MAAM,OAAO,CAAC;AAAA,IACpD,SAAS,OAAO;AACd,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,SAAS,8BAA8B,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MACjG,CAAC;AAAA,IACH;AAAA,EACF;AAGA,MAAI,OAAO,SAAS,UAAU;AAC5B,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,QAAM,QAAQ,EAAE,OAAO,KAAK,OAAO,KAAK;AACxC,QAAM,SAAS,uBAAuB,UAAU,KAAK;AACrD,MAAI,CAAC,OAAO,SAAS;AACnB,QAAI,WAAW;AACb,wBAAkB,OAAO,WAAW;AAAA,QAClC,QAAQ;AAAA,QACR,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AACA,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ,OAAO,MAAM,OAAO,IAAI,QAAM;AAAA,QACpC,MAAM,EAAE,KAAK,KAAK,GAAG;AAAA,QACrB,SAAS,EAAE;AAAA,MACb,EAAE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,OAAO,MAAM,cAAc,IAAI,OAAO;AAC9C,QAAM,cAAc,cAAc,KAAK;AACvC,MAAI,aAAa;AACf,UAAM,kBAAkB,YAAY,UAAU,aAAa;AAC3D,QAAI,CAAC,gBAAgB,SAAS;AAC5B,wBAAkB,OAAO,OAAO;AAAA,QAC9B,QAAQ;AAAA,QACR,WAAW,uBAAuB,KAAK;AAAA,MACzC,CAAC;AACD,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,SAAS,uBAAuB,KAAK;AAAA,QACrC,QAAQ,gBAAgB,MAAM,OAAO,IAAI,QAAM;AAAA,UAC7C,MAAM,EAAE,KAAK,KAAK,GAAG;AAAA,UACrB,SAAS,EAAE;AAAA,QACb,EAAE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,kBAAgB,OAAO,OAAO,aAAa;AAC3C,oBAAkB,OAAO,OAAO,EAAE,QAAQ,YAAY,CAAC;AAEvD,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,SAAS,SAAS,KAAK,mBAAmB,KAAK;AAAA,EACjD,CAAC;AACH;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/save-user-prefs-TSPPMLMV.js b/packages/plugin/dist/save-user-prefs-TSPPMLMV.js new file mode 100644 index 00000000..182216d3 --- /dev/null +++ b/packages/plugin/dist/save-user-prefs-TSPPMLMV.js @@ -0,0 +1,101 @@ +import { + readPrefs, + writePrefs +} from "./chunk-IQ4EWBXE.js"; +import { + markAnalysisPending +} from "./chunk-VXUKPHXP.js"; +import "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import { + external_exports +} from "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/save-user-prefs.ts +import { readFileSync } from "fs"; +var SaveUserPrefsInputSchema = external_exports.object({ + selectedProjects: external_exports.array(external_exports.string()).optional(), + starAsked: external_exports.boolean().optional(), + welcomeShown: external_exports.boolean().optional(), + welcomeVersion: external_exports.string().optional(), + markWelcomeCompleted: external_exports.boolean().optional(), + queueAnalysis: external_exports.boolean().optional() +}); +function normalizeWelcomeVersion(value) { + if (value === void 0) return void 0; + const trimmed = value.trim(); + if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) { + return trimmed.slice(1, -1).trim(); + } + return trimmed; +} +async function execute(args) { + let inputArgs = args; + if (args.json !== void 0) { + try { + const parsed2 = typeof args.json === "string" ? JSON.parse(args.json) : args.json; + if (typeof parsed2 === "object" && parsed2 !== null) { + inputArgs = { ...args, ...parsed2 }; + } + } catch (error) { + return JSON.stringify({ + status: "error", + message: `Invalid JSON: ${error instanceof Error ? error.message : "parse error"}` + }); + } + } + if (typeof args.file === "string") { + try { + inputArgs = { ...args, ...JSON.parse(readFileSync(args.file, "utf-8")) }; + } catch (error) { + return JSON.stringify({ + status: "error", + message: `Failed to read input file: ${error instanceof Error ? error.message : "Unknown error"}` + }); + } + } + const { json: _j, file: _f, ...cleanArgs } = inputArgs; + const parsed = SaveUserPrefsInputSchema.safeParse(cleanArgs); + if (!parsed.success) { + return JSON.stringify({ + status: "validation_error", + message: "Invalid user prefs payload.", + errors: parsed.error.issues.map((issue) => ({ + path: issue.path.join("."), + message: issue.message + })) + }); + } + const { markWelcomeCompleted = false, queueAnalysis = false, ...partial } = parsed.data; + const nextPrefs = { + ...partial, + ...partial.welcomeVersion !== void 0 ? { welcomeVersion: normalizeWelcomeVersion(partial.welcomeVersion) } : {} + }; + if (markWelcomeCompleted) { + nextPrefs.welcomeCompleted = (/* @__PURE__ */ new Date()).toISOString(); + } + if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) { + return JSON.stringify({ + status: "noop", + prefs: readPrefs(), + message: "No preference fields were provided." + }); + } + if (Object.keys(nextPrefs).length > 0) { + writePrefs(nextPrefs); + } + if (queueAnalysis) { + markAnalysisPending(); + } + return JSON.stringify({ + status: "ok", + prefs: readPrefs(), + ...queueAnalysis ? { analysisQueued: true } : {}, + message: queueAnalysis ? "Updated preferences and queued analysis for next session." : "Updated BetterPrompt user preferences." + }); +} +export { + execute +}; +//# sourceMappingURL=save-user-prefs-TSPPMLMV.js.map \ No newline at end of file diff --git a/packages/plugin/dist/save-user-prefs-TSPPMLMV.js.map b/packages/plugin/dist/save-user-prefs-TSPPMLMV.js.map new file mode 100644 index 00000000..50e9e580 --- /dev/null +++ b/packages/plugin/dist/save-user-prefs-TSPPMLMV.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/save-user-prefs.ts"],"sourcesContent":["/**\n * save-user-prefs CLI command\n *\n * Persists BetterPrompt user preferences with merge semantics.\n *\n * Usage: betterprompt-cli save-user-prefs --json '{\"selectedProjects\":[]}'\n * OR: betterprompt-cli save-user-prefs --file /path/to/prefs.json\n * OR: betterprompt-cli save-user-prefs --selectedProjects '[]' --starAsked true --markWelcomeCompleted true\n */\n\nimport { readFileSync } from 'node:fs';\nimport { z } from 'zod';\nimport { readPrefs, writePrefs, type UserPrefs } from '../../lib/prefs.js';\nimport { markAnalysisPending } from '../../lib/debounce.js';\n\nconst SaveUserPrefsInputSchema = z.object({\n selectedProjects: z.array(z.string()).optional(),\n starAsked: z.boolean().optional(),\n welcomeShown: z.boolean().optional(),\n welcomeVersion: z.string().optional(),\n markWelcomeCompleted: z.boolean().optional(),\n queueAnalysis: z.boolean().optional(),\n});\n\nfunction normalizeWelcomeVersion(value: string | undefined): string | undefined {\n if (value === undefined) return undefined;\n const trimmed = value.trim();\n if (\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n || (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))\n ) {\n return trimmed.slice(1, -1).trim();\n }\n return trimmed;\n}\n\nexport async function execute(args: Record): Promise {\n // Read from --json or --file if provided\n let inputArgs = args;\n\n if (args.json !== undefined) {\n try {\n // CLI parser may have already parsed the JSON string into an object\n const parsed = typeof args.json === 'string' ? JSON.parse(args.json) : args.json;\n if (typeof parsed === 'object' && parsed !== null) {\n inputArgs = { ...args, ...parsed };\n }\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Invalid JSON: ${error instanceof Error ? error.message : 'parse error'}`,\n });\n }\n }\n\n if (typeof args.file === 'string') {\n try {\n inputArgs = { ...args, ...JSON.parse(readFileSync(args.file, 'utf-8')) };\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Failed to read input file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n }\n\n // Remove CLI-only args before validation\n const { json: _j, file: _f, ...cleanArgs } = inputArgs;\n\n const parsed = SaveUserPrefsInputSchema.safeParse(cleanArgs);\n if (!parsed.success) {\n return JSON.stringify({\n status: 'validation_error',\n message: 'Invalid user prefs payload.',\n errors: parsed.error.issues.map(issue => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n\n const { markWelcomeCompleted = false, queueAnalysis = false, ...partial } = parsed.data;\n const nextPrefs: Partial = {\n ...partial,\n ...(partial.welcomeVersion !== undefined\n ? { welcomeVersion: normalizeWelcomeVersion(partial.welcomeVersion) }\n : {}),\n };\n\n if (markWelcomeCompleted) {\n nextPrefs.welcomeCompleted = new Date().toISOString();\n }\n\n if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) {\n return JSON.stringify({\n status: 'noop',\n prefs: readPrefs(),\n message: 'No preference fields were provided.',\n });\n }\n\n if (Object.keys(nextPrefs).length > 0) {\n writePrefs(nextPrefs);\n }\n\n if (queueAnalysis) {\n markAnalysisPending();\n }\n\n return JSON.stringify({\n status: 'ok',\n prefs: readPrefs(),\n ...(queueAnalysis ? { analysisQueued: true } : {}),\n message: queueAnalysis\n ? 'Updated preferences and queued analysis for next session.'\n : 'Updated BetterPrompt user preferences.',\n });\n}\n"],"mappings":"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","names":["parsed"]} \ No newline at end of file diff --git a/packages/plugin/dist/scan-sessions-C7ZTXOWT.js b/packages/plugin/dist/scan-sessions-C7ZTXOWT.js new file mode 100644 index 00000000..390391fc --- /dev/null +++ b/packages/plugin/dist/scan-sessions-C7ZTXOWT.js @@ -0,0 +1,72 @@ +import { + normalizeProjectFilters, + normalizeProjectNameValue, + scanAndCacheParsedSessions +} from "./chunk-UNYQVFLT.js"; +import { + getAnalysisLifecycleState, + isAnalysisPending +} from "./chunk-VXUKPHXP.js"; +import "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/scan-sessions.ts +async function execute(args) { + const allSessions = await scanAndCacheParsedSessions(); + const includeProjects = normalizeProjectFilters(args.includeProjects); + if (allSessions.length === 0) { + return JSON.stringify({ + status: "no_sessions", + message: "No supported Claude Code or Cursor sessions found on this machine." + }); + } + const allProjectNames = [...new Set(allSessions.map((s) => normalizeProjectNameValue(s.projectName)))]; + const allProjects = allProjectNames.map((name) => ({ + name, + sessionCount: allSessions.filter((s) => normalizeProjectNameValue(s.projectName) === name).length + })).sort((a, b) => b.sessionCount - a.sessionCount); + const sessions = includeProjects?.length ? allSessions.filter((s) => includeProjects.includes(normalizeProjectNameValue(s.projectName))) : allSessions; + if (sessions.length === 0) { + return JSON.stringify({ + status: "no_sessions_after_filter", + allProjects, + message: `No sessions match the selected projects. ${allSessions.length} total sessions available across ${allProjectNames.length} projects.` + }); + } + const projectNames = [...new Set(sessions.map((s) => normalizeProjectNameValue(s.projectName)))]; + const totalMessages = sessions.reduce((sum, s) => sum + s.messages.length, 0); + const totalDuration = sessions.reduce((sum, s) => sum + s.durationSeconds, 0); + const sourceCounts = sessions.reduce((acc, session) => { + const source = session.source ?? "unknown"; + acc[source] = (acc[source] ?? 0) + 1; + return acc; + }, {}); + const earliest = sessions[sessions.length - 1]; + const latest = sessions[0]; + const pending = isAnalysisPending(); + const analysisState = getAnalysisLifecycleState(); + return JSON.stringify({ + status: "ok", + sessionCount: sessions.length, + projectCount: projectNames.length, + projects: projectNames.slice(0, 10), + allProjects, + sources: sourceCounts, + totalMessages, + totalDurationMinutes: Math.round(totalDuration / 60), + dateRange: { + earliest: earliest.startTime, + latest: latest.startTime + }, + avgMessagesPerSession: Math.round(totalMessages / sessions.length), + analysisState, + analysisPending: pending, + message: pending ? `Found ${sessions.length} sessions. A queued BetterPrompt analysis is pending.` : `Found ${sessions.length} sessions across ${projectNames.length} projects. Ready for extraction.` + }); +} +export { + execute +}; +//# sourceMappingURL=scan-sessions-C7ZTXOWT.js.map \ No newline at end of file diff --git a/packages/plugin/dist/scan-sessions-C7ZTXOWT.js.map b/packages/plugin/dist/scan-sessions-C7ZTXOWT.js.map new file mode 100644 index 00000000..b140eece --- /dev/null +++ b/packages/plugin/dist/scan-sessions-C7ZTXOWT.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/scan-sessions.ts"],"sourcesContent":["/**\n * scan-sessions CLI command\n *\n * Scans all supported local session sources and caches fully parsed sessions.\n * Returns session metadata (count, date range, total messages).\n *\n * Usage: betterprompt-cli scan-sessions [--includeProjects '[\"proj1\",\"proj2\"]']\n */\n\nimport {\n scanAndCacheParsedSessions,\n} from '../../lib/core/multi-source-session-scanner.js';\nimport { getAnalysisLifecycleState, isAnalysisPending } from '../../lib/debounce.js';\nimport { normalizeProjectFilters, normalizeProjectNameValue } from '../../lib/project-filters.js';\n\nexport async function execute(args: Record): Promise {\n const allSessions = await scanAndCacheParsedSessions();\n const includeProjects = normalizeProjectFilters(args.includeProjects as string[] | undefined);\n\n if (allSessions.length === 0) {\n return JSON.stringify({\n status: 'no_sessions',\n message: 'No supported Claude Code or Cursor sessions found on this machine.',\n });\n }\n\n const allProjectNames = [...new Set(allSessions.map(s => normalizeProjectNameValue(s.projectName)))];\n const allProjects = allProjectNames.map(name => ({\n name,\n sessionCount: allSessions.filter(s => normalizeProjectNameValue(s.projectName) === name).length,\n })).sort((a, b) => b.sessionCount - a.sessionCount);\n\n const sessions = includeProjects?.length\n ? allSessions.filter(s => includeProjects.includes(normalizeProjectNameValue(s.projectName)))\n : allSessions;\n\n if (sessions.length === 0) {\n return JSON.stringify({\n status: 'no_sessions_after_filter',\n allProjects,\n message: `No sessions match the selected projects. ${allSessions.length} total sessions available across ${allProjectNames.length} projects.`,\n });\n }\n\n const projectNames = [...new Set(sessions.map(s => normalizeProjectNameValue(s.projectName)))];\n const totalMessages = sessions.reduce((sum, s) => sum + s.messages.length, 0);\n const totalDuration = sessions.reduce((sum, s) => sum + s.durationSeconds, 0);\n const sourceCounts = sessions.reduce>((acc, session) => {\n const source = session.source ?? 'unknown';\n acc[source] = (acc[source] ?? 0) + 1;\n return acc;\n }, {});\n\n const earliest = sessions[sessions.length - 1]!;\n const latest = sessions[0]!;\n\n const pending = isAnalysisPending();\n const analysisState = getAnalysisLifecycleState();\n\n return JSON.stringify({\n status: 'ok',\n sessionCount: sessions.length,\n projectCount: projectNames.length,\n projects: projectNames.slice(0, 10),\n allProjects,\n sources: sourceCounts,\n totalMessages,\n totalDurationMinutes: Math.round(totalDuration / 60),\n dateRange: {\n earliest: earliest.startTime,\n latest: latest.startTime,\n },\n avgMessagesPerSession: Math.round(totalMessages / sessions.length),\n analysisState,\n analysisPending: pending,\n message: pending\n ? `Found ${sessions.length} sessions. A queued BetterPrompt analysis is pending.`\n : `Found ${sessions.length} sessions across ${projectNames.length} projects. Ready for extraction.`,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,eAAsB,QAAQ,MAAgD;AAC5E,QAAM,cAAc,MAAM,2BAA2B;AACrD,QAAM,kBAAkB,wBAAwB,KAAK,eAAuC;AAE5F,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,YAAY,IAAI,OAAK,0BAA0B,EAAE,WAAW,CAAC,CAAC,CAAC;AACnG,QAAM,cAAc,gBAAgB,IAAI,WAAS;AAAA,IAC/C;AAAA,IACA,cAAc,YAAY,OAAO,OAAK,0BAA0B,EAAE,WAAW,MAAM,IAAI,EAAE;AAAA,EAC3F,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,eAAe,EAAE,YAAY;AAElD,QAAM,WAAW,iBAAiB,SAC9B,YAAY,OAAO,OAAK,gBAAgB,SAAS,0BAA0B,EAAE,WAAW,CAAC,CAAC,IAC1F;AAEJ,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,MACA,SAAS,4CAA4C,YAAY,MAAM,oCAAoC,gBAAgB,MAAM;AAAA,IACnI,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,CAAC,GAAG,IAAI,IAAI,SAAS,IAAI,OAAK,0BAA0B,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7F,QAAM,gBAAgB,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,SAAS,QAAQ,CAAC;AAC5E,QAAM,gBAAgB,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,iBAAiB,CAAC;AAC5E,QAAM,eAAe,SAAS,OAA+B,CAAC,KAAK,YAAY;AAC7E,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AACnC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,WAAW,SAAS,SAAS,SAAS,CAAC;AAC7C,QAAM,SAAS,SAAS,CAAC;AAEzB,QAAM,UAAU,kBAAkB;AAClC,QAAM,gBAAgB,0BAA0B;AAEhD,SAAO,KAAK,UAAU;AAAA,IACpB,QAAQ;AAAA,IACR,cAAc,SAAS;AAAA,IACvB,cAAc,aAAa;AAAA,IAC3B,UAAU,aAAa,MAAM,GAAG,EAAE;AAAA,IAClC;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,sBAAsB,KAAK,MAAM,gBAAgB,EAAE;AAAA,IACnD,WAAW;AAAA,MACT,UAAU,SAAS;AAAA,MACnB,QAAQ,OAAO;AAAA,IACjB;AAAA,IACA,uBAAuB,KAAK,MAAM,gBAAgB,SAAS,MAAM;AAAA,IACjE;AAAA,IACA,iBAAiB;AAAA,IACjB,SAAS,UACL,SAAS,SAAS,MAAM,0DACxB,SAAS,SAAS,MAAM,oBAAoB,aAAa,MAAM;AAAA,EACrE,CAAC;AACH;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/sync-to-team-TJFZJDZM.js b/packages/plugin/dist/sync-to-team-TJFZJDZM.js new file mode 100644 index 00000000..76815c06 --- /dev/null +++ b/packages/plugin/dist/sync-to-team-TJFZJDZM.js @@ -0,0 +1,63 @@ +import { + markAnalysisComplete +} from "./chunk-VXUKPHXP.js"; +import { + getConfig +} from "./chunk-FIGO7IPG.js"; +import "./chunk-FW6ZW4J3.js"; +import { + assembleCanonicalRun +} from "./chunk-T2XRMW7B.js"; +import "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/sync-to-team.ts +async function execute(args) { + const serverUrl = (args.serverUrl ?? getConfig().serverUrl)?.replace(/\/$/, ""); + if (!serverUrl) { + return JSON.stringify({ + status: "not_configured", + message: "No team server URL. Set BETTERPROMPT_SERVER_URL or pass --serverUrl." + }); + } + const run = assembleCanonicalRun(); + if (!run) { + return JSON.stringify({ + status: "no_data", + message: "No analysis results to sync. Run a full analysis first." + }); + } + try { + const response = await fetch(`${serverUrl}/api/analysis/sync`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ run, syncedAt: (/* @__PURE__ */ new Date()).toISOString() }), + signal: AbortSignal.timeout(15e3) + }); + if (!response.ok) { + const errorText = await response.text().catch(() => "Unknown error"); + return JSON.stringify({ + status: "sync_failed", + httpStatus: response.status, + message: `Server returned ${response.status}: ${errorText}` + }); + } + const result = await response.json().catch(() => ({})); + markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions); + return JSON.stringify({ + status: "ok", + serverUrl, + message: `Successfully synced analysis to ${serverUrl}.`, + ...result && typeof result === "object" ? result : {} + }); + } catch (error) { + return JSON.stringify({ + status: "error", + message: `Failed to connect to ${serverUrl}: ${error instanceof Error ? error.message : "Unknown error"}` + }); + } +} +export { + execute +}; +//# sourceMappingURL=sync-to-team-TJFZJDZM.js.map \ No newline at end of file diff --git a/packages/plugin/dist/sync-to-team-TJFZJDZM.js.map b/packages/plugin/dist/sync-to-team-TJFZJDZM.js.map new file mode 100644 index 00000000..a9b45f74 --- /dev/null +++ b/packages/plugin/dist/sync-to-team-TJFZJDZM.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/sync-to-team.ts"],"sourcesContent":["/**\n * sync-to-team CLI command\n *\n * Sends analysis results to a team server.\n *\n * Usage: betterprompt-cli sync-to-team [--serverUrl http://localhost:3000]\n */\n\nimport { getConfig } from '../../lib/config.js';\nimport { assembleCanonicalRun } from '../../lib/results-db.js';\nimport { markAnalysisComplete } from '../../lib/debounce.js';\n\nexport async function execute(args: Record): Promise {\n const serverUrl = ((args.serverUrl as string) ?? getConfig().serverUrl)?.replace(/\\/$/, '');\n\n if (!serverUrl) {\n return JSON.stringify({\n status: 'not_configured',\n message: 'No team server URL. Set BETTERPROMPT_SERVER_URL or pass --serverUrl.',\n });\n }\n\n const run = assembleCanonicalRun();\n if (!run) {\n return JSON.stringify({\n status: 'no_data',\n message: 'No analysis results to sync. Run a full analysis first.',\n });\n }\n\n try {\n const response = await fetch(`${serverUrl}/api/analysis/sync`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ run, syncedAt: new Date().toISOString() }),\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'Unknown error');\n return JSON.stringify({\n status: 'sync_failed',\n httpStatus: response.status,\n message: `Server returned ${response.status}: ${errorText}`,\n });\n }\n\n const result = await response.json().catch(() => ({})) as Record;\n markAnalysisComplete(run.phase1Output.sessionMetrics.totalSessions);\n\n return JSON.stringify({\n status: 'ok',\n serverUrl,\n message: `Successfully synced analysis to ${serverUrl}.`,\n ...(result && typeof result === 'object' ? result : {}),\n });\n } catch (error) {\n return JSON.stringify({\n status: 'error',\n message: `Failed to connect to ${serverUrl}: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAYA,eAAsB,QAAQ,MAAgD;AAC5E,QAAM,aAAc,KAAK,aAAwB,UAAU,EAAE,YAAY,QAAQ,OAAO,EAAE;AAE1F,MAAI,CAAC,WAAW;AACd,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,qBAAqB;AACjC,MAAI,CAAC,KAAK;AACR,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,GAAG,SAAS,sBAAsB;AAAA,MAC7D,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC9C,MAAM,KAAK,UAAU,EAAE,KAAK,WAAU,oBAAI,KAAK,GAAE,YAAY,EAAE,CAAC;AAAA,MAChE,QAAQ,YAAY,QAAQ,IAAM;AAAA,IACpC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,YAAY,MAAM,SAAS,KAAK,EAAE,MAAM,MAAM,eAAe;AACnE,aAAO,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,QACR,YAAY,SAAS;AAAA,QACrB,SAAS,mBAAmB,SAAS,MAAM,KAAK,SAAS;AAAA,MAC3D,CAAC;AAAA,IACH;AAEA,UAAM,SAAS,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AACrD,yBAAqB,IAAI,aAAa,eAAe,aAAa;AAElE,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,MACA,SAAS,mCAAmC,SAAS;AAAA,MACrD,GAAI,UAAU,OAAO,WAAW,WAAW,SAAS,CAAC;AAAA,IACvD,CAAC;AAAA,EACH,SAAS,OAAO;AACd,WAAO,KAAK,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS,wBAAwB,SAAS,KAAK,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACzG,CAAC;AAAA,EACH;AACF;","names":[]} \ No newline at end of file diff --git a/packages/plugin/dist/verify-evidence-XTM6E7ST.js b/packages/plugin/dist/verify-evidence-XTM6E7ST.js new file mode 100644 index 00000000..7f055460 --- /dev/null +++ b/packages/plugin/dist/verify-evidence-XTM6E7ST.js @@ -0,0 +1,142 @@ +import { + getAnalysisRun, + getCurrentRunId, + getDomainResults, + recordStageStatus, + saveStageOutput +} from "./chunk-T2XRMW7B.js"; +import "./chunk-UORQZYNI.js"; +import "./chunk-NSBPE2FW.js"; + +// cli/commands/verify-evidence.ts +function normalizeText(text) { + return text.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9\s]/g, " ").replace(/\s+/g, " ").trim(); +} +function tokenize(text) { + return normalizeText(text).split(" ").filter((token) => token.length > 1); +} +function bigrams(text) { + const normalized = normalizeText(text).replace(/\s+/g, " "); + if (normalized.length < 2) return normalized ? [normalized] : []; + const grams = []; + for (let index = 0; index < normalized.length - 1; index += 1) { + grams.push(normalized.slice(index, index + 2)); + } + return grams; +} +function diceCoefficient(left, right) { + const leftBigrams = bigrams(left); + const rightBigrams = bigrams(right); + if (leftBigrams.length === 0 || rightBigrams.length === 0) return 0; + const rightCounts = /* @__PURE__ */ new Map(); + for (const gram of rightBigrams) { + rightCounts.set(gram, (rightCounts.get(gram) ?? 0) + 1); + } + let intersection = 0; + for (const gram of leftBigrams) { + const count = rightCounts.get(gram) ?? 0; + if (count > 0) { + intersection += 1; + rightCounts.set(gram, count - 1); + } + } + return 2 * intersection / (leftBigrams.length + rightBigrams.length); +} +function scoreEvidence(quote, utterance) { + const normalizedQuote = normalizeText(quote); + const normalizedUtterance = normalizeText(utterance); + if (!normalizedQuote || !normalizedUtterance) return 0; + if (normalizedUtterance.includes(normalizedQuote) || normalizedQuote.includes(normalizedUtterance)) { + return 100; + } + const quoteTokens = tokenize(quote); + const utteranceTokens = new Set(tokenize(utterance)); + if (quoteTokens.length === 0) return 0; + const sharedTokens = quoteTokens.filter((token) => utteranceTokens.has(token)).length; + const tokenCoverage = sharedTokens / quoteTokens.length; + const similarity = diceCoefficient(normalizedQuote, normalizedUtterance); + if (tokenCoverage >= 0.85 || similarity >= 0.82) return 85; + if (tokenCoverage >= 0.6 || similarity >= 0.65) return 65; + if (tokenCoverage >= 0.4 || similarity >= 0.5) return 45; + return 0; +} +async function execute(args) { + const threshold = typeof args.threshold === "number" ? args.threshold : 50; + const runId = getCurrentRunId(); + if (!runId) { + return JSON.stringify({ + status: "error", + message: "No active analysis run. Run extract-data first." + }); + } + const run = getAnalysisRun(runId); + if (!run?.phase1Output) { + return JSON.stringify({ + status: "error", + runId, + message: `Run #${runId} has no Phase 1 output.` + }); + } + const domainResults = getDomainResults(runId); + if (domainResults.length === 0) { + return JSON.stringify({ + status: "error", + runId, + message: `Run #${runId} has no saved domain results to verify.` + }); + } + recordStageStatus(runId, "evidenceVerification", { status: "running" }); + try { + const utteranceLookup = Object.fromEntries( + run.phase1Output.developerUtterances.map((utterance) => [ + utterance.id, + utterance.displayText || utterance.text + ]) + ); + const verifiedResults = []; + const domainStats = []; + for (const result of domainResults) { + const evidenceItems = [ + ...result.strengths.flatMap((strength) => strength.evidence ?? []), + ...result.growthAreas.flatMap((growthArea) => growthArea.evidence ?? []) + ]; + let keptCount2 = 0; + let filteredCount2 = 0; + for (const evidence of evidenceItems) { + const utteranceId = typeof evidence.utteranceId === "string" ? evidence.utteranceId : ""; + const quote = typeof evidence.quote === "string" ? evidence.quote : ""; + const sourceUtterance = utteranceId ? utteranceLookup[utteranceId] ?? "" : ""; + const relevanceScore = scoreEvidence(quote, sourceUtterance); + const verified = relevanceScore >= threshold; + if (verified) keptCount2++; + else filteredCount2++; + verifiedResults.push({ utteranceId, quote, relevanceScore, verified }); + } + domainStats.push({ domain: result.domain, totalEvidence: evidenceItems.length, keptCount: keptCount2, filteredCount: filteredCount2 }); + } + const data = { verifiedResults, domainStats, threshold }; + saveStageOutput(runId, "evidenceVerification", data); + recordStageStatus(runId, "evidenceVerification", { status: "validated" }); + const keptCount = verifiedResults.filter((r) => r.verified).length; + const filteredCount = verifiedResults.length - keptCount; + return JSON.stringify({ + status: "ok", + runId, + stage: "evidenceVerification", + threshold, + totalEvidence: verifiedResults.length, + keptCount, + filteredCount, + domainStats, + message: `Verified ${verifiedResults.length} evidence items. Kept ${keptCount}, filtered ${filteredCount}.` + }); + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to verify evidence."; + recordStageStatus(runId, "evidenceVerification", { status: "failed", lastError: message }); + return JSON.stringify({ status: "error", runId, message }); + } +} +export { + execute +}; +//# sourceMappingURL=verify-evidence-XTM6E7ST.js.map \ No newline at end of file diff --git a/packages/plugin/dist/verify-evidence-XTM6E7ST.js.map b/packages/plugin/dist/verify-evidence-XTM6E7ST.js.map new file mode 100644 index 00000000..da9ce47c --- /dev/null +++ b/packages/plugin/dist/verify-evidence-XTM6E7ST.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../cli/commands/verify-evidence.ts"],"sourcesContent":["/**\n * verify-evidence CLI command\n *\n * Deterministically verifies saved evidence quotes against utterances.\n *\n * Usage: betterprompt-cli verify-evidence [--threshold 50]\n */\n\nimport {\n getAnalysisRun,\n getCurrentRunId,\n getDomainResults,\n} from '../../lib/results-db.js';\nimport {\n recordStageStatus,\n saveStageOutput,\n} from '../../lib/stage-db.js';\n\nfunction normalizeText(text: string): string {\n return text\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction tokenize(text: string): string[] {\n return normalizeText(text)\n .split(' ')\n .filter(token => token.length > 1);\n}\n\nfunction bigrams(text: string): string[] {\n const normalized = normalizeText(text).replace(/\\s+/g, ' ');\n if (normalized.length < 2) return normalized ? [normalized] : [];\n const grams: string[] = [];\n for (let index = 0; index < normalized.length - 1; index += 1) {\n grams.push(normalized.slice(index, index + 2));\n }\n return grams;\n}\n\nfunction diceCoefficient(left: string, right: string): number {\n const leftBigrams = bigrams(left);\n const rightBigrams = bigrams(right);\n if (leftBigrams.length === 0 || rightBigrams.length === 0) return 0;\n\n const rightCounts = new Map();\n for (const gram of rightBigrams) {\n rightCounts.set(gram, (rightCounts.get(gram) ?? 0) + 1);\n }\n\n let intersection = 0;\n for (const gram of leftBigrams) {\n const count = rightCounts.get(gram) ?? 0;\n if (count > 0) {\n intersection += 1;\n rightCounts.set(gram, count - 1);\n }\n }\n\n return (2 * intersection) / (leftBigrams.length + rightBigrams.length);\n}\n\nfunction scoreEvidence(quote: string, utterance: string): number {\n const normalizedQuote = normalizeText(quote);\n const normalizedUtterance = normalizeText(utterance);\n if (!normalizedQuote || !normalizedUtterance) return 0;\n\n if (normalizedUtterance.includes(normalizedQuote) || normalizedQuote.includes(normalizedUtterance)) {\n return 100;\n }\n\n const quoteTokens = tokenize(quote);\n const utteranceTokens = new Set(tokenize(utterance));\n if (quoteTokens.length === 0) return 0;\n\n const sharedTokens = quoteTokens.filter(token => utteranceTokens.has(token)).length;\n const tokenCoverage = sharedTokens / quoteTokens.length;\n const similarity = diceCoefficient(normalizedQuote, normalizedUtterance);\n\n if (tokenCoverage >= 0.85 || similarity >= 0.82) return 85;\n if (tokenCoverage >= 0.6 || similarity >= 0.65) return 65;\n if (tokenCoverage >= 0.4 || similarity >= 0.5) return 45;\n return 0;\n}\n\nexport async function execute(args: Record): Promise {\n const threshold = (typeof args.threshold === 'number' ? args.threshold : 50);\n const runId = getCurrentRunId();\n\n if (!runId) {\n return JSON.stringify({\n status: 'error',\n message: 'No active analysis run. Run extract-data first.',\n });\n }\n\n const run = getAnalysisRun(runId);\n if (!run?.phase1Output) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: `Run #${runId} has no Phase 1 output.`,\n });\n }\n\n const domainResults = getDomainResults(runId);\n if (domainResults.length === 0) {\n return JSON.stringify({\n status: 'error',\n runId,\n message: `Run #${runId} has no saved domain results to verify.`,\n });\n }\n\n recordStageStatus(runId, 'evidenceVerification', { status: 'running' });\n\n try {\n const utteranceLookup = Object.fromEntries(\n run.phase1Output.developerUtterances.map(utterance => [\n utterance.id,\n utterance.displayText || utterance.text,\n ]),\n );\n\n const verifiedResults: Array<{\n utteranceId: string;\n quote: string;\n relevanceScore: number;\n verified: boolean;\n }> = [];\n const domainStats: Array<{\n domain: string;\n totalEvidence: number;\n keptCount: number;\n filteredCount: number;\n }> = [];\n\n for (const result of domainResults) {\n const evidenceItems = [\n ...result.strengths.flatMap(strength => strength.evidence ?? []),\n ...result.growthAreas.flatMap(growthArea => growthArea.evidence ?? []),\n ];\n\n let keptCount = 0;\n let filteredCount = 0;\n\n for (const evidence of evidenceItems) {\n const utteranceId = typeof evidence.utteranceId === 'string' ? evidence.utteranceId : '';\n const quote = typeof evidence.quote === 'string' ? evidence.quote : '';\n const sourceUtterance = utteranceId ? (utteranceLookup[utteranceId] ?? '') : '';\n const relevanceScore = scoreEvidence(quote, sourceUtterance);\n const verified = relevanceScore >= threshold;\n\n if (verified) keptCount++;\n else filteredCount++;\n\n verifiedResults.push({ utteranceId, quote, relevanceScore, verified });\n }\n\n domainStats.push({ domain: result.domain, totalEvidence: evidenceItems.length, keptCount, filteredCount });\n }\n\n const data = { verifiedResults, domainStats, threshold };\n saveStageOutput(runId, 'evidenceVerification', data);\n recordStageStatus(runId, 'evidenceVerification', { status: 'validated' });\n\n const keptCount = verifiedResults.filter(r => r.verified).length;\n const filteredCount = verifiedResults.length - keptCount;\n\n return JSON.stringify({\n status: 'ok',\n runId,\n stage: 'evidenceVerification',\n threshold,\n totalEvidence: verifiedResults.length,\n keptCount,\n filteredCount,\n domainStats,\n message: `Verified ${verifiedResults.length} evidence items. Kept ${keptCount}, filtered ${filteredCount}.`,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to verify evidence.';\n recordStageStatus(runId, 'evidenceVerification', { status: 'failed', lastError: message });\n return JSON.stringify({ status: 'error', runId, message });\n }\n}\n"],"mappings":"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","names":["keptCount","filteredCount"]} \ No newline at end of file diff --git a/packages/plugin/lib/api-client.ts b/packages/plugin/lib/api-client.ts deleted file mode 100644 index e915b111..00000000 --- a/packages/plugin/lib/api-client.ts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * API Client - * - * HTTP client for communicating with the BetterPrompt server. - * Authentication is no longer required — all endpoints work without tokens. - */ - -import { getConfig } from './config.js'; - -export interface UserSummary { - resultId: string; - analyzedAt: string; - profile: { - primaryType: string; - controlLevel: string; - matrixName: string; - personalitySummary: string; - domainScores: Record; - }; - growthAreas: Array<{ - title: string; - domain: string; - severity: string; - recommendation: string; - }>; - strengths: Array<{ - domain: string; - domainLabel: string; - topStrength: string; - domainScore: number; - }>; - antiPatterns: Array<{ - pattern: string; - frequency: number; - impact: string; - }>; - kpt: { - keep: string[]; - problem: string[]; - tryNext: string[]; - }; -} - -export interface ApiError { - error: string; - message: string; -} - -/** - * Fetch the user's analysis summary from the server. - * Returns null if no analysis exists yet. - * Throws on network or auth errors. - */ -export async function fetchUserSummary(): Promise { - const config = getConfig(); - - const url = `${config.serverUrl}/api/analysis/user/summary`; - - const response = await fetch(url, { - method: 'GET', - headers: { - Accept: 'application/json', - }, - signal: AbortSignal.timeout(10_000), - }); - - if (!response.ok) { - const body = (await response.json().catch(() => ({}))) as Partial; - throw new Error( - `Server error (${response.status}): ${body.message ?? 'Unknown error'}`, - ); - } - - const data = await response.json() as { summary: UserSummary | null }; - return data.summary; -} - -/** - * Verify server connectivity by hitting /api/auth/me. - * No authentication required — always succeeds if server is reachable. - */ -export async function verifyAuth(): Promise<{ id: string; email: string } | null> { - const config = getConfig(); - - try { - const response = await fetch(`${config.serverUrl}/api/auth/me`, { - headers: { - Accept: 'application/json', - }, - signal: AbortSignal.timeout(5_000), - }); - - if (!response.ok) return null; - - const data = await response.json() as { id: string; email: string }; - return data; - } catch { - return null; - } -} diff --git a/packages/plugin/lib/cache.ts b/packages/plugin/lib/cache.ts deleted file mode 100644 index 3ff3bac4..00000000 --- a/packages/plugin/lib/cache.ts +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Insight Cache - * - * Local SQLite cache for user insights at ~/.betterprompt/insight-cache.db. - * Serves stale data when the server is unreachable, refreshes after - * each analysis or every 24 hours. - */ - -import Database from 'better-sqlite3'; -import { mkdirSync } from 'node:fs'; -import { dirname } from 'node:path'; -import { getCacheDbPath } from './config.js'; -import { fetchUserSummary, type UserSummary } from './api-client.js'; - -const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours - -interface CacheRow { - user_id: string; - result_id: string; - profile_json: string; - growth_json: string; - insights_json: string; - fetched_at: string; -} - -let db: Database.Database | null = null; - -function getDb(): Database.Database { - if (db) return db; - - const dbPath = getCacheDbPath(); - mkdirSync(dirname(dbPath), { recursive: true }); - - db = new Database(dbPath); - db.pragma('journal_mode = WAL'); - db.pragma('foreign_keys = ON'); - - db.exec(` - CREATE TABLE IF NOT EXISTS cached_insights ( - user_id TEXT PRIMARY KEY, - result_id TEXT NOT NULL, - profile_json TEXT NOT NULL, - growth_json TEXT NOT NULL, - insights_json TEXT NOT NULL, - fetched_at TEXT NOT NULL - ) - `); - - return db; -} - -/** - * Store a summary in the local cache. - */ -export function setCachedSummary(userId: string, summary: UserSummary): void { - const database = getDb(); - - database - .prepare( - `INSERT OR REPLACE INTO cached_insights - (user_id, result_id, profile_json, growth_json, insights_json, fetched_at) - VALUES (?, ?, ?, ?, ?, ?)`, - ) - .run( - userId, - summary.resultId, - JSON.stringify({ - resultId: summary.resultId, - analyzedAt: summary.analyzedAt, - profile: summary.profile, - }), - JSON.stringify(summary.growthAreas), - JSON.stringify({ - strengths: summary.strengths, - antiPatterns: summary.antiPatterns, - kpt: summary.kpt, - }), - new Date().toISOString(), - ); -} - -/** - * Get cached summary. Returns null if not cached. - */ -export function getCachedSummary(userId: string): UserSummary | null { - const database = getDb(); - const row = database - .prepare('SELECT * FROM cached_insights WHERE user_id = ?') - .get(userId) as CacheRow | undefined; - - if (!row) return null; - - const profile = JSON.parse(row.profile_json) as { - resultId: string; - analyzedAt: string; - profile: UserSummary['profile']; - }; - const growthAreas = JSON.parse(row.growth_json) as UserSummary['growthAreas']; - const insights = JSON.parse(row.insights_json) as { - strengths: UserSummary['strengths']; - antiPatterns: UserSummary['antiPatterns']; - kpt: UserSummary['kpt']; - }; - - return { - resultId: profile.resultId, - analyzedAt: profile.analyzedAt, - profile: profile.profile, - growthAreas, - strengths: insights.strengths, - antiPatterns: insights.antiPatterns, - kpt: insights.kpt, - }; -} - -/** - * Check if the cache is stale (older than 24 hours). - */ -export function isCacheStale(userId: string): boolean { - const database = getDb(); - const row = database - .prepare('SELECT fetched_at FROM cached_insights WHERE user_id = ?') - .get(userId) as Pick | undefined; - - if (!row) return true; - - const fetchedAt = new Date(row.fetched_at).getTime(); - return Date.now() - fetchedAt > CACHE_TTL_MS; -} - -/** - * Get summary with cache-through pattern: - * 1. Return cached data if fresh - * 2. Try to refresh from server - * 3. Return stale cache if server unreachable - * 4. Return null if no data anywhere - */ -export async function getSummaryWithCache(userId: string): Promise { - const cached = getCachedSummary(userId); - - // Fresh cache — return immediately - if (cached && !isCacheStale(userId)) { - return cached; - } - - // Try to refresh from server - try { - const fresh = await fetchUserSummary(); - if (fresh) { - setCachedSummary(userId, fresh); - return fresh; - } - // Server returned null (no analysis yet), return stale cache if available - return cached; - } catch { - // Server unreachable — serve stale cache - return cached; - } -} - -/** - * Force refresh the cache from the server. - */ -export async function refreshCache(userId: string): Promise { - const fresh = await fetchUserSummary(); - if (fresh) { - setCachedSummary(userId, fresh); - } - return fresh; -} - -/** - * Close the database connection (for clean shutdown). - */ -export function closeCache(): void { - if (db) { - db.close(); - db = null; - } -} diff --git a/packages/plugin/lib/native-deps.ts b/packages/plugin/lib/native-deps.ts index 23375148..073492cf 100644 --- a/packages/plugin/lib/native-deps.ts +++ b/packages/plugin/lib/native-deps.ts @@ -9,8 +9,8 @@ * directory walking. Fallback: `~/.betterprompt/node_modules/` for * callers that don't know the plugin root. * - * Safe to call from multiple entry points (SessionStart hook, MCP - * server startup) — a marker file prevents redundant installs. + * Safe to call from multiple entry points (SessionStart hook, CLI + * startup) — a marker file prevents redundant installs. */ import { existsSync, mkdirSync } from 'node:fs'; diff --git a/packages/plugin/lib/scanner/tool-mapping.ts b/packages/plugin/lib/scanner/tool-mapping.ts index a5d44a74..41c3283c 100644 --- a/packages/plugin/lib/scanner/tool-mapping.ts +++ b/packages/plugin/lib/scanner/tool-mapping.ts @@ -23,8 +23,9 @@ export const TOOL_MAPPING: Record> = { 'claude-code': {}, /** - * Cursor uses snake_case tool names - * Map to Claude Code equivalents + * @deprecated Cursor support was dropped. These mappings are retained only + * for type compatibility with SessionSourceType and the cursor scanner sources. + * Remove when the cursor/cursor-composer scanners are deleted. */ 'cursor': { // File operations @@ -78,10 +79,7 @@ export const TOOL_MAPPING: Record> = { 'user_input': 'AskUserQuestion', }, - /** - * Cursor Composer uses the same snake_case tool names as Cursor - * Reuses the same mapping for consistency - */ + /** @deprecated See cursor entry above. */ 'cursor-composer': { // File operations 'read_file': 'Read', @@ -214,14 +212,10 @@ export function getToolCategory( } /** - * Cursor Composer numeric tool ID → tool name mapping - * - * Cursor Composer stores tool calls with numeric capabilityType IDs - * in the toolFormerData.tool field. This maps known IDs to tool names - * which can then be normalized via TOOL_MAPPING['cursor-composer']. + * @deprecated Cursor support was dropped. Retained for type compatibility. * + * Cursor Composer numeric tool ID to tool name mapping. * Known IDs verified from real state.vscdb data (2026-02-05). - * Unknown IDs will fall through as 'tool_{id}'. */ export const CURSOR_COMPOSER_TOOL_IDS: Record = { 15: 'run_terminal_cmd', diff --git a/packages/plugin/mcp/server-entry.ts b/packages/plugin/mcp/server-entry.ts deleted file mode 100644 index 4e8ec730..00000000 --- a/packages/plugin/mcp/server-entry.ts +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -/** - * MCP Server Bootstrap - * - * Thin entry point that guarantees native dependencies (better-sqlite3) - * are installed BEFORE loading the real server. This is critical for - * first-run-in-session: the plugin may be installed mid-session after - * the SessionStart hook has already fired, so the MCP server is the - * first (and only) entry point that runs. - * - * Static imports of better-sqlite3 in cache.ts / results-db.ts would - * crash Node during module evaluation if the native addon is missing. - * By deferring the server import to a dynamic `import()`, we ensure - * ensureNativeDeps() runs first. - * - * pluginRoot derivation: this file lives at dist/mcp/server-entry.js, - * so going up 2 levels reaches the plugin root where node_modules/ - * is installed by ensureNativeDeps. - */ - -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { ensureNativeDeps } from '../lib/native-deps.js'; -import { info } from '../lib/logger.js'; - -const pluginRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..'); - -info('bootstrap', 'ensuring native deps'); -ensureNativeDeps({ pluginRoot, fatal: true }); -info('bootstrap', 'native deps ready, loading server'); - -await import('./server.js'); diff --git a/packages/plugin/mcp/server.ts b/packages/plugin/mcp/server.ts deleted file mode 100644 index 56fc95e9..00000000 --- a/packages/plugin/mcp/server.ts +++ /dev/null @@ -1,285 +0,0 @@ -#!/usr/bin/env node - -/** - * BetterPrompt MCP Server - * - * Stdio-based MCP server that exposes developer analysis insights - * as tools for Claude Code to call proactively. - * - * === Local-First Tools (no server needed) === - * scan_sessions — Scan Claude Code session logs - * extract_data — Run deterministic Phase 1 extraction - * save_domain_results — Save domain analysis results - * get_domain_results — Read saved domain analysis results - * get_user_prefs — Read persisted BetterPrompt user preferences - * get_run_progress — Inspect resumable local analysis progress - * classify_developer_type — Classify developer type from scores - * verify_evidence — Deterministically validate saved evidence quotes - * generate_report — Generate HTML report + start localhost server - * sync_to_team — Sync results to team server (optional) - * - * === Server-Backed Tools (backward compatible) === - * get_developer_profile — AI collaboration type, scores, personality - * get_growth_areas — Top growth areas with recommendations - * get_recent_insights — Strengths, anti-patterns, or KPT summary - * - * Data flow: local tools work entirely offline. Server tools use - * local SQLite cache → server API (refresh if stale). - */ - -import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; -import { z } from 'zod'; -import { closeCache, getSummaryWithCache } from '../lib/cache.js'; -import { verifyAuth } from '../lib/api-client.js'; -import { closeResultsDb } from '../lib/results-db.js'; -import { closeStageDb } from '../lib/stage-db.js'; -import { recoverStaleAnalysisState, touchAnalysisHeartbeat } from '../lib/debounce.js'; -import { debug, info, error as logError } from '../lib/logger.js'; - -// Legacy server-backed tools -import { - definition as profileDef, - formatResult as formatProfile, -} from './tools/get-developer-profile.js'; -import { - definition as growthDef, - formatResult as formatGrowth, -} from './tools/get-growth-areas.js'; -import { - definition as insightsDef, - formatResult as formatInsights, -} from './tools/get-recent-insights.js'; - -// New local-first tools -import { - definition as scanDef, - execute as executeScan, -} from './tools/scan-sessions.js'; -import { - definition as extractDef, - execute as executeExtract, -} from './tools/extract-data.js'; -import { - definition as saveDomainDef, - execute as executeSaveDomain, - DomainResultInputSchema, -} from './tools/save-domain-results.js'; -import { - definition as getDomainResultsDef, - execute as executeGetDomainResults, - GetDomainResultsInputSchema, -} from './tools/get-domain-results.js'; -import { - definition as getUserPrefsDef, - execute as executeGetUserPrefs, -} from './tools/get-user-prefs.js'; -import { - definition as runProgressDef, - execute as executeRunProgress, -} from './tools/get-run-progress.js'; -import { - definition as saveUserPrefsDef, - execute as executeSaveUserPrefs, - SaveUserPrefsInputSchema, -} from './tools/save-user-prefs.js'; -import { - definition as classifyDef, - execute as executeClassify, -} from './tools/classify-developer-type.js'; -import { - definition as verifyEvidenceDef, - execute as executeVerifyEvidence, - VerifyEvidenceInputSchema, -} from './tools/verify-evidence.js'; -import { - definition as reportDef, - execute as executeReport, -} from './tools/generate-report.js'; -import { - definition as syncDef, - execute as executeSync, -} from './tools/sync-to-team.js'; -import { - definition as stageDef, - execute as executeStage, - StageOutputInputSchema, -} from './tools/save-stage-output.js'; -import { - definition as getStageOutputDef, - execute as executeGetStageOutput, -} from './tools/get-stage-output.js'; -import { - definition as getPromptContextDef, - execute as executeGetPromptContext, - GetPromptContextInputSchema, -} from './tools/get-prompt-context.js'; -// Resolve user ID once at startup (for server-backed tools) -let resolvedUserId: string | null = null; - -async function getUserId(): Promise { - if (resolvedUserId) return resolvedUserId; - - const user = await verifyAuth(); - if (!user) { - throw new Error( - 'Could not reach the BetterPrompt server. ' + - 'Check the plugin serverUrl setting and confirm the dashboard server is running.', - ); - } - - resolvedUserId = user.id; - return resolvedUserId; -} - -// --------------------------------------------------------------------------- -// Server setup -// --------------------------------------------------------------------------- - -const server = new McpServer({ - name: 'betterprompt', - version: '0.2.0', -}); - -/** Wrap a tool handler with consistent error formatting and debug logging */ -function wrapToolExecution( - toolName: string, - fn: (args: T) => Promise, -): (args: T) => Promise<{ content: Array<{ type: 'text'; text: string }>; isError?: boolean }> { - return async (args: T) => { - const start = Date.now(); - const argRecord = args as Record; - touchAnalysisHeartbeat(); - debug('tool', `${toolName} called`, Object.keys(argRecord).length > 0 ? argRecord : undefined); - try { - const result = await fn(args); - touchAnalysisHeartbeat(); - debug('tool', `${toolName} completed`, { durationMs: Date.now() - start }); - return { content: [{ type: 'text' as const, text: result }] }; - } catch (err) { - touchAnalysisHeartbeat(); - const errorMsg = err instanceof Error ? err.message : 'Unknown error'; - logError('tool', `${toolName} failed`, { durationMs: Date.now() - start, error: errorMsg }); - return { - content: [{ type: 'text' as const, text: JSON.stringify({ error: errorMsg }) }], - isError: true, - }; - } - }; -} - -// ========================================================================= -// LOCAL-FIRST TOOLS (no server needed) -// ========================================================================= - -server.tool(scanDef.name, scanDef.description, { - includeProjects: z.array(z.string()).optional().describe('Filter results to only these project names'), -}, wrapToolExecution(scanDef.name, executeScan)); - -server.tool(extractDef.name, extractDef.description, { - maxSessions: z.number().optional().describe('Maximum number of recent sessions to analyze (default: 50)'), - includeProjects: z.array(z.string()).optional().describe('Filter to only these project names before applying maxSessions limit'), -}, wrapToolExecution(extractDef.name, executeExtract)); - -server.tool(saveDomainDef.name, saveDomainDef.description, DomainResultInputSchema.shape, - wrapToolExecution(saveDomainDef.name, executeSaveDomain)); - -server.tool(getDomainResultsDef.name, getDomainResultsDef.description, GetDomainResultsInputSchema.shape, - wrapToolExecution(getDomainResultsDef.name, executeGetDomainResults)); - -server.tool(getUserPrefsDef.name, getUserPrefsDef.description, {}, - wrapToolExecution(getUserPrefsDef.name, () => executeGetUserPrefs())); - -server.tool(runProgressDef.name, runProgressDef.description, {}, - wrapToolExecution(runProgressDef.name, () => executeRunProgress())); - -server.tool(classifyDef.name, classifyDef.description, {}, - wrapToolExecution(classifyDef.name, () => executeClassify({}))); - -server.tool(verifyEvidenceDef.name, verifyEvidenceDef.description, VerifyEvidenceInputSchema.shape, - wrapToolExecution(verifyEvidenceDef.name, executeVerifyEvidence)); - -server.tool(reportDef.name, reportDef.description, { - port: z.number().optional().describe('Port for the report server (default: 3456)'), - openBrowser: z.boolean().optional().describe('Auto-open report in browser (default: true)'), - allowIncomplete: z.boolean().optional().describe('Override required-stage gating and generate a report anyway'), -}, wrapToolExecution(reportDef.name, executeReport)); - -server.tool(syncDef.name, syncDef.description, { - serverUrl: z.string().optional().describe('Override the configured BetterPrompt server URL for this sync call'), -}, wrapToolExecution(syncDef.name, executeSync)); - -server.tool(stageDef.name, stageDef.description, StageOutputInputSchema.shape, - wrapToolExecution(stageDef.name, executeStage)); - -server.tool(getStageOutputDef.name, getStageOutputDef.description, { - stage: z.string().optional().describe('Stage name to retrieve (omit for all stages)'), -}, wrapToolExecution(getStageOutputDef.name, executeGetStageOutput)); - -server.tool(getPromptContextDef.name, getPromptContextDef.description, GetPromptContextInputSchema.shape, - wrapToolExecution(getPromptContextDef.name, executeGetPromptContext)); - -server.tool(saveUserPrefsDef.name, saveUserPrefsDef.description, SaveUserPrefsInputSchema.shape, - wrapToolExecution(saveUserPrefsDef.name, executeSaveUserPrefs)); - -// ========================================================================= -// SERVER-BACKED TOOLS (backward compatible) -// ========================================================================= - -server.tool(profileDef.name, profileDef.description, {}, - wrapToolExecution(profileDef.name, async () => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatProfile(summary); - })); - -server.tool(growthDef.name, growthDef.description, { - domain: z.enum(['aiPartnership', 'sessionCraft', 'toolMastery', 'skillResilience', 'sessionMastery']) - .optional() - .describe('Filter by domain key'), -}, wrapToolExecution(growthDef.name, async (args) => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatGrowth(summary, args); -})); - -server.tool(insightsDef.name, insightsDef.description, { - category: z.enum(['strengths', 'anti_patterns', 'kpt']).optional().default('kpt') - .describe('Category of insights: "strengths", "anti_patterns", or "kpt" (default)'), -}, wrapToolExecution(insightsDef.name, async (args) => { - const userId = await getUserId(); - const summary = await getSummaryWithCache(userId); - return formatInsights(summary, args); -})); - -// --------------------------------------------------------------------------- -// Start -// --------------------------------------------------------------------------- - -async function main() { - info('server', 'starting'); - recoverStaleAnalysisState({ - force: true, - reason: 'Recovered stale running state on MCP server startup.', - }); - const transport = new StdioServerTransport(); - await server.connect(transport); - info('server', 'connected'); -} - -main().catch((err) => { - logError('server', 'failed to start', { error: err instanceof Error ? err.message : String(err) }); - process.exit(1); -}); - -// Clean up on shutdown -function cleanup() { - info('server', 'shutting down'); - closeCache(); - closeResultsDb(); - closeStageDb(); - process.exit(0); -} - -process.on('SIGINT', cleanup); -process.on('SIGTERM', cleanup); diff --git a/packages/plugin/mcp/tools/classify-developer-type.ts b/packages/plugin/mcp/tools/classify-developer-type.ts deleted file mode 100644 index bccf9445..00000000 --- a/packages/plugin/mcp/tools/classify-developer-type.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * classify_developer_type MCP Tool - * - * Runs deterministic type classification from domain scores. - * Uses Phase 1.2 rules (DeterministicTypeMapper) to determine - * primary type and control level. - */ - -import { readFile } from 'node:fs/promises'; -import { join } from 'node:path'; -import { computeDeterministicScores } from '../../lib/core/deterministic-scorer.js'; -import { computeDeterministicType } from '../../lib/core/deterministic-type-mapper.js'; -import { getPluginDataDir } from '../../lib/core/session-scanner.js'; -import { - getAnalysisRun, - saveTypeResult, - getCurrentRunId, -} from '../../lib/results-db.js'; -import type { Phase1Output } from '../../lib/core/types.js'; - -export const definition = { - name: 'classify_developer_type', - description: - 'Classify the developer\'s AI collaboration type using deterministic rules. ' + - 'Uses the 5x3 type matrix (architect/analyst/conductor/speedrunner/trendsetter ' + - 'x explorer/navigator/cartographer). Requires extract_data to have been run first. ' + - 'Returns the primary type, distribution, control level, and matrix name.', -}; - -export async function execute(_args: Record): Promise { - const runId = getCurrentRunId(); - - // Prefer the persisted run record so classification does not depend on the - // legacy phase1-output.json artifact still existing on disk. - let phase1Output: Phase1Output; - const existingRun = runId ? getAnalysisRun(runId) : null; - - if (existingRun?.phase1Output) { - phase1Output = existingRun.phase1Output; - } else { - try { - const phase1Path = join(getPluginDataDir(), 'phase1-output.json'); - const content = await readFile(phase1Path, 'utf-8'); - phase1Output = JSON.parse(content); - } catch { - return JSON.stringify({ - status: 'error', - message: 'No Phase 1 data found. Call extract_data first.', - }); - } - } - - // Compute scores and type - const scores = existingRun?.phase1Output - ? existingRun.scores - : computeDeterministicScores(phase1Output); - const typeResult = computeDeterministicType(scores, phase1Output); - - // Save to DB - if (runId) { - saveTypeResult(runId, typeResult); - } - - return JSON.stringify({ - status: 'ok', - primaryType: typeResult.primaryType, - controlLevel: typeResult.controlLevel, - matrixName: typeResult.matrixName, - matrixEmoji: typeResult.matrixEmoji, - distribution: typeResult.distribution, - controlScore: typeResult.controlScore, - runId, - message: - `Developer type: ${typeResult.matrixEmoji} ${typeResult.matrixName} ` + - `(${typeResult.primaryType} / ${typeResult.controlLevel}). ` + - `Distribution: architect ${typeResult.distribution.architect}%, ` + - `analyst ${typeResult.distribution.analyst}%, ` + - `conductor ${typeResult.distribution.conductor}%, ` + - `speedrunner ${typeResult.distribution.speedrunner}%, ` + - `trendsetter ${typeResult.distribution.trendsetter}%.`, - }); -} diff --git a/packages/plugin/mcp/tools/get-developer-profile.ts b/packages/plugin/mcp/tools/get-developer-profile.ts deleted file mode 100644 index 859d5abc..00000000 --- a/packages/plugin/mcp/tools/get-developer-profile.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * get_developer_profile MCP Tool - * - * Returns the developer's AI collaboration profile: - * primaryType, controlLevel, domain scores, personality summary. - */ - -import type { UserSummary } from '../../lib/api-client.js'; - -export const definition = { - name: 'get_developer_profile', - description: - 'Get the current developer\'s AI collaboration profile — their primary type ' + - '(architect/analyst/conductor/speedrunner/trendsetter), control level ' + - '(navigator/collaborator/delegator), domain scores (0-100), and a brief ' + - 'personality summary. Use this to understand how the developer works with AI.', - inputSchema: { - type: 'object' as const, - properties: {}, - required: [] as string[], - }, -}; - -export function formatResult(summary: UserSummary | null): string { - if (!summary) { - return JSON.stringify({ - status: 'no_data', - message: - 'No analysis available yet. The developer needs to run at least one analysis first.', - }); - } - - const { profile } = summary; - - return JSON.stringify({ - primaryType: profile.primaryType, - controlLevel: profile.controlLevel, - matrixName: profile.matrixName, - personalitySummary: profile.personalitySummary, - domainScores: profile.domainScores, - analyzedAt: summary.analyzedAt, - }); -} diff --git a/packages/plugin/mcp/tools/get-domain-results.ts b/packages/plugin/mcp/tools/get-domain-results.ts deleted file mode 100644 index 4b1246e6..00000000 --- a/packages/plugin/mcp/tools/get-domain-results.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * get_domain_results MCP Tool - * - * Reads previously saved domain analysis results from the local DB. - * Used by downstream skills that need the full domain payloads - * (evidence verification, content writer, translator). - * - * @module plugin/mcp/tools/get-domain-results - */ - -import { z } from 'zod'; -import { getCurrentRunId, getDomainResult, getDomainResults } from '../../lib/results-db.js'; - -export const definition = { - name: 'get_domain_results', - description: - 'Read previously saved domain analysis results from the current local analysis run. ' + - 'Provide a domain name to get one domain, or omit it to get all saved domains. ' + - 'Available domains: aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery.', -}; - -export const GetDomainResultsInputSchema = z.object({ - domain: z.enum([ - 'aiPartnership', - 'sessionCraft', - 'toolMastery', - 'skillResilience', - 'sessionMastery', - // Legacy domains - 'thinkingQuality', - 'communicationPatterns', - 'learningBehavior', - 'contextEfficiency', - 'sessionOutcome', - 'content', - ]).optional(), -}); - -export async function execute(args: { domain?: string }): Promise { - const runId = getCurrentRunId(); - - if (!runId) { - return JSON.stringify({ - status: 'error', - message: 'No active analysis run. Call extract_data first.', - }); - } - - if (args.domain) { - const result = getDomainResult(runId, args.domain); - if (!result) { - return JSON.stringify({ - status: 'not_found', - domain: args.domain, - runId, - message: `No ${args.domain} result found for run #${runId}. This domain may not have been analyzed yet.`, - }); - } - - return JSON.stringify({ - status: 'ok', - domain: args.domain, - runId, - data: result, - }); - } - - const results = getDomainResults(runId); - - return JSON.stringify({ - status: 'ok', - runId, - domainsAvailable: results.map(result => result.domain), - data: results, - }); -} diff --git a/packages/plugin/mcp/tools/get-growth-areas.ts b/packages/plugin/mcp/tools/get-growth-areas.ts deleted file mode 100644 index 6485516e..00000000 --- a/packages/plugin/mcp/tools/get-growth-areas.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * get_growth_areas MCP Tool - * - * Returns the developer's top growth areas with recommendations. - * Optionally filtered by domain. - */ - -import type { UserSummary } from '../../lib/api-client.js'; - -export const definition = { - name: 'get_growth_areas', - description: - 'Get the developer\'s top growth areas — specific areas where they can improve ' + - 'their AI collaboration skills. Each area includes a title, domain, severity, ' + - 'and actionable recommendation. Optionally filter by domain ' + - '(aiPartnership, sessionCraft, toolMastery, skillResilience, sessionMastery).', - inputSchema: { - type: 'object' as const, - properties: { - domain: { - type: 'string', - description: - 'Filter by domain key. One of: aiPartnership, sessionCraft, ' + - 'toolMastery, skillResilience, sessionMastery', - enum: [ - 'aiPartnership', - 'sessionCraft', - 'toolMastery', - 'skillResilience', - 'sessionMastery', - ], - }, - }, - required: [] as string[], - }, -}; - -export function formatResult( - summary: UserSummary | null, - args: { domain?: string }, -): string { - if (!summary) { - return JSON.stringify({ - status: 'no_data', - message: - 'No analysis available yet. The developer needs to run at least one analysis first.', - }); - } - - let areas = summary.growthAreas; - - if (args.domain) { - areas = areas.filter((a) => a.domain === args.domain); - } - - // Return top 3 most actionable - const top = areas.slice(0, 3); - - return JSON.stringify({ - growthAreas: top.map((a) => ({ - title: a.title, - domain: a.domain, - severity: a.severity, - recommendation: a.recommendation, - })), - totalCount: areas.length, - analyzedAt: summary.analyzedAt, - }); -} diff --git a/packages/plugin/mcp/tools/get-recent-insights.ts b/packages/plugin/mcp/tools/get-recent-insights.ts deleted file mode 100644 index 80d874b7..00000000 --- a/packages/plugin/mcp/tools/get-recent-insights.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * get_recent_insights MCP Tool - * - * Returns strengths, anti-patterns, or KPT (Keep/Problem/Try) summary. - */ - -import type { UserSummary } from '../../lib/api-client.js'; - -export const definition = { - name: 'get_recent_insights', - description: - 'Get the developer\'s recent analysis insights. Choose a category: ' + - '"strengths" for top skills, "anti_patterns" for inefficiency patterns to avoid, ' + - 'or "kpt" for a Keep/Problem/Try summary. Defaults to "kpt" which gives the ' + - 'most actionable overview.', - inputSchema: { - type: 'object' as const, - properties: { - category: { - type: 'string', - description: - 'Category of insights to return. ' + - '"strengths" = top strengths by domain, ' + - '"anti_patterns" = inefficiency patterns detected, ' + - '"kpt" = Keep/Problem/Try actionable summary', - enum: ['strengths', 'anti_patterns', 'kpt'], - default: 'kpt', - }, - }, - required: [] as string[], - }, -}; - -export function formatResult( - summary: UserSummary | null, - args: { category?: string }, -): string { - if (!summary) { - return JSON.stringify({ - status: 'no_data', - message: - 'No analysis available yet. The developer needs to run at least one analysis first.', - }); - } - - const category = args.category ?? 'kpt'; - - switch (category) { - case 'strengths': - return JSON.stringify({ - strengths: summary.strengths.map((s) => ({ - domain: s.domain, - domainLabel: s.domainLabel, - topStrength: s.topStrength, - score: s.domainScore, - })), - analyzedAt: summary.analyzedAt, - }); - - case 'anti_patterns': - return JSON.stringify({ - antiPatterns: summary.antiPatterns.map((ap) => ({ - pattern: ap.pattern, - frequency: ap.frequency, - impact: ap.impact, - })), - analyzedAt: summary.analyzedAt, - }); - - case 'kpt': - default: - return JSON.stringify({ - keep: summary.kpt.keep, - problem: summary.kpt.problem, - tryNext: summary.kpt.tryNext, - analyzedAt: summary.analyzedAt, - }); - } -} diff --git a/packages/plugin/mcp/tools/get-stage-output.ts b/packages/plugin/mcp/tools/get-stage-output.ts deleted file mode 100644 index 21d7e592..00000000 --- a/packages/plugin/mcp/tools/get-stage-output.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * get_stage_output MCP Tool - * - * Reads a previously saved pipeline stage output from the local DB. - * Used by downstream skills to access results from earlier stages - * (e.g., project summarizer reads session summaries from Phase 1.5). - * - * @module plugin/mcp/tools/get-stage-output - */ - -import { getCurrentRunId } from '../../lib/results-db.js'; -import { getStageOutput, getAllStageOutputs } from '../../lib/stage-db.js'; - -export const definition = { - name: 'get_stage_output', - description: - 'Read a previously saved pipeline stage output. ' + - 'Provide a stage name to get that specific output, or omit to get all stages. ' + - 'Available stages: sessionSummaries, projectSummaries, weeklyInsights, ' + - 'typeClassification, evidenceVerification, contentWriter, translator.', -}; - -export async function execute(args: { stage?: string }): Promise { - const runId = getCurrentRunId(); - - if (!runId) { - return JSON.stringify({ - status: 'error', - message: 'No active analysis run. Call extract_data first.', - }); - } - - if (args.stage) { - const data = getStageOutput(runId, args.stage); - if (!data) { - return JSON.stringify({ - status: 'not_found', - stage: args.stage, - runId, - message: `No ${args.stage} output found for run #${runId}. This stage may not have been executed yet.`, - }); - } - return JSON.stringify({ - status: 'ok', - stage: args.stage, - runId, - data, - }); - } - - const all = getAllStageOutputs(runId); - const stages = Object.keys(all); - return JSON.stringify({ - status: 'ok', - runId, - stagesAvailable: stages, - data: all, - }); -} diff --git a/packages/plugin/mcp/tools/get-user-prefs.ts b/packages/plugin/mcp/tools/get-user-prefs.ts deleted file mode 100644 index 234802e6..00000000 --- a/packages/plugin/mcp/tools/get-user-prefs.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * get_user_prefs MCP Tool - * - * Reads BetterPrompt user preferences from ~/.betterprompt/prefs.json - * without requiring Claude to request filesystem permissions directly. - * - * @module plugin/mcp/tools/get-user-prefs - */ - -import { readPrefs } from '../../lib/prefs.js'; - -export const definition = { - name: 'get_user_prefs', - description: - 'Read BetterPrompt user preferences from ~/.betterprompt/prefs.json. ' + - 'Use this instead of direct file reads in setup and analysis skills.', -}; - -export async function execute(): Promise { - return JSON.stringify({ - status: 'ok', - prefs: readPrefs(), - message: 'Loaded BetterPrompt user preferences.', - }); -} diff --git a/packages/plugin/mcp/tools/save-stage-output.ts b/packages/plugin/mcp/tools/save-stage-output.ts deleted file mode 100644 index 456394d6..00000000 --- a/packages/plugin/mcp/tools/save-stage-output.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * save_stage_output MCP Tool - * - * Accepts and validates pipeline stage outputs (session summaries, - * project summaries, weekly insights, evidence verification, etc.) - * and persists them in the local results database. - * - * Called by stage-specific analysis skills after the host LLM - * completes each pipeline stage. - * - * @module plugin/mcp/tools/save-stage-output - */ - -import { z } from 'zod'; -import { - STAGE_NAMES, - STAGE_SCHEMAS, -} from '@betterprompt/shared'; -import { getCurrentRunId } from '../../lib/results-db.js'; -import { recordStageStatus, saveStageOutput } from '../../lib/stage-db.js'; - -export const definition = { - name: 'save_stage_output', - description: - 'Save output from a pipeline stage. ' + - 'Called after completing a stage (sessionSummaries, projectSummaries, ' + - 'weeklyInsights, typeClassification, evidenceVerification, contentWriter, translator, ' + - 'extractAiPartnership, extractSessionCraft, extractToolMastery, ' + - 'extractSkillResilience, extractSessionMastery). ' + - 'Input must include stage name and structured data matching the stage schema.', -}; - -export const StageOutputInputSchema = z.object({ - stage: z.enum(STAGE_NAMES), - data: z.record(z.string(), z.unknown()), -}); - -function extractStageName(args: Record): string | null { - return typeof args.stage === 'string' ? args.stage : null; -} - -export async function execute(args: Record): Promise { - const runId = getCurrentRunId(); - const stageName = extractStageName(args); - - if (!runId) { - return JSON.stringify({ - status: 'error', - message: 'No active analysis run. Call extract_data first to start an analysis.', - }); - } - - const parsed = StageOutputInputSchema.safeParse(args); - if (!parsed.success) { - if (stageName) { - recordStageStatus(runId, stageName, { - status: 'failed', - lastError: 'Invalid stage output format.', - }); - } - return JSON.stringify({ - status: 'validation_error', - message: 'Invalid stage output format.', - errors: parsed.error.issues.map(i => ({ - path: i.path.join('.'), - message: i.message, - })), - }); - } - - const { stage, data } = parsed.data; - const stageSchema = STAGE_SCHEMAS[stage]; - if (stageSchema) { - const stageValidation = stageSchema.safeParse(data); - if (!stageValidation.success) { - recordStageStatus(runId, stage, { - status: 'failed', - lastError: `Data does not match ${stage} schema.`, - }); - return JSON.stringify({ - status: 'validation_error', - message: `Data does not match ${stage} schema.`, - errors: stageValidation.error.issues.map(i => ({ - path: i.path.join('.'), - message: i.message, - })), - }); - } - } - - saveStageOutput(runId, stage, data); - recordStageStatus(runId, stage, { - status: 'validated', - }); - - return JSON.stringify({ - status: 'ok', - stage, - runId, - message: `Saved ${stage} output to run #${runId}.`, - }); -} diff --git a/packages/plugin/mcp/tools/save-user-prefs.ts b/packages/plugin/mcp/tools/save-user-prefs.ts deleted file mode 100644 index 26f4f2ef..00000000 --- a/packages/plugin/mcp/tools/save-user-prefs.ts +++ /dev/null @@ -1,97 +0,0 @@ -/** - * save_user_prefs MCP Tool - * - * Persists BetterPrompt user preferences to ~/.betterprompt/prefs.json - * with merge semantics. This keeps setup flows from hand-writing JSON - * and allows setup completion timestamps to be stamped in code. - * - * @module plugin/mcp/tools/save-user-prefs - */ - -import { z } from 'zod'; -import { readPrefs, writePrefs, type UserPrefs } from '../../lib/prefs.js'; -import { markAnalysisPending } from '../../lib/debounce.js'; - -export const definition = { - name: 'save_user_prefs', - description: - 'Update BetterPrompt user preferences in ~/.betterprompt/prefs.json. ' + - 'Provided fields are merged with existing prefs. ' + - 'Set markWelcomeCompleted=true to stamp welcomeCompleted with the exact current ISO timestamp.', -}; - -export const SaveUserPrefsInputSchema = z.object({ - selectedProjects: z.array(z.string()).optional().describe('Project names to analyze. Use [] to mean "all projects".'), - starAsked: z.boolean().optional().describe('Whether the GitHub star prompt has already been handled.'), - welcomeShown: z.boolean().optional().describe('Whether the setup welcome has been shown.'), - welcomeVersion: z.string().optional().describe('Setup flow version, for example "2.0".'), - markWelcomeCompleted: z.boolean().optional().describe('When true, sets welcomeCompleted to the exact current ISO timestamp.'), - queueAnalysis: z.boolean().optional().describe('When true, queues a pending analysis for the next session via plugin-state.json.'), -}); - -function normalizeWelcomeVersion(value: string | undefined): string | undefined { - if (value === undefined) { - return undefined; - } - - const trimmed = value.trim(); - if ( - (trimmed.startsWith('"') && trimmed.endsWith('"')) - || (trimmed.startsWith('\'') && trimmed.endsWith('\'')) - ) { - return trimmed.slice(1, -1).trim(); - } - - return trimmed; -} - -export async function execute(args: z.infer): Promise { - const parsed = SaveUserPrefsInputSchema.safeParse(args); - if (!parsed.success) { - return JSON.stringify({ - status: 'validation_error', - message: 'Invalid user prefs payload.', - errors: parsed.error.issues.map(issue => ({ - path: issue.path.join('.'), - message: issue.message, - })), - }); - } - - const { markWelcomeCompleted = false, queueAnalysis = false, ...partial } = parsed.data; - const nextPrefs: Partial = { - ...partial, - ...(partial.welcomeVersion !== undefined - ? { welcomeVersion: normalizeWelcomeVersion(partial.welcomeVersion) } - : {}), - }; - - if (markWelcomeCompleted) { - nextPrefs.welcomeCompleted = new Date().toISOString(); - } - - if (Object.keys(nextPrefs).length === 0 && !queueAnalysis) { - return JSON.stringify({ - status: 'noop', - prefs: readPrefs(), - message: 'No preference fields were provided.', - }); - } - - if (Object.keys(nextPrefs).length > 0) { - writePrefs(nextPrefs); - } - - if (queueAnalysis) { - markAnalysisPending(); - } - - return JSON.stringify({ - status: 'ok', - prefs: readPrefs(), - ...(queueAnalysis ? { analysisQueued: true } : {}), - message: queueAnalysis - ? 'Updated preferences and queued analysis for next session.' - : 'Updated BetterPrompt user preferences.', - }); -} diff --git a/packages/plugin/package-lock.json b/packages/plugin/package-lock.json index 0a9299d7..732215bf 100644 --- a/packages/plugin/package-lock.json +++ b/packages/plugin/package-lock.json @@ -9,13 +9,12 @@ "version": "0.2.0", "license": "MIT", "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", "better-sqlite3": "^12.8.0", "zod": "^4.3.6" }, "bin": { - "betterprompt-hook": "dist/hooks/post-session-handler.js", - "betterprompt-mcp": "dist/mcp/server-entry.js" + "betterprompt-cli": "dist/cli/index.js", + "betterprompt-hook": "dist/hooks/post-session-handler.js" }, "devDependencies": { "@types/better-sqlite3": "^7.6.0", @@ -469,18 +468,6 @@ "node": ">=18" } }, - "node_modules/@hono/node-server": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", - "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", - "license": "MIT", - "engines": { - "node": ">=18.14.1" - }, - "peerDependencies": { - "hono": "^4" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -520,50 +507,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.27.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", - "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==", - "license": "MIT", - "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", "cpu": [ "arm" ], @@ -575,9 +522,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", "cpu": [ "arm64" ], @@ -589,9 +536,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", "cpu": [ "arm64" ], @@ -603,9 +550,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", "cpu": [ "x64" ], @@ -617,9 +564,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", "cpu": [ "arm64" ], @@ -631,9 +578,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", "cpu": [ "x64" ], @@ -645,9 +592,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", "cpu": [ "arm" ], @@ -659,9 +606,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", "cpu": [ "arm" ], @@ -673,9 +620,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", "cpu": [ "arm64" ], @@ -687,9 +634,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", "cpu": [ "arm64" ], @@ -701,9 +648,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", "cpu": [ "loong64" ], @@ -715,9 +662,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", "cpu": [ "loong64" ], @@ -729,9 +676,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", "cpu": [ "ppc64" ], @@ -743,9 +690,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", "cpu": [ "ppc64" ], @@ -757,9 +704,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", "cpu": [ "riscv64" ], @@ -771,9 +718,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", "cpu": [ "riscv64" ], @@ -785,9 +732,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", "cpu": [ "s390x" ], @@ -799,9 +746,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", "cpu": [ "x64" ], @@ -813,9 +760,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", "cpu": [ "x64" ], @@ -827,9 +774,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", "cpu": [ "x64" ], @@ -841,9 +788,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", "cpu": [ "arm64" ], @@ -855,9 +802,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", "cpu": [ "arm64" ], @@ -869,9 +816,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", "cpu": [ "ia32" ], @@ -883,9 +830,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", "cpu": [ "x64" ], @@ -897,9 +844,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", "cpu": [ "x64" ], @@ -937,19 +884,6 @@ "undici-types": "~7.18.0" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -963,39 +897,6 @@ "node": ">=0.4.0" } }, - "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -1057,30 +958,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1121,15 +998,6 @@ "esbuild": ">=0.18" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1140,35 +1008,6 @@ "node": ">=8" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -1218,81 +1057,11 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -1330,15 +1099,6 @@ "node": ">=4.0.0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -1348,35 +1108,6 @@ "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -1386,36 +1117,6 @@ "once": "^1.4.0" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esbuild": { "version": "0.27.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", @@ -1458,42 +1159,6 @@ "@esbuild/win32-x64": "0.27.4" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "license": "MIT", - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -1503,89 +1168,6 @@ "node": ">=6" } }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express-rate-limit": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", - "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", - "license": "MIT", - "dependencies": { - "ip-address": "10.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -1610,27 +1192,6 @@ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "license": "MIT" }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/fix-dts-default-cjs-exports": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", @@ -1643,24 +1204,6 @@ "rollup": "^4.34.8" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -1676,145 +1219,18 @@ "license": "MIT", "optional": true, "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hono": { - "version": "4.12.8", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.8.tgz", - "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==", - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "darwin" + ], "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1847,45 +1263,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/jose": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -1896,18 +1273,6 @@ "node": ">=10" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "license": "BSD-2-Clause" - }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -1948,61 +1313,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -2047,6 +1357,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/mz": { @@ -2067,15 +1378,6 @@ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "license": "MIT" }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/node-abi": { "version": "3.89.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz", @@ -2092,35 +1394,12 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2130,34 +1409,6 @@ "wrappy": "1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -2173,9 +1424,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -2195,15 +1446,6 @@ "node": ">= 6" } }, - "node_modules/pkce-challenge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", - "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", - "license": "MIT", - "engines": { - "node": ">=16.20.0" - } - }, "node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", @@ -2286,19 +1528,6 @@ "node": ">=10" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/pump": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", @@ -2309,45 +1538,6 @@ "once": "^1.3.1" } }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2391,15 +1581,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -2411,9 +1592,9 @@ } }, "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2427,50 +1608,34 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", "fsevents": "~2.3.2" } }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2491,12 +1656,6 @@ ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -2509,150 +1668,6 @@ "node": ">=10" } }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -2708,15 +1723,6 @@ "node": ">= 12" } }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2831,15 +1837,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -2920,20 +1917,6 @@ "node": "*" } }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -2962,45 +1945,12 @@ "dev": true, "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3015,15 +1965,6 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } } } } diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 706aacd8..3cc876fd 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,11 +1,11 @@ { "name": "@betterprompt/claude-code-plugin", - "version": "0.2.0", - "description": "Claude Code plugin for BetterPrompt — local-first AI collaboration analysis powered by MCP tools and analysis skills", + "version": "0.3.0", + "description": "Claude Code plugin for BetterPrompt — local-first AI collaboration analysis powered by CLI tools and analysis skills", "type": "module", - "main": "./dist/mcp/server-entry.js", + "main": "./dist/cli/index.js", "bin": { - "betterprompt-mcp": "./dist/mcp/server-entry.js", + "betterprompt-cli": "./dist/cli/index.js", "betterprompt-hook": "./dist/hooks/post-session-handler.js" }, "files": [ @@ -17,12 +17,11 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "start": "node dist/mcp/server-entry.js" + "start": "node dist/cli/index.js" }, "keywords": [ "claude-code", "claude-code-plugin", - "mcp", "ai-analysis", "developer-tools" ], @@ -37,7 +36,6 @@ "node": ">=18.0.0" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", "better-sqlite3": "^12.8.0", "zod": "^4.3.6" }, diff --git a/packages/plugin/skills/analyze-communication/SKILL.md b/packages/plugin/skills/analyze-communication/SKILL.md deleted file mode 100644 index 77fb11bc..00000000 --- a/packages/plugin/skills/analyze-communication/SKILL.md +++ /dev/null @@ -1,248 +0,0 @@ ---- -name: analyze-communication -description: "[DEPRECATED] Replaced by extract-tool-mastery + write-tool-mastery" -model: opus ---- - -## DEPRECATED - -**This skill is deprecated.** It has been replaced by the two-stage pipeline: -- **Stage 1**: `extract-tool-mastery` (data extraction via `save_stage_output`) -- **Stage 2**: `write-tool-mastery` (narrative generation via `save_domain_results`) - -The orchestrator (`bp-analyze`) no longer calls this skill. It is kept temporarily for reference. - ---- - -# Communication Patterns Analysis (DEPRECATED) - -## Persona - -You are a **Communication Patterns Analyst**, an expert in prompt engineering and builder-AI communication dynamics. You specialize in identifying how developers structure their requests, provide context, ask questions, and adapt their communication style over time. Your analysis reveals both conscious strategies and unconscious habits. - -## Task - -Analyze the developer's communication patterns across all sessions. Identify structural patterns, context-providing habits, questioning approaches, and signature communication moments. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "communicationPatterns" }` and examine the returned utterance payload for communication signals. - -## Context - -Communication quality is one of the strongest predictors of AI collaboration effectiveness. A developer who provides rich context, structures requests clearly, and asks precise questions will consistently get better results than one who uses vague, context-free commands. Your analysis helps developers understand and improve their communication habits. - -Phase 1 data provides: -- All user utterances with text content and metadata -- Prompt lengths (character/token counts per utterance) -- Session structure (how conversations flow) -- Tool usage context (what tools were invoked around each utterance) - -## Analysis Rubric - -### Dimension 1: Structural Patterns - -Classify the developer's dominant request structure: - -| Pattern | Description | Detection Signals | -|---------|-------------|-------------------| -| `blueprint_architect` | Provides detailed specifications upfront before any implementation | Long initial prompts with requirements, constraints, expected behavior | -| `incremental_builder` | Builds up requests piece by piece, refining as they go | Short initial prompt, followed by "also...", "and make sure...", "one more thing..." | -| `exploration_mode` | Uses AI as a thinking partner, exploring options together | "What do you think about...", "How would you approach...", open-ended questions | -| `direct_commander` | Issues concise, specific instructions with minimal context | Short imperative sentences, "Fix X", "Add Y to Z", command-like phrasing | - -A developer may use multiple patterns across sessions. Record the distribution (percentages). - -### Dimension 2: Context Patterns - -Evaluate how the developer provides context: - -| Pattern | Description | Quality Signal | -|---------|-------------|---------------| -| `rich_context_provider` | Includes background, constraints, examples, and expected outcomes | High quality -- reduces AI guessing | -| `minimal_context` | Provides bare minimum, expects AI to infer from codebase | Risk of misalignment, but efficient when codebase is well-structured | -| `file_referencer` | Heavily references specific files, line numbers, function names | Good precision, leverages AI's code reading ability | -| `example_driven` | Provides examples of desired input/output or similar patterns | Excellent for complex transformations, reduces ambiguity | - -### Dimension 3: Questioning Patterns - -Identify how the developer uses questions: - -| Pattern | Description | Cognitive Level | -|---------|-------------|-----------------| -| `socratic_questioner` | Asks probing questions to guide AI toward a solution | High -- shows deep understanding | -| `verification_seeker` | Asks "Is this correct?" / "Does this handle X?" | Medium -- shows awareness of gaps | -| `alternative_explorer` | Asks "What other approaches exist?" / "What are the tradeoffs?" | High -- shows strategic thinking | -| `clarification_asker` | Asks for explanations of AI suggestions | Variable -- learning-oriented | - -### Pattern Identification - -Identify **5-12 communication patterns** total across all dimensions. For each pattern, provide a deep analysis using the WHAT-WHY-HOW structure: - -- **WHAT** (5-7 sentences): Describe the pattern in concrete terms. What does it look like in practice? What are its variations? How frequently does it appear? -- **WHY** (4-5 sentences): Why does this pattern matter? What are its effects on collaboration quality? How does it compare to the ideal? -- **HOW** (4-5 sentences): How can the developer leverage this strength or address this weakness? What specific changes would improve outcomes? - -Total description length per pattern: **1500-2500 characters**. - -### Signature Quotes - -Extract **2-3 signature quotes** that exemplify the developer's unique communication style. These are Tier S quotes -- the most revealing, distinctive utterances that capture the developer's personality as a collaborator. - -Requirements for signature quotes: -- Minimum 50 words each -- Must demonstrate a distinctive communication trait (not generic requests) -- Include the utteranceId and sessionId for provenance -- Write a 1-2 sentence annotation explaining what makes this quote notable - -## Format - -### Scoring - -- `overallCommunicationScore`: 0-100 integer. Based on: - - Context richness (30%): How well does the developer provide context? - - Request clarity (30%): How unambiguous and actionable are requests? - - Adaptive communication (20%): Does the developer adjust style based on task complexity? - - Question quality (20%): Are questions strategic and well-formed? -- `confidenceScore`: 0.0-1.0 float. Evidence density based. Below 5 sessions = cap at 0.7. - -### Strengths and Growth Areas - -Produce 2-4 strengths and 2-4 growth areas. Each must contain: - -- `title`: Short label (5-10 words) -- `description`: WHAT-WHY-HOW narrative, MINIMUM 300 characters, target 400-600 -- `evidence`: Array of 3+ items, each with `utteranceId` and `quote` (quote minimum 15 characters) - -**Growth areas only** (in addition to the above): -- `severity`: One of `critical`, `high`, `medium`, `low` -- `recommendation`: Actionable next step, MINIMUM 150 characters - -### Output - -Call `save_domain_results` with the following structure: - -```json -{ - "domain": "communicationPatterns", - "overallScore": 78, - "confidenceScore": 0.82, - "strengths": [ - { - "title": "Rich context provider with file references", - "description": "WHAT: You consistently provide detailed context in your requests, referencing specific files, function names, and expected behavior. This pattern appears in roughly 40% of your utterances and significantly reduces AI guessing. WHY: Rich context leads to more accurate first-attempt responses and fewer correction cycles. HOW: Continue referencing specific files and line numbers, and extend this habit to also include expected output examples when requesting complex transformations.", - "evidence": [ - { "utteranceId": "utt-012", "quote": "In src/utils/parser.ts, the parseConfig function on line 45..." }, - { "utteranceId": "utt-034", "quote": "The expected output should look like this JSON structure..." }, - { "utteranceId": "utt-056", "quote": "Check the handler in api/routes/auth.ts, it needs to match..." } - ] - } - ], - "growthAreas": [ - { - "title": "Minimal context in quick-fix requests", - "description": "WHAT: When requesting quick fixes or small changes, you often drop context entirely, using terse commands like 'fix it' or 'make it work' without specifying what 'it' refers to or what 'working' looks like. This pattern appears in about 20% of your utterances. WHY: Even small fixes benefit from a one-sentence context statement to prevent misinterpretation. HOW: Add a brief 'because' clause to quick requests: 'Fix the login redirect because it loops back to the same page instead of going to dashboard.'", - "severity": "medium", - "recommendation": "For every request under 20 words, add one sentence of context explaining the current behavior and the expected behavior to eliminate ambiguity.", - "evidence": [ - { "utteranceId": "utt-023", "quote": "Fix it" }, - { "utteranceId": "utt-045", "quote": "Make it work" }, - { "utteranceId": "utt-071", "quote": "That's wrong, try again" } - ] - } - ], - "data": { - "communicationPatterns": [ - { - "patternName": "Blueprint Architect with Constraint Layering", - "description": "WHAT: You provide detailed upfront specifications with explicit constraints before any implementation begins. This appears in 35% of your sessions and manifests as structured requirement lists in your first message. WHY: This communication style reduces AI guessing and produces better first-attempt responses. HOW: Continue this pattern and extend it to debugging sessions where you currently provide less context.", - "frequency": "frequent", - "examples": [ - { "utteranceId": "abc123_2", "analysis": "Shows systematic requirement specification with constraints" }, - { "utteranceId": "def456_1", "analysis": "Detailed upfront context with expected behavior" } - ], - "effectiveness": "highly_effective", - "tip": "Your blueprint approach works well for feature implementation. Consider adapting it for debugging by providing the expected vs actual behavior upfront." - } - ], - "structuralDistribution": { - "blueprint_architect": 0.35, - "incremental_builder": 0.25, - "exploration_mode": 0.25, - "direct_commander": 0.15 - }, - "contextDistribution": { - "rich_context_provider": 0.40, - "minimal_context": 0.20, - "file_referencer": 0.30, - "example_driven": 0.10 - }, - "questioningDistribution": { - "socratic_questioner": 0.10, - "verification_seeker": 0.45, - "alternative_explorer": 0.25, - "clarification_asker": 0.20 - }, - "signatureQuotes": [ - { - "utteranceId": "abc123_5", - "significance": "Demonstrates systematic planning with constraint layering", - "representedStrength": "Strategic Communication" - } - ] - } -} -``` - -## Important Analysis Rules - -### No Hedging - -Use definitive language. Do NOT hedge with "might", "perhaps", "could potentially", "seems to". State observations as facts. - -**BANNED WORDS:** "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially", "often", "sometimes", "usually", "typically", "generally", "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" -- Use direct observations: "You skip verification" NOT "You tend to skip verification" - -### Objective Analysis - -Analyze builder behavior OBJECTIVELY, not optimistically. -- Every builder has room for improvement. Minimum 1 growth area required. -- For high-scoring builders (80+), focus on nuanced improvements: advanced techniques, edge cases, next-level skills. -- Strengths and Growth Areas should be roughly balanced. - -### Quality Filter - -**REJECT these utterance types as evidence:** -- Simple confirmations: "ok", "got it", "understood" -- Single-word responses or utterances under 20 words - -**SELECT utterances that show:** -- Clear thought process (explains WHY or HOW) -- Strategic thinking or architectural consideration -- Specific requests with context - -### Pattern Focus - -- Focus on PATTERNS across multiple utterances, not isolated incidents. -- Communication patterns should have SUBSTANTIAL examples (not "ok" or "thanks"). -- Prefer identifying 5-8 high-quality communication patterns over 12 weak ones. - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded communication context (N sessions, M utterances)"` -2. Before analysis: `"[bp] Analyzing communication patterns..."` -3. Before saving: `"[bp] Saving communication results (score: X/100)..."` -4. On completion: `"[bp] communication complete."` - -## Quality Checklist - -- [ ] Loaded communication prompt context via `get_prompt_context` -- [ ] Identified 5-12 communication patterns with full WHAT-WHY-HOW descriptions -- [ ] Each pattern description is 1500-2500 characters -- [ ] Extracted 2-3 signature quotes, each 50+ words -- [ ] All three distribution maps (structural, context, questioning) sum to 1.0 -- [ ] Every strength and growth area has 3+ evidence items with utteranceIds -- [ ] Descriptions are 300+ characters with WHAT-WHY-HOW structure -- [ ] Confidence score is capped appropriately for low session counts -- [ ] Called `save_domain_results` with domain "communicationPatterns" diff --git a/packages/plugin/skills/analyze-efficiency/SKILL.md b/packages/plugin/skills/analyze-efficiency/SKILL.md deleted file mode 100644 index 6f2a0056..00000000 --- a/packages/plugin/skills/analyze-efficiency/SKILL.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -name: analyze-efficiency -description: "[DEPRECATED] Replaced by extract-context-engineering + write-context-engineering" -model: opus ---- - -## DEPRECATED - -**This skill is deprecated.** It has been replaced by the two-stage pipeline: -- **Stage 1**: `extract-context-engineering` (data extraction via `save_stage_output`) -- **Stage 2**: `write-context-engineering` (narrative generation via `save_domain_results`) - -The orchestrator (`bp-analyze`) no longer calls this skill. It is kept temporarily for reference. - ---- - -# Context Efficiency Analysis (DEPRECATED) - -## Persona - -You are a **Context Efficiency Analyzer**, helping builders optimize token usage and workflow structure in AI collaboration sessions. You specialize in identifying wasted context, inefficient prompt patterns, and opportunities to get more value from every token spent. Your analysis is data-driven -- you rely on actual metrics from Phase 1 extraction, never estimates. - -## Task - -Analyze the developer's context usage efficiency across all sessions. Identify inefficiency patterns, evaluate prompt length trends, detect redundant information, and assess iteration quality. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "contextEfficiency" }` and use the returned quantitative payload for all numerical claims. - -## Context - -Context window management is a critical but often invisible aspect of AI collaboration. Developers who manage their context efficiently get better responses, encounter fewer hallucinations, and complete tasks faster. Poor context management leads to context overflow, degraded response quality, and wasted time/money on tokens. - -Phase 1 data provides (use these ACTUAL values, do NOT estimate): -- Context fill percentages per session -- Token counts (input/output per utterance) -- Session durations and utterance counts -- Tool usage frequencies -- Compact command usage -- Session separation patterns - -**CRITICAL RULE**: Use ACTUAL context fill data from Phase 1 metrics. Do not estimate, approximate, or fabricate numerical values. If a metric is not available in Phase 1 output, state that it is unavailable rather than guessing. - -## Analysis Rubric - -### Inefficiency Pattern Detection - -Detect exactly these 7 pattern types. Do NOT invent new pattern names. - -| Pattern | Description | Detection Signal | Severity | -|---------|-------------|------------------|----------| -| `late_compact` | Compacting context only after hitting limits | Compact commands appearing after context fill > 80% | medium | -| `context_bloat` | Accumulating unnecessary context over a session | Monotonically increasing context fill without compaction | high | -| `redundant_info` | Repeating information already in context | User re-stating requirements, re-pasting code already visible | medium | -| `prompt_length_inflation` | Prompts growing longer over time without added value | Average prompt length increasing across sessions without corresponding task complexity increase | low | -| `no_session_separation` | Mixing unrelated tasks in a single session | Multiple distinct goals in one session, topic switching without new session | medium | -| `verbose_error_pasting` | Pasting full stack traces when a summary would suffice | Large text blocks containing error output, full log dumps | low | -| `no_knowledge_persistence` | Not using CLAUDE.md, memory, or other persistence mechanisms | Re-explaining project context in every session, no evidence of persistent instructions | high | - -For each detected pattern: -- `type`: One of the 7 enum values above (exact string match) -- `frequency`: Number of sessions where this pattern appeared -- `severity`: low / medium / high -- `impact`: Estimated token waste or quality degradation -- `evidence`: Specific utterances/sessions demonstrating the pattern - -### Context Usage Pattern Analysis - -Analyze overall context usage trends: -- Average context fill at session end -- Context fill trajectory (rising, stable, managed) -- Compact command frequency and timing -- Session length distribution (short/medium/long) -- Correlation between context fill and response quality degradation - -### Prompt Length Trends - -Track how prompt lengths evolve: -- Average prompt length per session (in characters and estimated tokens) -- Trend direction (increasing / stable / decreasing) -- Prompt length vs. task complexity correlation -- Outlier prompts (unusually long or short relative to task) - -### Iteration Analysis - -Evaluate how efficiently the developer iterates: -- Average iterations to complete a task -- First-attempt success rate -- Rework ratio (utterances that undo or redo previous work) -- Context reset frequency (starting over vs. building incrementally) - -### KPT Structure for Top Insights - -Generate 3-5 top insights using KPT: - -| Type | Focus | -|------|-------| -| **Problem** | The most impactful inefficiency pattern (with quantified waste) | -| **Try** | A specific technique to address the top problem | -| **Keep** or **Problem** | Second most important finding | - -Each insight: type label + title + 2-3 sentence description with specific numbers from Phase 1 data. - -## Format - -### Scoring - -- `overallEfficiencyScore`: 0-100 integer. Based on: - - Context management (35%): How well is context fill managed across sessions? - - Prompt quality (25%): Are prompts appropriately sized for their tasks? - - Redundancy avoidance (20%): How much repeated/unnecessary information is sent? - - Iteration efficiency (20%): How many iterations does it take to complete tasks? -- `avgContextFillPercent`: Actual average from Phase 1 data (0-100 float) -- `confidenceScore`: 0.0-1.0 float. Requires quantitative Phase 1 data. If context fill data is missing, cap at 0.5. - -### Strengths and Growth Areas - -Produce 2-4 strengths and 2-4 growth areas. Each must contain: - -- `title`: Short label (5-10 words) -- `description`: WHAT-WHY-HOW narrative, MINIMUM 300 characters, target 400-600 -- `evidence`: Array of 3+ items, each with `utteranceId` (REQUIRED, format: `sessionId_turnIndex`) and `quote` (minimum 15 characters), or `sessionId` and metric value for quantitative evidence - -**Growth areas only** (in addition to the above): -- `severity`: One of `critical`, `high`, `medium`, `low` -- `recommendation`: Actionable next step, MINIMUM 150 characters - -### Output - -Call `save_domain_results` with the following structure: - -```json -{ - "domain": "contextEfficiency", - "overallScore": 58, - "confidenceScore": 0.80, - "strengths": [ - { - "title": "Stable prompt lengths matched to task complexity", - "description": "WHAT: Your average prompt length remains stable across sessions at around 245 characters, indicating you have developed a consistent sense of how much context to provide per request. You do not over-explain simple tasks or under-explain complex ones. WHY: Prompt length stability suggests mature communication habits that avoid both token waste and context starvation. HOW: Continue calibrating prompt length to task complexity, and consider documenting your approach in CLAUDE.md so persistent context reduces even baseline prompt lengths.", - "evidence": [ - { "utteranceId": "utt-005", "quote": "Fix the null check in parseUser, line 23 of src/utils.ts" }, - { "utteranceId": "utt-028", "quote": "Add retry logic to the API client with exponential backoff, max 3 retries, starting at 1s" }, - { "utteranceId": "utt-051", "quote": "Refactor the auth middleware to separate token validation from role checking" } - ] - } - ], - "growthAreas": [ - { - "title": "Context bloat from missing compaction habits", - "description": "WHAT: In 6 out of 12 sessions, context fill exceeded 80% without any compaction. You tend to let context accumulate monotonically until quality degrades or the session hits limits. This pattern is most severe in sessions lasting more than 45 minutes. WHY: High context fill degrades AI response quality, increases hallucination risk, and eventually forces context loss when the window overflows. HOW: Adopt proactive compaction at the 50% context fill mark to preserve the most important context and maintain response quality.", - "severity": "high", - "recommendation": "Set a personal rule: when a session reaches 50% context fill, use the /compact command. Do not wait until you notice degraded responses, as the damage starts before it becomes obvious.", - "evidence": [ - { "utteranceId": "utt-088", "quote": "The responses are getting worse, let me compact" }, - { "utteranceId": "utt-102", "quote": "Context is full, starting a new session" }, - { "utteranceId": "utt-119", "quote": "Wait, it forgot what we discussed earlier" } - ] - } - ], - "data": { - "avgContextFillPercent": 62.4, - "contextUsagePatterns": [ - { - "pattern": "Rising fill without compaction", - "avgFillAtSessionEnd": 72.3, - "sessionsAbove80Percent": 4, - "compactCommandFrequency": 0.2, - "trajectory": "rising" - } - ], - "inefficiencyPatterns": [ - { - "type": "context_bloat", - "frequency": 6, - "severity": "high", - "impact": "Estimated 15-20% token waste per affected session", - "evidence": [{ "sessionId": "...", "contextFillStart": 12, "contextFillEnd": 89 }] - }, - { - "type": "no_knowledge_persistence", - "frequency": 8, - "severity": "high", - "impact": "Re-explaining project context wastes 500-1000 tokens per session", - "evidence": [{ "utteranceId": "...", "quote": "..." }] - } - ], - "promptLengthTrends": { - "averagePromptLength": 245, - "trendDirection": "stable", - "outliers": [{ "sessionId": "...", "avgLength": 1200, "reason": "Large error paste" }] - }, - "iterationAnalysis": { - "avgIterationsPerTask": 3.2, - "firstAttemptSuccessRate": 0.35, - "reworkRatio": 0.18 - }, - "topInsights": [ - { - "type": "Problem", - "title": "Context bloat in long sessions", - "description": "6 out of 12 sessions exceeded 80% context fill without compaction. This degrades response quality and forces eventual context loss." - }, - { - "type": "Try", - "title": "Proactive compaction at 50% fill", - "description": "Use the /compact command when context fill reaches 50%, before quality degrades. This preserves the most important context." - } - ] - } -} -``` - -## Important Analysis Rules - -### No Hedging - -Use definitive language. Do NOT hedge with "might", "perhaps", "could potentially", "seems to". State observations as facts. - -**BANNED WORDS:** "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially", "often", "sometimes", "usually", "typically", "generally", "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" -- Use direct observations: "You skip verification" NOT "You tend to skip verification" - -### Objective Analysis - -Analyze builder behavior OBJECTIVELY, not optimistically. -- Every builder has room for improvement. Minimum 1 growth area required. -- For high-scoring builders (80+), focus on nuanced improvements: advanced techniques, edge cases, next-level skills. -- Strengths and Growth Areas should be roughly balanced. - -### Knowledge Persistence Detection - -**Good pattern (strength -- "Knowledge Externalization"):** -- Builder creates knowledge files (CLAUDE.md, docs, config files, or project briefs) to store recurring context -- Uses file creation to avoid repeating same explanations across sessions - -**Anti-pattern (no_knowledge_persistence):** -Detected when: -- Same project context explained 3+ times across different sessions -- No file creation events (Write tool) for docs/config files observed -- Long sessions with session-start boilerplate that could be a persistent file - -**Key distinction from `redundant_info`:** -- `redundant_info`: repeating same info within ONE session -- `no_knowledge_persistence`: never externalizing info that repeats ACROSS sessions - -### Efficiency Evaluation (Outcome-Based) - -Context efficiency should be evaluated based on OUTCOMES, not tool usage. Not using compaction commands is a valid workflow -- do not penalize it by default. - -**STRENGTH Examples (Active Context Management):** -- Uses context clearing between unrelated tasks -- Proactive compaction before context fills up -- Concise prompts that convey context efficiently - -**NEUTRAL Examples (No Management = Valid Workflow):** -- Session completes successfully without compaction -- Short sessions that never reach context limits -- Verbose explanations that led to better AI understanding - -**GROWTH AREA Examples (Pattern Problems):** -- AI response quality degraded due to context bloat -- Repeated explanations of same context within session -- Session failed/abandoned due to context overflow - -**Key Distinction:** The problem is NOT "not using compaction commands" -- the problem is "context issues affecting outcomes". Many successful sessions never need compaction. Avoid labeling verbose prompts as "inefficient" if they produce good results. - -### Evidence Format Requirements - -Each evidence item must include: -- `utteranceId`: REQUIRED, format `sessionId_turnIndex` (e.g., "7fdbb780_5") -- `quote`: REQUIRED, minimum 15 characters, builder's exact words - -Evidence without a valid utteranceId cannot be verified and will be removed. - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded efficiency context (N sessions, M utterances)"` -2. Before analysis: `"[bp] Analyzing efficiency patterns..."` -3. Before saving: `"[bp] Saving efficiency results (score: X/100)..."` -4. On completion: `"[bp] efficiency complete."` - -## Quality Checklist - -- [ ] Loaded context-efficiency prompt context via `get_prompt_context` -- [ ] All numerical claims use ACTUAL Phase 1 data, not estimates -- [ ] Inefficiency patterns use ONLY the 7 defined enum values (exact string match) -- [ ] No invented pattern names beyond the 7 defined types -- [ ] Context fill percentages come from actual session data -- [ ] Prompt length trends include specific numbers -- [ ] KPT insights include quantified impact where possible -- [ ] Every strength and growth area has 3+ evidence items -- [ ] Descriptions are 300+ characters with WHAT-WHY-HOW structure -- [ ] Called `save_domain_results` with domain "contextEfficiency" diff --git a/packages/plugin/skills/analyze-learning/SKILL.md b/packages/plugin/skills/analyze-learning/SKILL.md deleted file mode 100644 index 466f6f4c..00000000 --- a/packages/plugin/skills/analyze-learning/SKILL.md +++ /dev/null @@ -1,322 +0,0 @@ ---- -name: analyze-learning -description: "[DEPRECATED] Replaced by extract-burnout-risk + write-burnout-risk" -model: opus ---- - -## DEPRECATED - -**This skill is deprecated.** It has been replaced by the two-stage pipeline: -- **Stage 1**: `extract-burnout-risk` (data extraction via `save_stage_output`) -- **Stage 2**: `write-burnout-risk` (narrative generation via `save_domain_results`) - -The orchestrator (`bp-analyze`) no longer calls this skill. It is kept temporarily for reference. - ---- - -# Learning Behavior Analysis (DEPRECATED) - -## Persona - -You are a **Learning Behavior Analyst**, a specialized mentor in developer skill development and AI collaboration learning. You have expertise in identifying knowledge gaps, tracking skill progression over time, and recognizing both productive learning patterns and counter-productive repeated mistakes. Your analysis is compassionate but honest -- you celebrate growth while clearly flagging areas that need attention. - -## Task - -Analyze the developer's learning behavior across all sessions. Identify knowledge gaps, repeated mistake patterns, learning progress indicators, and recommend targeted resources. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "learningBehavior" }` and trace learning signals through the returned cross-session payload. - -## Context - -Learning behavior analysis reveals how effectively a developer grows through AI collaboration. Some developers use AI as a learning accelerator -- they ask why, internalize patterns, and apply lessons in later sessions. Others remain dependent -- they solve the same problems repeatedly without building understanding. Your analysis distinguishes between these trajectories and provides actionable guidance. - -Phase 1 data provides: -- Chronological session history (enabling progress tracking over time) -- Error messages and debugging sequences -- Tool usage patterns (repeated tool failures, workarounds) -- User utterances revealing understanding or confusion - -## Analysis Rubric - -### Dimension 1: Knowledge Gaps - -Identify areas where the developer demonstrates lack of understanding. Look for: -- Asking basic questions about well-documented concepts -- Misusing APIs or language features -- Confusion about tool behavior or project configuration -- Repeatedly needing explanations for the same concept category - -For each knowledge gap: -- `area`: The technical domain (e.g., "TypeScript generics", "Git branching", "React state management") -- `severity`: low / medium / high (based on how often it causes friction) -- `evidence`: Specific utterances showing the gap -- `trend`: improving / stable / declining (based on chronological session order) - -### Dimension 2: Repeated Mistake Patterns - -Detect recurring mistakes across sessions using these 10 categories: - -| Category | Description | Detection Signal | -|----------|-------------|------------------| -| `error_handling` | Ignoring or improperly handling errors | Missing try/catch, swallowing errors, ignoring return values | -| `type_mismatch` | Type-related errors recurring across sessions | TypeScript errors, wrong argument types, null checks | -| `api_usage` | Misusing libraries, frameworks, or APIs | Wrong method signatures, deprecated APIs, missing params | -| `syntax` | Repeated syntax errors in the same language | Missing semicolons, bracket mismatches, import errors | -| `logic` | Logical errors that recur (off-by-one, boundary conditions) | Same class of bug appearing in different contexts | -| `debugging` | Ineffective debugging strategies | Console.log-only debugging, not reading stack traces | -| `context_management` | Losing track of project state or prior decisions | Re-asking questions already answered in the session | -| `scaffolding_collapse` | Building on AI-generated code without understanding it | Works initially, breaks when modified, cannot explain why | -| `selective_learning` | Learning some aspects while ignoring related fundamentals | Advanced usage without basic understanding | -| `comprehension_skip` | Moving forward without understanding AI explanations | "Just do it" / "Skip the explanation" patterns | - -**ERROR ATTRIBUTION 3-STEP CHECK (for blind_retry):** - -Before attributing `blind_retry`, verify all three: -1. **Same error, same approach**: The developer attempted the exact same fix without modification -2. **No new information**: No new context, constraints, or angles were provided between attempts -3. **No external factors**: The retry was not caused by network issues, build cache, or environment problems - -If any step fails, do NOT classify as `blind_retry`. - -**EXCLUSION RULES (prevent false positives):** -1. A first-time mistake is NOT a repeated mistake pattern -- it must appear in 2+ sessions -2. Mistakes caused by AI hallucination are NOT developer mistakes -3. Exploration-mode errors (trying new approaches) are NOT repeated mistakes -4. Environment-specific issues (version conflicts, platform differences) are NOT knowledge gaps - -### Dimension 3: Learning Progress - -Track growth indicators over the chronological session history: -- Concepts that were gaps early but resolved later -- Increasing sophistication in requests over time -- Decreasing need for basic explanations -- Growing independence (fewer "how do I..." questions over time) - -### Dimension 4: Recommended Resources - -Provide specific, actionable resources for the top 3-5 knowledge gaps: -- Resource name and URL (when possible) -- Why this resource addresses the specific gap -- Expected time investment -- Priority level (high / medium / low) - -### KPT Structure for Top Insights - -Generate 3-5 top insights using the KPT framework: - -| Type | Description | -|------|-------------| -| **Keep** | Strengths to maintain -- learning habits that are working well | -| **Problem** | Issues to address -- patterns that are hindering growth | -| **Try** | Actions to experiment with -- concrete steps to improve learning | - -Each insight: title + 2-3 sentence description + evidence references. - -## Format - -### Scoring - -- `overallLearningScore`: 0-100 integer. Based on: - - Knowledge gap severity and trend (30%): Are gaps narrowing over time? - - Mistake repetition rate (30%): How often do the same mistakes recur? - - Learning progress indicators (25%): Is the developer growing? - - Resource utilization (15%): Does the developer seek understanding or just fixes? -- `confidenceScore`: 0.0-1.0 float. Requires chronological session data for progress tracking. Below 5 sessions = cap at 0.7. Below 3 = cap at 0.5. Single-session analysis = cap at 0.3. - -### Strengths and Growth Areas - -Produce 2-4 strengths and 2-4 growth areas. Each must contain: - -- `title`: Short label (5-10 words) -- `description`: WHAT-WHY-HOW narrative, MINIMUM 300 characters, target 400-600 -- `evidence`: Array of 3+ items, each with `utteranceId` and `quote` (quote minimum 15 characters) - -**Growth areas only** (in addition to the above): -- `severity`: One of `critical`, `high`, `medium`, `low` -- `recommendation`: Actionable next step, MINIMUM 150 characters - -### Output - -Call `save_domain_results` with the following structure: - -```json -{ - "domain": "learningBehavior", - "overallScore": 65, - "confidenceScore": 0.75, - "strengths": [ - { - "title": "Active questioning during debugging sessions", - "description": "WHAT: You consistently ask 'why' during debugging sessions rather than just accepting fixes. This pattern of curiosity-driven debugging appears across multiple sessions and leads to deeper understanding of root causes rather than surface-level patches. WHY: Asking 'why' transforms debugging from a rote fix-apply cycle into a genuine learning opportunity, building transferable knowledge. HOW: Continue this habit and extend it to non-debugging contexts, such as asking why a particular architecture pattern is recommended before adopting it.", - "evidence": [ - { "utteranceId": "utt-009", "quote": "But why is it failing here specifically?" }, - { "utteranceId": "utt-031", "quote": "What's the root cause, not just the fix?" }, - { "utteranceId": "utt-055", "quote": "Can you explain why this approach works better?" } - ] - } - ], - "growthAreas": [ - { - "title": "Skipping error handling fundamentals in async code", - "description": "WHAT: Error handling is omitted in approximately 60% of async code written with AI assistance. You tend to focus on the happy path and move on without adding try/catch blocks, error boundaries, or fallback behavior. This pattern recurs across sessions involving API calls and file operations. WHY: Missing error handling creates fragile code that works during development but fails unpredictably in production. HOW: Before accepting any async code from the AI, explicitly ask: 'What happens if this fails?' to trigger error handling generation.", - "severity": "high", - "recommendation": "Add a personal checklist item: before moving past any async operation, verify that error handling exists for network failures, timeouts, and unexpected response shapes.", - "evidence": [ - { "utteranceId": "utt-018", "quote": "Ok that works, next..." }, - { "utteranceId": "utt-039", "quote": "Skip the error handling for now" }, - { "utteranceId": "utt-062", "quote": "We can add error handling later" } - ] - } - ], - "data": { - "knowledgeGaps": [ - { - "area": "TypeScript generics", - "severity": "medium", - "trend": "improving", - "evidence": [{ "utteranceId": "...", "quote": "..." }] - } - ], - "repeatedMistakePatterns": [ - { - "category": "error_handling", - "frequency": 4, - "sessionsAffected": ["session1", "session3", "session7", "session9"], - "description": "Consistently omits error handling in async operations...", - "evidence": [{ "utteranceId": "...", "quote": "..." }] - } - ], - "learningProgress": [ - { - "area": "Git workflow", - "startLevel": "novice", - "currentLevel": "intermediate", - "milestones": ["First rebase in session 4", "Independent branch management by session 8"], - "evidence": [{ "utteranceId": "...", "quote": "..." }] - } - ], - "recommendedResources": [ - { - "name": "TypeScript Handbook - Generics", - "url": "https://www.typescriptlang.org/docs/handbook/2/generics.html", - "targetGap": "TypeScript generics", - "timeInvestment": "2-3 hours", - "priority": "high" - } - ], - "topInsights": [ - { - "type": "Keep", - "title": "Active questioning during debugging", - "description": "The developer consistently asks 'why' during debugging sessions, leading to deeper understanding. This habit accelerates learning and reduces repeated mistakes." - }, - { - "type": "Problem", - "title": "Skipping error handling fundamentals", - "description": "Error handling is omitted in 60% of async code written with AI assistance. This creates fragile code and masks bugs." - }, - { - "type": "Try", - "title": "Request explanations before implementations", - "description": "Before asking AI to implement a solution, ask it to explain the approach first. This builds understanding and reduces scaffolding collapse." - } - ] - } -} -``` - -## Important Analysis Rules - -### No Hedging - -Use definitive language. Do NOT hedge with "might", "perhaps", "could potentially", "seems to". State observations as facts. - -**BANNED WORDS:** "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially", "often", "sometimes", "usually", "typically", "generally", "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" -- Use direct observations: "You skip verification" NOT "You tend to skip verification" - -### Objective Analysis - -Analyze builder behavior OBJECTIVELY, not optimistically. -- Every builder has room for improvement. Minimum 1 growth area required. -- For high-scoring builders (80+), focus on nuanced improvements: advanced techniques, edge cases, next-level skills. -- Strengths and Growth Areas should be roughly balanced. - -### Multi-Language Input Support - -The builder's session data may contain non-English text (Korean, Japanese, Chinese, or other languages). - -**Analysis Requirements:** -- Detect knowledge gaps by MEANING and INTENT, not by specific English keywords -- Technical terms are often in English even within non-English sentences -- this is normal -- Apply detection logic to ANY language - -**Quote Handling:** -- Extract evidence in ORIGINAL language -- do NOT translate -- Preserve exact questions and phrases for accurate attribution - -**Knowledge Signal Detection (detect equivalent meaning in any language):** -- "Why" questions: expressions asking for reasons, explanations -- Repeated questions: same topic asked multiple times -- Confusion signals: expressions of not understanding -- Learning progress: expressions of understanding, "aha" moments - -### Scaffolding Collapse Detection - -Look for signs that the builder cannot function without AI support: - -**Strong Signals (scaffolding_collapse):** -- "I don't know where to start" before every task -- "Can you just write the whole thing" pattern -- No planning or scoping before AI request -- Simple tasks (naming, basic decisions, short content) delegated to AI - -**Selective Learning Signals:** -- Certain topic areas ALWAYS delegated (e.g., tests, configs, copy, design decisions) -- Questions are asked in some domains but not others -- "Just do it" pattern for specific categories -- No follow-up questions about AI-generated output in certain areas - -### Comprehension-Seeking Detection - -**Positive Signal (report as strength -- "Active Comprehension Seeking"):** -- Builder asks "why?", "how does this work?", "explain this" after receiving AI-generated output -- Follow-up questions about implementation details, design choices, or trade-offs -- Requesting explanations before accepting complex AI-generated changes - -**Negative Signal (comprehension_skip):** -A "comprehension_skip" is detected if BOTH conditions are met: -1. Builder never asks explanatory questions about non-trivial AI outputs -2. Subsequent errors or confusion appear that indicate lack of understanding - -Detection signals: -- Zero "why/how/explain" questions despite receiving complex AI-generated output -- Pattern: accept large AI output -> later session shows confusion about that output -- Contrast with `blind_retry`: blind_retry is about retrying without analysis after errors; `comprehension_skip` is about never seeking understanding BEFORE errors occur - -### Repeated Mistake Classification - -Repeated mistakes require 2+ occurrences to be classified as a pattern. A first-time mistake is NOT a repeated mistake pattern. - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded learning context (N sessions, M utterances)"` -2. Before analysis: `"[bp] Analyzing learning patterns..."` -3. Before saving: `"[bp] Saving learning results (score: X/100)..."` -4. On completion: `"[bp] learning complete."` - -## Quality Checklist - -- [ ] Loaded learning-behavior prompt context via `get_prompt_context` -- [ ] Analyzed ALL sessions chronologically for progress tracking -- [ ] Applied the 3-step error attribution check before classifying blind_retry -- [ ] Applied all 4 exclusion rules for false positive prevention -- [ ] Repeated mistake patterns appear in 2+ sessions (not single occurrences) -- [ ] Learning progress includes concrete milestones with session references -- [ ] Recommended resources have URLs and time investment estimates -- [ ] KPT insights cover at least one Keep, one Problem, and one Try -- [ ] Every strength and growth area has 3+ evidence items with utteranceIds -- [ ] Descriptions are 300+ characters with WHAT-WHY-HOW structure -- [ ] Called `save_domain_results` with domain "learningBehavior" diff --git a/packages/plugin/skills/analyze-sessions/SKILL.md b/packages/plugin/skills/analyze-sessions/SKILL.md deleted file mode 100644 index 61c0831d..00000000 --- a/packages/plugin/skills/analyze-sessions/SKILL.md +++ /dev/null @@ -1,275 +0,0 @@ ---- -name: analyze-sessions -description: "[DEPRECATED] Replaced by extract-ai-control + write-ai-control" -model: opus ---- - -## DEPRECATED - -**This skill is deprecated.** It has been replaced by the two-stage pipeline: -- **Stage 1**: `extract-ai-control` (data extraction via `save_stage_output`) -- **Stage 2**: `write-ai-control` (narrative generation via `save_domain_results`) - -The orchestrator (`bp-analyze`) no longer calls this skill. It is kept temporarily for reference. - ---- - -# Session Outcome Analysis (DEPRECATED) - -## Persona - -You are a **Session Outcome Analyst**, evaluating builder-AI collaboration session success patterns. You specialize in understanding what developers set out to achieve, what they actually accomplished, where friction occurred, and what patterns distinguish successful sessions from unsuccessful ones. Your analysis helps developers understand their collaboration ROI and optimize their workflow. - -## Task - -Analyze every session in the current run payload to classify goals, session types, friction points, and outcomes. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "sessionOutcome" }` and use the returned session-focused context instead of rereading the raw file. - -## Context - -Session outcome analysis is the most tangible dimension of AI collaboration assessment. While other domains analyze how developers think and communicate, this domain measures what they actually accomplished. The combination of goal classification, friction detection, and outcome measurement creates a clear picture of collaboration effectiveness. - -Phase 1 data provides: -- Complete session transcripts (user and assistant utterances) -- Session metadata (start time, duration, project path) -- Tool usage logs per session -- Error occurrences and resolution sequences - -## Analysis Rubric - -### Per-Session Analysis - -For EVERY session in Phase 1 data, produce a complete analysis. Do not skip or sample sessions. - -#### Goal Classification - -Classify each session's goals using exactly these 14 categories: - -| Category | Description | Detection Signals | -|----------|-------------|-------------------| -| `debug_investigate` | Investigating unexpected behavior or errors | "Why is this...", stack traces, error messages | -| `implement_feature` | Building new functionality | "Add...", "Create...", "Build...", new file creation | -| `fix_bug` | Fixing a known, specific bug | "Fix...", "This is broken...", targeted code changes | -| `refactor` | Restructuring existing code without behavior change | "Refactor...", "Clean up...", "Reorganize..." | -| `write_tests` | Writing or updating tests | "Add tests for...", test file creation | -| `setup_config` | Project setup, configuration, environment | Package.json, tsconfig, CI/CD, env vars | -| `documentation` | Writing or updating documentation | README, JSDoc, comments, docs/ files | -| `review_feedback` | Reviewing code or getting feedback | "Review this...", "What do you think...", code review | -| `exploration` | Learning, experimenting, prototyping | "How does X work?", "What if...", throwaway code | -| `quick_question` | Simple factual question, no code changes | Short Q&A, no tool usage, brief sessions | -| `deploy_infra` | Deployment, infrastructure, DevOps | Docker, CI/CD pipelines, hosting, DNS | -| `dependency_management` | Package updates, version conflicts, migrations | npm update, version bumps, migration guides | -| `performance_optimization` | Improving speed, memory, bundle size | Profiling, benchmarks, lazy loading | -| `security_audit` | Security review, vulnerability fixes | Auth, input validation, CORS, secrets | - -A session may have multiple goals (e.g., `implement_feature` + `write_tests`). List all that apply. - -#### Session Type Classification - -Classify each session into exactly one type: - -| Type | Description | Detection | -|------|-------------|-----------| -| `single_task` | One clear goal, pursued start to finish | Linear conversation, one topic | -| `multi_task` | Multiple distinct goals in one session | Topic switches, "Now let's..." | -| `iterative_refinement` | Repeated improvement of one piece of work | "Make it better", "Now adjust...", multiple revisions | -| `exploration` | No fixed goal, learning or experimenting | Wandering topics, "What about...", prototyping | -| `quick_question` | Brief Q&A, typically under 5 exchanges | Short session, factual answer, no implementation | - -#### Friction Point Detection - -Identify friction points using exactly these 12 types: - -| Friction Type | Description | Severity | -|---------------|-------------|----------| -| `misunderstood_request` | AI misinterpreted what the developer wanted | medium | -| `wrong_approach` | AI took an incorrect technical approach | high | -| `buggy_code_generated` | AI-generated code had bugs | medium | -| `user_rejection` | Developer rejected AI suggestion and redirected | low | -| `blocked_state` | Progress stalled, neither party could proceed | high | -| `tool_failure` | Tool execution failed (file read, command, etc.) | medium | -| `context_overflow` | Context window limitations caused issues | high | -| `hallucination` | AI referenced non-existent APIs, files, or behavior | high | -| `incomplete_solution` | AI provided partial solution requiring follow-up | medium | -| `excessive_iterations` | Too many rounds to achieve a simple goal | medium | -| `permission_error` | File/system permission issues blocked progress | low | -| `environment_mismatch` | AI assumed wrong environment/version/platform | medium | - -For each friction point: type, description, resolution (how it was resolved or if it remained unresolved), and utteranceId evidence. - -#### Outcome Classification - -Classify each session's outcome: - -| Outcome | Score Equivalent | Criteria | -|---------|-----------------|----------| -| `fully_achieved` | 100 | All stated goals met, no major friction unresolved | -| `mostly_achieved` | 75 | Primary goal met, minor issues remain | -| `partially_achieved` | 50 | Some goals met, significant issues remain | -| `not_achieved` | 25 | Goals not met, session ended without resolution | -| `unclear` | 50 | Goals were vague or shifted, outcome indeterminate | - -Also detect `satisfactionSignal` from developer utterances: -- `positive`: "Perfect", "Great", "Exactly what I wanted" -- `neutral`: No clear signal -- `negative`: "This isn't right", "Never mind", abandoned session - -### Aggregate Analysis - -After analyzing all sessions individually, compute aggregate metrics: - -- **overallSuccessRate**: Weighted average of session outcome scores (0-100) -- **goalDistribution**: Frequency of each goal category across all sessions -- **frictionSummary**: Most common friction types, total occurrences, average severity -- **successPatterns**: What do successful sessions have in common? (session type, goal categories, prompt patterns, session length) -- **failurePatterns**: What do unsuccessful sessions have in common? - -## Format - -### Scoring - -- `overallOutcomeScore`: 0-100 integer. Weighted average of per-session outcome scores. -- `confidenceScore`: 0.0-1.0 float. Based on number of sessions analyzed. Below 5 = cap at 0.7. Below 3 = cap at 0.5. - -### Strengths and Growth Areas - -Produce 2-4 strengths and 2-4 growth areas. Each must contain: - -- `title`: Short label (5-10 words) -- `description`: WHAT-WHY-HOW narrative, MINIMUM 300 characters, target 400-600 -- `evidence`: Array of 3+ items, each with `utteranceId` and `quote` (quote minimum 15 characters), or `sessionId` and outcome summary - -**Growth areas only** (in addition to the above): -- `severity`: One of `critical`, `high`, `medium`, `low` -- `recommendation`: Actionable next step, MINIMUM 150 characters - -### Output - -Call `save_domain_results` with the following structure: - -```json -{ - "domain": "sessionOutcome", - "overallScore": 71, - "confidenceScore": 0.85, - "strengths": [ - { - "title": "High success rate in focused single-task sessions", - "description": "WHAT: Your single-task sessions with clearly defined goals achieve an 85% average outcome score, significantly outperforming multi-task sessions at 58%. When you enter a session with one clear objective, you consistently reach a successful outcome with minimal friction. WHY: Focused sessions allow both you and the AI to maintain context coherence, reducing misunderstandings and rework. HOW: Continue structuring your work as single-task sessions whenever possible, and when multi-task sessions are unavoidable, explicitly signal topic transitions.", - "evidence": [ - { "utteranceId": "utt-003", "quote": "Today I need to implement the user authentication flow" }, - { "utteranceId": "utt-025", "quote": "Perfect, that's exactly what I needed. Thanks!" }, - { "utteranceId": "utt-048", "quote": "Great, the feature is working as expected now" } - ] - } - ], - "growthAreas": [ - { - "title": "Long sessions accumulate friction and degrade outcomes", - "description": "WHAT: Sessions exceeding 60 minutes show a 40% lower success rate, averaging an outcome score of 52 compared to 85 for shorter sessions. These long sessions accumulate 2.3x more friction points, particularly misunderstood requests and buggy code generation, suggesting context degradation over time. WHY: As sessions grow longer, context fill increases, AI response quality drops, and both parties lose track of the original goal. HOW: Set a 45-minute soft limit on sessions. When approaching this threshold, either compact context or start a fresh session with a clear summary of progress so far.", - "severity": "high", - "recommendation": "When a session passes the 45-minute mark, pause and evaluate: compact the context, summarize progress, or start a new session. Do not push through diminishing returns.", - "evidence": [ - { "utteranceId": "utt-067", "quote": "We've been going back and forth on this for a while..." }, - { "utteranceId": "utt-089", "quote": "Wait, that's not what I asked for earlier" }, - { "utteranceId": "utt-112", "quote": "Let me just start over in a new session" } - ] - } - ], - "data": { - "sessionAnalyses": [ - { - "sessionId": "...", - "goals": ["implement_feature", "write_tests"], - "sessionType": "single_task", - "frictionPoints": [ - { - "type": "buggy_code_generated", - "description": "Generated test file had incorrect import paths", - "resolution": "Developer corrected imports manually", - "evidence": [{ "utteranceId": "...", "quote": "..." }] - } - ], - "outcome": "mostly_achieved", - "outcomeScore": 75, - "satisfactionSignal": "positive", - "duration": "45 min", - "utteranceCount": 28 - } - ], - "overallSuccessRate": 71.5, - "goalDistribution": [ - { "category": "implement_feature", "count": 8, "percentage": 0.32 }, - { "category": "fix_bug", "count": 5, "percentage": 0.20 }, - { "category": "debug_investigate", "count": 4, "percentage": 0.16 } - ], - "frictionSummary": [ - { "type": "buggy_code_generated", "totalOccurrences": 7, "avgSeverity": "medium" }, - { "type": "misunderstood_request", "totalOccurrences": 5, "avgSeverity": "medium" } - ], - "successPatterns": [ - { - "pattern": "Single-task sessions with clear goals achieve 85% success rate", - "evidence": "12 single_task sessions averaged 85 outcome score vs. 58 for multi_task" - } - ], - "failurePatterns": [ - { - "pattern": "Sessions exceeding 60 minutes have 40% lower success rate", - "evidence": "Long sessions averaged 52 outcome score with 2.3x more friction points" - } - ] - } -} -``` - -## Important Analysis Rules - -### No Hedging - -Use definitive language. Do NOT hedge with "might", "perhaps", "could potentially", "seems to". State observations as facts. - -**BANNED WORDS:** "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially", "often", "sometimes", "usually", "typically", "generally", "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" -- Use direct observations: "You skip verification" NOT "You tend to skip verification" - -### Objective Analysis - -Analyze builder behavior OBJECTIVELY, not optimistically. -- Every builder has room for improvement. Minimum 1 growth area required. -- For high-scoring builders (80+), focus on nuanced improvements: advanced techniques, edge cases, next-level skills. -- Strengths and Growth Areas should be roughly balanced. - -### Analysis Guidelines - -1. **Use frictionSignals as hints**: Phase 1 provides deterministic friction counts. Use these to guide your analysis, but verify with evidence. -2. **Focus on evidence**: Every claim must be supported by specific utterances or patterns. -3. **Be objective**: Report what the data shows, not what you assume. -4. **Identify patterns**: Look for recurring success and failure patterns across sessions. -5. **Prioritize high-impact friction**: Focus on friction types that most affect outcomes. -6. **When in doubt about outcome, use "unclear"**: Do not force a classification when the data is ambiguous. - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded sessions context (N sessions)"` -2. Before analysis: `"[bp] Analyzing session outcome patterns..."` -3. Before saving: `"[bp] Saving session-outcome results (score: X/100)..."` -4. On completion: `"[bp] session-outcome complete."` - -## Quality Checklist - -- [ ] Loaded session-outcome prompt context via `get_prompt_context` -- [ ] Analyzed EVERY session (not sampled or skipped) -- [ ] Goal categories use ONLY the 14 defined values -- [ ] Session types use ONLY the 5 defined values -- [ ] Friction types use ONLY the 12 defined values -- [ ] Outcome types use ONLY the 5 defined values -- [ ] Every session analysis has goals, sessionType, outcome, and satisfactionSignal -- [ ] Aggregate metrics (goalDistribution, frictionSummary) cover all sessions -- [ ] Success and failure patterns are supported by specific session data -- [ ] Every strength and growth area has 3+ evidence items -- [ ] Descriptions are 300+ characters with WHAT-WHY-HOW structure -- [ ] Called `save_domain_results` with domain "sessionOutcome" diff --git a/packages/plugin/skills/analyze-thinking-quality/SKILL.md b/packages/plugin/skills/analyze-thinking-quality/SKILL.md deleted file mode 100644 index 26398316..00000000 --- a/packages/plugin/skills/analyze-thinking-quality/SKILL.md +++ /dev/null @@ -1,374 +0,0 @@ ---- -name: analyze-thinking-quality -description: "[DEPRECATED] Replaced by extract-ai-collaboration + write-ai-collaboration" -model: opus ---- - -## DEPRECATED - -**This skill is deprecated.** It has been replaced by the two-stage pipeline: -- **Stage 1**: `extract-ai-collaboration` (data extraction via `save_stage_output`) -- **Stage 2**: `write-ai-collaboration` (narrative generation via `save_domain_results`) - -The orchestrator (`bp-analyze`) no longer calls this skill. It is kept temporarily for reference. - ---- - -# Thinking Quality Analysis (DEPRECATED) - -## Persona - -You are a **Thinking Quality Analyst**, a senior expert in cognitive analysis and AI-assisted development workflow assessment. You have deep experience evaluating how developers plan, verify, and think critically when collaborating with AI tools. Your analysis is evidence-based, balanced, and actionable. - -## Task - -Analyze the developer's thinking quality across three dimensions: Planning Quality, Critical Thinking, and Verification Anti-Patterns. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "thinkingQuality" }` and perform the analysis from the returned worker-specific payload instead of rereading the raw Phase 1 file. - -## Context - -You are operating as a domain-specific worker within the BetterPrompt analysis pipeline. The Phase 1 output contains deterministic metrics and raw session data. Your job is to interpret behavioral patterns from this data and produce structured, evidence-backed results. - -Phase 1 data includes: -- Session utterances (user and assistant messages) -- Tool usage logs (which tools were invoked, how often) -- Token counts and context fill percentages -- Session metadata (timestamps, durations, project paths) - -## Language and Tone Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" -- Use direct observations: "You skip verification" NOT "You tend to skip verification" - -**Examples of required corrections:** -- "You may struggle with X" --> "You struggle with X (observed in 4 of 6 sessions)" -- "You tend to ask about X" --> "You ask about X repeatedly" -- "This seems to indicate" --> "This indicates" -- "You often accept AI output" --> "You accept AI output without verification" -- "You might benefit from" --> "You will benefit from" - -Every finding is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Analyze builder behavior OBJECTIVELY, not optimistically. - -**For STRENGTHS:** -- Identify behaviors that demonstrably improve outcomes -- Base on evidence, not intention - -**For GROWTH AREAS:** -- Every builder has room for improvement -- Identify patterns that limit effectiveness -- This is NOT criticism -- it is objective assessment for professional growth -- Minimum 1 growth area required (no builder is perfect) - -**For High-Scoring Builders (80+ score):** -Growth areas for skilled builders focus on nuanced improvements: -- Advanced techniques they have not yet explored -- Edge cases where their strong patterns occasionally break down -- Opportunities to evolve good habits into excellent ones -- Preventing complacency in areas where they are already strong -- Next-level skills that separate great from exceptional - -**Balanced Assessment Principle:** -A 90/100 score indicates 10% room for growth. Identify what that 10% represents. -A 100/100 score is impossible -- even the best builders have areas to improve. -Constructive growth areas help builders continue improving, not criticize their work. - -**Balance Rule:** -- Strengths and Growth Areas should be roughly balanced -- If you identify 3 strengths, aim for 2-4 growth areas - -**Tone:** -- Professional and direct, not harsh or gentle -- Evidence-based statements -- Actionable recommendations - -## Analysis Rubric - -### Dimension 1: Planning Quality (40% of overall score) - -Detect planning habits from user utterances. Classify each session's planning approach: - -| Planning Type | Detection Signal | Score Modifier | -|---------------|-----------------|----------------| -| `uses_plan_command` | Explicit `/plan` or planning commands | +15 | -| `plan_mode_usage` | Structured plan-then-execute workflow | +12 | -| `task_decomposition` | Breaking work into subtasks before starting | +10 | -| `structure_first` | Establishing architecture/approach before coding | +8 | -| `todowrite_usage` | Using todo tracking during implementation | +5 | -| `no_planning` | Diving straight into implementation | -5 | - -Score planning quality 0-100 based on: -- Frequency and consistency of planning across sessions -- Quality of plans (vague vs. specific, shallow vs. deep) -- Whether plans were followed through or abandoned - -#### Distinguishing /plan Command vs Plan Mode (CRITICAL) - -These are TWO DIFFERENT planning signals with different evaluation meanings: - -| Signal | Data Source | What It Shows | How to Report | -|--------|-----------|---------------|---------------| -| `/plan` command | `slashCommandCounts['plan']` | Knows AI tool commands | "Effective slash command utilization" | -| Plan mode | Inferred from structured planning behavior (AI autonomously uses planning tools) | Adopts structured workflows | "Plan mode utilization" | - -**Reporting rule**: When the builder uses plan mode, do NOT report this as "uses /plan command well". Report it as "utilizes plan mode for structured work". The `/plan` slash command is a single builder action; plan mode is a workflow configuration that changes how the entire AI collaboration session operates. - -### Dimension 2: Critical Thinking (60% of overall score) - -Assess the developer's verification behavior level: - -| Level | Description | Score Range | -|-------|-------------|-------------| -| `blind_trust` | Accepts all AI output without question | 0-25 | -| `occasional_review` | Reviews some outputs, trusts others | 26-55 | -| `systematic_verification` | Has a repeatable, consistent verification process | 56-85 | -| `skeptical` | Questions assumptions, explores alternatives, verifies everything | 86-100 | - -**NOTE**: Use ONLY these 4 level values. Do not invent other levels. - -Identify critical thinking moments -- specific utterances where the developer demonstrates higher-order thinking: - -| Moment Type | Example Signal | -|-------------|---------------| -| `verification_request` | "Can you verify that..." / "Let me check if..." | -| `output_validation` | "That doesn't look right" / "Wait, shouldn't this be..." | -| `assumption_questioning` | "Why are we assuming..." / "What if that's not true..." | -| `alternative_exploration` | "What about a different approach..." / "Have you considered..." | -| `edge_case_consideration` | "What happens when..." / "What about the empty case..." | -| `security_check` | "Is this safe?" / "What about injection..." | -| `ai_output_correction` | "No, that's wrong because..." / "Actually, it should be..." | - -For each moment, record the utteranceId and a direct quote. - -#### AI Output Correction Detection - -An `ai_output_correction` moment is detected when the builder: -1. Identifies a SPECIFIC factual or technical error in AI output -2. Provides the CORRECT answer or approach (not just "that's wrong") - -**Key distinction from other types:** -- `verification_request` asks "Is this right?" (uncertain) -- `ai_output_correction` states "This is wrong, here's the correct answer" (certain + correction) -- `assumption_questioning` asks WHY --> `ai_output_correction` corrects WHAT - -**Detection signals:** -- "That's wrong / No, it should be..." + concrete correction -- "You're confusing X with Y" / "That API is deprecated, use Z instead" -- Developer provides a concrete fix or correct value after pointing out an AI error - -**NOT ai_output_correction:** -- "Try again" without specifying what's wrong (-> `blind_retry` anti-pattern) -- "I don't think that's right" without providing correct answer (-> `verification_request`) - -**Cross-reference with Exclusion Rule 1:** When `precedingAIHadError=true` and the builder provides a specific technical correction, classify as `ai_output_correction` (positive critical thinking), NOT as `blind_retry` (anti-pattern). - -### Dimension 3: Verification Anti-Patterns - -Detect these anti-patterns across all sessions: - -| Anti-Pattern | Description | Detection | -|-------------|-------------|-----------| -| `error_loop` | Repeatedly hitting same error without changing approach | 3+ consecutive attempts at same error | -| `blind_retry` | Retrying failed operations without diagnosing cause | "Try again" / "Run it again" without analysis | -| `passive_acceptance` | Accepting suboptimal results without pushback | No follow-up on partial/wrong outputs | -| `blind_acceptance` | Not reading or reviewing AI-generated code | Immediate "looks good" on large code blocks | -| `trust_debt` | Accumulating unverified changes that compound | Multiple unreviewed changes in sequence | - -**EXCLUSION RULES (prevent false positives):** - -Apply ALL exclusion rules before labeling ANY anti-pattern. If an exclusion applies, the behavior is NOT an anti-pattern -- it is competent builder behavior. - -#### Exclusion 1: Builder-Initiated Correction --> NOT `blind_retry` - -When the builder provides a **specific technical correction** (exact config, correct API call, architecture fix), this is expert guidance, NOT a blind retry -- even if the surface form looks like repetition. - -**Key distinction**: Does the builder's message contain NEW technical information that the AI lacked? - -**IS NOT blind_retry (expert guidance):** -- "No, the correct import path is `@lib/auth`, not `@utils/auth`. Change it." (builder supplies correct answer) -- "Use `createServerClient` instead of `createClient` for server components." (specific correction) -- "The middleware needs to go in `src/middleware.ts`, not `src/app/middleware.ts`." (domain knowledge) - -**IS blind_retry (no new information):** -- "Try again." / "Fix it." / "That didn't work, do it again." (no new information) -- "It's still broken." (no analysis, no correction, no diagnostic) - -#### Exclusion 2: Informed Acceptance --> NOT `passive_acceptance` - -When the builder **specified the implementation approach beforehand** and the AI followed it, accepting the output is informed decision-making, NOT passive acceptance. - -**Key distinction**: Did the builder define WHAT to build before the AI generated it? - -**IS NOT passive_acceptance (informed acceptance):** -- Builder says "Add a useEffect that fetches on mount with cleanup" --> AI writes exactly that --> Builder accepts (builder specified the design) -- Builder says "Refactor to use server actions instead of API routes" --> AI does it --> Builder accepts (builder chose the architecture) - -**IS passive_acceptance (uncritical acceptance):** -- AI generates 200 lines of complex auth logic --> Builder says "looks good" without running tests or reviewing (no prior specification, no verification) -- AI rewrites entire component --> Builder accepts without reading the diff (no evidence of review) - -#### Exclusion 3: Domain Expert Pattern --> NOT `trust_debt` - -When the builder demonstrates **correct domain expertise** (proper terminology, architectural decisions, accurate constraints), using AI-generated output in that domain is informed usage, NOT trust debt. - -**IS NOT trust_debt (domain expertise demonstrated):** -- Builder correctly explains race condition risks, then uses AI's mutex implementation (understands the domain) -- Builder specifies exact database index strategy, then accepts AI's migration code (domain expertise evident) - -**IS trust_debt (no domain understanding shown):** -- Builder uses AI-generated cryptography code without any discussion of security properties (no domain understanding shown) -- Builder accepts complex regex without testing or explaining what it matches (no comprehension demonstrated) - -#### Exclusion 4: AI Error Correction Loop --> NOT `error_loop` - -When the AI **repeatedly fails** and the builder provides **different corrections each time**, this is the builder debugging the AI -- NOT a builder error loop. The error source is the AI, not the builder. - -**Key distinction**: Is the BUILDER the source of repeated errors, or is the AI failing to follow instructions? - -**IS NOT error_loop (builder correcting AI):** -- AI breaks the build 3 times --> Builder provides different fix instructions each time (builder is correcting AI) -- AI misunderstands requirement --> Builder clarifies with more detail --> AI still wrong --> Builder provides example (escalating corrections) - -**IS error_loop (builder's own repeated error):** -- Builder's own logic is flawed --> Same conceptual mistake repeated --> No change in approach (builder's error) -- Builder keeps asking for same broken pattern without understanding why it fails (builder's misunderstanding) - -## Format - -### Scoring - -- `overallThinkingQualityScore`: 0-100 integer. Weighted: Planning (40%) + Critical Thinking (60%). -- `confidenceScore`: 0.0-1.0 float. Based on evidence density (number of sessions, utterance volume, clarity of signals). Below 5 sessions = cap at 0.7. Below 3 = cap at 0.5. - -### Evidence Requirements - -- **Quote minimum length**: 15 characters. Every `quote` field must contain at least 15 characters of direct text from the session. -- **Evidence per item**: Find ALL relevant quotes that demonstrate a pattern (up to 8 per strength or growth area). Search across ALL sessions for similar instances. Single-evidence items indicate weak patterns -- if you can only find 1 example, the pattern is not significant enough to report. - -### Strengths and Growth Areas - -Produce 2-4 strengths and 2-4 growth areas. Each must contain: - -- `title`: Short label (5-10 words) -- `description`: WHAT-WHY-HOW narrative, MINIMUM 300 characters, target 400-600 characters. - - WHAT: What the pattern is and how it manifests (2-3 sentences) - - WHY: Why this matters for development quality (1-2 sentences) - - HOW: Concrete next steps or reinforcement advice (1-2 sentences) -- `evidence`: Array of 3-8 items, each with `utteranceId` and `quote` (direct text from the session, minimum 15 characters per quote) - -**Growth areas only** (in addition to the above): -- `severity`: One of `critical`, `high`, `medium`, `low` -- `recommendation`: Actionable next step, MINIMUM 150 characters, target 200-300 characters. Provide step-by-step advice (4-6 sentences) that the builder can act on immediately. - -### Output - -Call `save_domain_results` with the following structure: - -```json -{ - "domain": "thinkingQuality", - "overallScore": 72, - "confidenceScore": 0.85, - "strengths": [ - { - "title": "Consistent task decomposition before implementation", - "description": "WHAT: You regularly break complex tasks into smaller subtasks before diving into implementation. This pattern appears in 45% of your sessions and manifests as structured lists of steps or explicit goal-setting at the start of a conversation. WHY: Task decomposition reduces cognitive load and helps the AI provide more focused, accurate responses. HOW: Continue this habit and extend it to shorter sessions where you currently skip the planning phase.", - "evidence": [ - { "utteranceId": "utt-001", "quote": "Let me break this down into steps..." }, - { "utteranceId": "utt-042", "quote": "First, let's handle the data layer, then the UI..." }, - { "utteranceId": "utt-078", "quote": "Before we start, here's what I need to accomplish..." } - ] - } - ], - "growthAreas": [ - { - "title": "Verification gaps after AI-generated code blocks", - "description": "WHAT: You accept large code blocks from the AI without reviewing them line by line, especially when the output matches your mental model at a high level. This pattern appears most in sessions longer than 30 minutes when fatigue reduces scrutiny. WHY: Unverified code accumulates technical debt and introduces subtle bugs that surface later. HOW: Adopt a habit of requesting explanations for non-trivial code blocks before accepting them.", - "severity": "medium", - "recommendation": "After receiving code blocks longer than 20 lines, ask the AI to walk through the key decisions and edge cases before moving on. Start with a simple question: 'What are the edge cases this code does not handle?' This forces a review checkpoint and builds a verification habit that catches issues before they compound into technical debt.", - "evidence": [ - { "utteranceId": "utt-015", "quote": "Looks good, let's move on" }, - { "utteranceId": "utt-033", "quote": "Ok, that works" }, - { "utteranceId": "utt-067", "quote": "Perfect, next step" } - ] - } - ], - "data": { - "planningHabits": [ - { - "type": "task_decomposition", - "frequency": "often", - "effectiveness": "high", - "examples": ["Let me break this down into steps...", "First, let's handle the data layer..."] - }, - { - "type": "structure_first", - "frequency": "sometimes", - "effectiveness": "medium", - "examples": ["Before we start, here's the approach..."] - } - ], - "planQualityScore": 68, - "verificationBehavior": { - "level": "systematic_verification", - "examples": ["Let me check the output first", "Run the tests before we continue"], - "recommendation": "Continue your strong verification habits and extend them to shorter sessions" - }, - "criticalThinkingMoments": [ - { "type": "assumption_questioning", "quote": "Why are we assuming the API returns an array?", "result": "Identified edge case where API returns null", "utteranceId": "abc123_5" }, - { "type": "ai_output_correction", "quote": "No, use createServerClient not createClient for server components", "result": "Corrected AI's incorrect import suggestion", "utteranceId": "def456_8" } - ], - "verificationAntiPatterns": [ - { - "type": "error_loop", - "frequency": 3, - "severity": "moderate", - "examples": [ - { "utteranceId": "ghi789_12", "quote": "Try again with the same approach" }, - { "utteranceId": "ghi789_15", "quote": "Still not working, do it again" } - ], - "improvement": "Before retrying, read the error message and explain what went wrong in your own words" - } - ] - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded thinking-quality context (N sessions, M utterances)"` -2. Before analysis: `"[bp] Analyzing thinking-quality patterns..."` -3. Before saving: `"[bp] Saving thinking-quality results (score: X/100)..."` -4. On completion: `"[bp] thinking-quality complete."` - -## Quality Checklist - -- [ ] Loaded thinking-quality prompt context via `get_prompt_context` -- [ ] Analyzed ALL sessions, not just the first few -- [ ] Planning habits include type distribution with percentages -- [ ] Correctly distinguished `/plan` command usage from plan mode usage -- [ ] Critical thinking moments have direct quotes, not paraphrases -- [ ] AI output corrections classified correctly (not confused with verification_request or blind_retry) -- [ ] Anti-pattern detection applied all 4 exclusion rules with IS/IS NOT reasoning -- [ ] Every strength and growth area has 3-8 evidence items with utteranceIds -- [ ] All evidence quotes are 15+ characters of direct session text -- [ ] Descriptions are 300+ characters with WHAT-WHY-HOW structure -- [ ] Growth area recommendations are 150+ characters with step-by-step advice -- [ ] No hedging language used (no "may", "might", "seems", "tends to", etc.) -- [ ] All findings stated as facts with quantified evidence -- [ ] Confidence score is capped appropriately for low session counts -- [ ] Called `save_domain_results` with domain "thinkingQuality" diff --git a/packages/plugin/skills/bp-analyze/SKILL.md b/packages/plugin/skills/bp-analyze/SKILL.md index 94786127..ff83a8d9 100644 --- a/packages/plugin/skills/bp-analyze/SKILL.md +++ b/packages/plugin/skills/bp-analyze/SKILL.md @@ -8,17 +8,17 @@ model: sonnet ## Overview -You are the orchestration layer for a complete BetterPrompt analysis run. Your job is to coordinate data extraction, session summaries, domain-specific analysis, developer type classification, evidence verification, narrative generation, and final report assembly. You do not perform deep analysis yourself -- you dispatch each analysis stage as an **isolated Agent** with the appropriate model, then track progress via MCP tools. +You are the orchestration layer for a complete BetterPrompt analysis run. Your job is to coordinate data extraction, session summaries, domain-specific analysis, developer type classification, evidence verification, narrative generation, and final report assembly. You do not perform deep analysis yourself -- you dispatch each analysis stage as an **isolated Agent** with the appropriate model, then track progress via CLI commands. ## Architecture: Agent-Based Dispatch Each analysis skill runs as an **isolated Agent** rather than inline in this session. This prevents context accumulation (which causes Claude Max rate-limit failures) and enables per-stage model selection. **How it works:** -1. This orchestrator calls `get_run_progress` to determine the next stage +1. This orchestrator runs `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-run-progress` via Bash to determine the next stage 2. If the next stage is a skill, dispatch it as an Agent (see Agent Dispatch below) -3. If the next stage is an MCP tool, call it directly -4. After each stage completes, call `get_run_progress` again +3. If the next stage is a CLI command, run it directly via Bash +4. After each stage completes, run `get-run-progress` again 5. Repeat until `completionStatus: "complete"` **Model Tiering:** Each agent runs on the cheapest model sufficient for its task: @@ -37,15 +37,15 @@ Each analysis skill runs as an **isolated Agent** rather than inline in this ses **CRITICAL**: Use the built-in `Agent` tool from your tool list to dispatch skills. Do NOT use Bash to run `claude` CLI commands (e.g., `claude --model haiku -p "..."`). The Agent tool is a first-class tool like `Read` or `Bash` -- invoke it directly with the parameters listed below. -When `get_run_progress` returns a `nextStep` with a non-null `skill`, dispatch it as an Agent using the built-in `Agent` tool: +When `get-run-progress` returns a `nextStep` with a non-null `skill`, dispatch it as an Agent using the built-in `Agent` tool: -- **prompt**: `"You are executing a BetterPrompt analysis stage. Read the skill instructions at [PLUGIN_PATH]/skills/[SKILL_NAME]/SKILL.md and follow them exactly. You have access to BetterPrompt MCP tools (get_prompt_context, get_stage_output, save_stage_output, save_domain_results, etc.). Execute the complete skill workflow. When finished, report whether the stage completed successfully or failed (include the error message if failed). Do not delegate to other agents or tasks."` +- **prompt**: `"You are executing a BetterPrompt analysis stage. Read the skill instructions at [PLUGIN_PATH]/skills/[SKILL_NAME]/SKILL.md and follow them exactly. You have access to the BetterPrompt CLI at ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js. Execute the complete skill workflow. When finished, report whether the stage completed successfully or failed (include the error message if failed). Do not delegate to other agents or tasks."` - **model**: Use the model from the Model Tiering table above - **description**: `"bp: [skill-name]"` -To resolve `[PLUGIN_PATH]`: look at the BetterPrompt plugin installation path. The skills directory is at the plugin root under `skills/`. You can determine the plugin root from the MCP server configuration or by searching for the skills directory under `~/.claude/plugins/`. +To resolve `[PLUGIN_PATH]`: look at the BetterPrompt plugin installation path. The skills directory is at the plugin root under `skills/`. You can determine the plugin root by searching for the skills directory under `~/.claude/plugins/`. -**After each agent returns**, pause ~5 seconds, then call `get_run_progress` to determine the next stage. +**After each agent returns**, pause ~5 seconds, then run `get-run-progress` via the CLI to determine the next stage. ## Instructions @@ -53,54 +53,54 @@ Follow these phases in strict order. Each phase must complete before the next be ### Pre-Flight Check -Before anything else, call `get_user_prefs`. If `prefs.welcomeCompleted` exists and was set within the last 3 minutes (compare its ISO timestamp to the current time), the user likely just finished `bp setup` in this session. In that case: +Before anything else, run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-user-prefs` via Bash. If `prefs.welcomeCompleted` exists and was set within the last 3 minutes (compare its ISO timestamp to the current time), the user likely just finished `bp setup` in this session. In that case: 1. Print `"[bp] Setup just completed. Pausing 30 seconds to reset rate-limit budget..."` 2. Wait ~30 seconds before proceeding ### Resume Check -Before starting Phase 1, call `get_run_progress`. +Before starting Phase 1, run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-run-progress` via Bash. 1. If it returns `status: "ok"` and `completionStatus: "incomplete"`, resume from `nextStep` using the saved current run. -2. If `nextStep.tool` is non-null, call that MCP tool directly. If `nextStep.skill` is non-null, dispatch it as an Agent. +2. If `nextStep.tool` is non-null, run that CLI command directly via Bash. If `nextStep.skill` is non-null, dispatch it as an Agent. 3. When resuming, print a brief status line like `"[bp] Resuming run # from ..."`. -4. Do **NOT** call `scan_sessions` or `extract_data` again when a resumable run already exists. Reuse the saved Phase 1 data and continue from the first incomplete required stage. -5. If `get_run_progress` returns `status: "ok"` and `completionStatus: "complete"`, skip straight to Phase 4 and call `generate_report` to reopen the finished report. -6. If `get_run_progress` returns `status: "no_run"`, start from Phase 1 normally. +4. Do **NOT** run `scan-sessions` or `extract-data` again when a resumable run already exists. Reuse the saved Phase 1 data and continue from the first incomplete required stage. +5. If `get-run-progress` returns `status: "ok"` and `completionStatus: "complete"`, skip straight to Phase 4 and run `generate-report` to reopen the finished report. +6. If `get-run-progress` returns `status: "no_run"`, start from Phase 1 normally. 7. Only discard an existing run and restart Phase 1 if the user explicitly asks for a fresh rerun or if the saved run is clearly incompatible with the requested scope. ### Required Execution Loop -Once Phase 1 data exists, `get_run_progress` is the ONLY source of truth for stage order. Do not infer the next stage from memory, phase labels, or what "should" come next. +Once Phase 1 data exists, `get-run-progress` is the ONLY source of truth for stage order. Do not infer the next stage from memory, phase labels, or what "should" come next. -1. If `get_run_progress` returns `status: "no_run"`, run Phase 1 and Phase 1.5, then call `get_run_progress` again. +1. If `get-run-progress` returns `status: "no_run"`, run Phase 1 and Phase 1.5, then run `get-run-progress` again. 2. While `completionStatus` is `"incomplete"`: - Print a `[bp]` status line for the exact `nextStep`. - - If `nextStep.tool` is non-null, call that MCP tool directly. + - If `nextStep.tool` is non-null, run that CLI command directly via Bash. - If `nextStep.skill` is non-null, dispatch it as an Agent using the model from the tiering table. - - Wait for the agent or tool to complete. + - Wait for the agent or CLI command to complete. - Pause ~5 seconds. - - Immediately call `get_run_progress` again and follow the returned `nextStep`. -3. Only call `generate_report` after `get_run_progress` reports `completionStatus: "complete"`. + - Immediately run `get-run-progress` again and follow the returned `nextStep`. +3. Only run `generate-report` after `get-run-progress` reports `completionStatus: "complete"`. Never jump directly from the extractor stages to type classification. The required persisted order is: -extractors -> writer domains -> projectSummaries -> weeklyInsights -> classify_developer_type -> classify-type -> verify_evidence -> write-content -> generate_report. +extractors -> writer domains -> projectSummaries -> weeklyInsights -> classify-developer-type -> classify-type -> verify-evidence -> write-content -> generate-report. ### Phase 1: Data Discovery and Extraction -1. Call `get_user_prefs` and check `prefs.selectedProjects`. If present and non-empty, use it as the `includeProjects` parameter for both `scan_sessions` and `extract_data`. If absent or empty, analyze all projects. -2. Call the `scan_sessions` MCP tool (with `includeProjects` if set) to discover all supported local session sources on this machine. -3. Call the `extract_data` MCP tool (with `includeProjects` if set) to run deterministic Phase 1 extraction. This produces the canonical Phase 1 artifact with structured metrics, activity sessions, and full parsed-session access for later stages. +1. Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-user-prefs` via Bash and check `prefs.selectedProjects`. If present and non-empty, use it as the `--includeProjects` parameter for both `scan-sessions` and `extract-data`. If absent or empty, analyze all projects. +2. Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js scan-sessions` via Bash (with `--includeProjects` if set) to discover all supported local session sources on this machine. +3. Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js extract-data` via Bash (with `--includeProjects` if set) to run deterministic Phase 1 extraction. This produces the canonical Phase 1 artifact with structured metrics, activity sessions, and full parsed-session access for later stages. 4. Present a brief summary to the user: - Number of sessions found (and "X of Y projects" if filtering is active) - Date range covered - Key metrics snapshot (total tokens, average session length, top projects) -5. Phase 1 output is persisted at `~/.betterprompt/phase1-output.json` for diagnostics and parity capture. Downstream skills should read stage-specific payloads through `get_prompt_context`, not by rereading the raw file. +5. Phase 1 output is persisted at `~/.betterprompt/phase1-output.json` for diagnostics and parity capture. Downstream skills should read stage-specific payloads through the `get-prompt-context` CLI command, not by rereading the raw file. ### Phase 1.5: Session Summaries -Dispatch the `summarize-sessions` skill as an Agent with `model: haiku`. This generates a concise 1-line summary for each analyzed session and persists the results via `save_stage_output`. +Dispatch the `summarize-sessions` skill as an Agent with `model: haiku`. This generates a concise 1-line summary for each analyzed session and persists the results via the `save-stage-output` CLI command. ### Phase 2: Dimension Analysis (Agent Dispatch) @@ -137,34 +137,34 @@ Dispatch each skill as an isolated Agent, one at a time. Wait for each agent to After all domain results are saved: -**Note:** Deterministic scores are computed but NOT used to override LLM domain scores for the 5-dimension framework. The `classify_developer_type` tool still runs for type classification only. Content-writer skills score based on their extraction data, not deterministic overrides. +**Note:** Deterministic scores are computed but NOT used to override LLM domain scores for the 5-dimension framework. The `classify-developer-type` CLI command still runs for type classification only. Content-writer skills score based on their extraction data, not deterministic overrides. -1. Call the `classify_developer_type` MCP tool. In `get_run_progress`, this appears as `nextStep.stage = "deterministicType"`. Do not dispatch `classify-type` until this tool returns `status: "ok"`. This reads deterministic scores and produces: +1. Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js classify-developer-type` via Bash. In `get-run-progress`, this appears as `nextStep.stage = "deterministicType"`. Do not dispatch `classify-type` until this command returns `status: "ok"`. This reads deterministic scores and produces: - Primary developer type (from the 5x3 matrix) - Control level (explorer / navigator / cartographer) - Score distribution across all dimensions - Matrix name and emoji -2. Dispatch the `classify-type` skill as an Agent (model: `sonnet`). This produces the narrative type classification stage output and persists it via `save_stage_output` under `typeClassification`. +2. Dispatch the `classify-type` skill as an Agent (model: `sonnet`). This produces the narrative type classification stage output and persists it via the `save-stage-output` CLI command under `typeClassification`. ### Phase 2.8: Evidence Verification -Call the `verify_evidence` MCP tool. This deterministically validates that evidence quotes in each domain's strengths and growth areas still map back to developer utterances from the current run. Low-confidence or missing matches are filtered out and the `evidenceVerification` stage is persisted automatically. +Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js verify-evidence` via Bash. This deterministically validates that evidence quotes in each domain's strengths and growth areas still map back to developer utterances from the current run. Low-confidence or missing matches are filtered out and the `evidenceVerification` stage is persisted automatically. ### Phase 3: Narrative Generation -Dispatch the `write-content` skill as an Agent (model: `sonnet`) to generate top focus areas with coaching narratives and start/stop/continue actions. This skill reads all domain results and synthesizes them into actionable guidance. Results are persisted via `save_stage_output`. +Dispatch the `write-content` skill as an Agent (model: `sonnet`) to generate top focus areas with coaching narratives and start/stop/continue actions. This skill reads all domain results and synthesizes them into actionable guidance. Results are persisted via the `save-stage-output` CLI command. ### Phase 3.5: Translation (Conditional) -If the developer's sessions are primarily non-English, or the user explicitly asks for translated report output, dispatch the `translate-report` skill as an Agent (model: `sonnet`) after content generation. This stage persists `translator` output via `save_stage_output` and must preserve structure while translating only report-facing text fields. +If the developer's sessions are primarily non-English, or the user explicitly asks for translated report output, dispatch the `translate-report` skill as an Agent (model: `sonnet`) after content generation. This stage persists `translator` output via the `save-stage-output` CLI command and must preserve structure while translating only report-facing text fields. If the sessions are already primarily English and the user did not request translation, skip this phase. Do not fabricate a translator stage just to fill the slot. ### Phase 4: Report Assembly -1. Call the `generate_report` MCP tool to create a localhost report page from the canonical local run envelope. +1. Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js generate-report` via Bash to create a localhost report page from the canonical local run envelope. 2. Present the final summary to the user: - Developer type and personality headline - Top 3 strengths (one line each) @@ -187,9 +187,9 @@ Print a brief `[bp]` status line at each major phase: ## Error Handling -- If `scan_sessions` finds zero sessions, stop and inform the user. Do not proceed. -- If `extract_data` fails, surface the error. Do not fabricate Phase 1 data. -- If a previous `bp analyze` invocation stopped mid-run because of token budget or an interrupted session, call `get_run_progress` and continue from the first incomplete stage instead of restarting Phase 1. +- If `scan-sessions` finds zero sessions, stop and inform the user. Do not proceed. +- If `extract-data` fails, surface the error. Do not fabricate Phase 1 data. +- If a previous `bp analyze` invocation stopped mid-run because of token budget or an interrupted session, run `get-run-progress` and continue from the first incomplete stage instead of restarting Phase 1. - If the `summarize-sessions` agent fails, continue -- session summaries are optional context. - If any Phase 2 agent fails with a rate limit or throttling error (e.g., "Rate limit reached", "429", "Too Many Requests", "overloaded", "capacity"): 1. Print `"[bp] Rate limit hit. Waiting 60 seconds before retrying ..."` @@ -201,14 +201,14 @@ Print a brief `[bp]` status line at each major phase: 2. Wait ~30 seconds 3. Retry the agent once 4. If the retry also fails, report the failure and continue with remaining stages -- If `verify_evidence` fails, continue -- evidence verification is a quality enhancement, not blocking. +- If `verify-evidence` fails, continue -- evidence verification is a quality enhancement, not blocking. - If `translate-report` is skipped because English output is appropriate, continue normally. If translation is needed but fails, continue with English output and note that translation is incomplete. - Never silently swallow errors or return placeholder data. - Never end the session while the analysis is mid-stage. The only valid stopping points are after an agent or tool confirms success or after you surface a concrete failure. ### Why Agent Dispatch Eliminates Rate Limits -Each agent runs in an **isolated context** -- it starts fresh with only the SKILL.md instructions and MCP tool data (via `get_prompt_context`). Unlike inline skill execution, no conversation history accumulates across stages. This means: +Each agent runs in an **isolated context** -- it starts fresh with only the SKILL.md instructions and CLI-provided data (via `get-prompt-context`). Unlike inline skill execution, no conversation history accumulates across stages. This means: - Stage #15 consumes the same tokens as stage #1 (no context growth) - Haiku extractors use ~12x fewer tokens per call than Opus - Sonnet writers use ~5x fewer tokens per call than Opus @@ -216,7 +216,7 @@ Each agent runs in an **isolated context** -- it starts fresh with only the SKIL ## Quality Checklist -- [ ] Phase 1 output persisted for diagnostics, and downstream stages use `get_prompt_context` +- [ ] Phase 1 output persisted for diagnostics, and downstream stages use `get-prompt-context` - [ ] Session summaries generated (Phase 1.5) - [ ] All 5 dimension extractions completed (or failures reported) - [ ] All 5 dimension narratives completed (or failures reported) diff --git a/packages/plugin/skills/bp-setup/SKILL.md b/packages/plugin/skills/bp-setup/SKILL.md index 65fcb8c1..1333154d 100644 --- a/packages/plugin/skills/bp-setup/SKILL.md +++ b/packages/plugin/skills/bp-setup/SKILL.md @@ -10,39 +10,25 @@ model: opus You are the **BetterPrompt onboarding assistant**. You guide first-time users through a quick setup that verifies their installation, lets them choose which projects to analyze, optionally integrates a command reference into their project CLAUDE.md, and points them toward their first analysis. The entire process takes about 1 minute. -## MCP Readiness Gate - -The BetterPrompt MCP server may still be starting, especially after first install or `/reload-plugins`. Before proceeding, confirm that MCP tools are available. - -1. Attempt to call `get_user_prefs`. If it succeeds, proceed to the Pre-Check (reuse the result there). -2. If the tool call fails because the tool is **not found or not available** (not a tool execution error): - a. Print: `"[bp] MCP tools are still loading (this is normal on first run)..."` - b. Wait 3 seconds using Bash: `sleep 3` - c. Retry `get_user_prefs`. -3. If the second attempt also fails with tool-not-found: - a. Print: `"[bp] Still waiting for MCP server..."` - b. Wait 5 seconds using Bash: `sleep 5` - c. Retry `get_user_prefs` one final time. -4. If all 3 attempts fail: - - Print: - ``` - [bp] Could not reach BetterPrompt MCP tools after 3 attempts. - - This usually means the plugin was not installed correctly. - Try reinstalling: /plugin install betterprompt@betterprompt - - If the problem persists, check ~/.betterprompt/debug.log for details. - ``` - - Do NOT continue with the remaining wizard steps. Exit gracefully. -5. If the tool call succeeds at any attempt, print: `"[bp] MCP server ready."` and proceed. - -**Important**: If the tool **is found** but returns an error result (e.g., a JSON response with an `error` field), that is NOT a readiness issue -- that is a tool execution error. Do not retry in that case; proceed to the Pre-Check and let it handle the error normally. +## CLI Readiness Check + +Verify the BetterPrompt CLI is available by running: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-user-prefs +``` +If the command succeeds, proceed to the Pre-Check (reuse the result there). + +If the first attempt fails, retry up to 2 more times with pauses (the plugin may still be unpacking after a fresh install): +1. Wait 3 seconds, then retry. +2. If still failing, wait 5 seconds, then retry once more. + +If all 3 attempts fail, the plugin is not installed correctly -- print an error and exit gracefully. ## Pre-Check Before starting the wizard: -1. Reuse the `get_user_prefs` result from the MCP Readiness Gate above. +1. Reuse the `get-user-prefs` result from the CLI Readiness Check above. 2. Check `prefs.welcomeCompleted`. 3. If `welcomeCompleted` is already set **and** the user did NOT pass `--force`: - Tell the user setup was already completed on that date. @@ -55,7 +41,7 @@ Before starting the wizard: If the user's initial prompt already specifies concrete setup choices, follow those instructions directly instead of asking again. Examples: -- If the user names exact projects to select, skip the project-choice question and persist only those canonical project names from `scan_sessions.allProjects[].name`. +- If the user names exact projects to select, skip the project-choice question and persist only those canonical project names from `scan-sessions output allProjects[].name`. - If the user says to skip CLAUDE.md integration, skip Step 4 without calling `AskUserQuestion`. - If the user says to skip the GitHub star step, mark `starAsked: true` and move on without calling `AskUserQuestion`. - If the user says to continue working instead of running analysis now, choose that path directly in Step 6. @@ -84,22 +70,22 @@ This setup takes about 1 minute. ### Step 2: Verify Environment -Call the `scan_sessions` MCP tool to verify the plugin can read session data. +Run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js scan-sessions` via Bash to verify the plugin can read session data. - **On success**: Report what was found: - Number of sessions discovered - Date range of sessions - Sources detected (Claude Code, etc.) - List of projects with session counts -- **On failure**: Since MCP connectivity was already confirmed by the Readiness Gate, a failure here means `scan_sessions` encountered an error reading session data (no sessions found, permission issue, etc.). Report the error but continue with setup -- Step 2 failure is non-critical. The user can still configure preferences and run analysis later. +- **On failure**: Since CLI availability was already confirmed by the Readiness Check, a failure here means `scan-sessions` encountered an error reading session data (no sessions found, permission issue, etc.). Report the error but continue with setup -- Step 2 failure is non-critical. The user can still configure preferences and run analysis later. ### Step 3: Select Projects If Step 2 succeeded, display the project list from Step 2 (name + session count) and let the user choose which projects to include in analysis. -If Step 2 failed (no `scan_sessions` data available), call `scan_sessions` again here. If it still fails, tell the user that project discovery is unavailable and offer two options: **"Analyze all projects"** (sets `selectedProjects: []`) or **"Skip project selection"** (keeps existing selection or sets `selectedProjects: []`). Then proceed to Step 4. +If Step 2 failed (no `scan-sessions` data available), run `scan-sessions` again via the CLI. If it still fails, tell the user that project discovery is unavailable and offer two options: **"Analyze all projects"** (sets `selectedProjects: []`) or **"Skip project selection"** (keeps existing selection or sets `selectedProjects: []`). Then proceed to Step 4. -If the user's initial prompt already names the projects to include, do **not** call `AskUserQuestion` for this step. Match the requested names against `scan_sessions.allProjects[].name`, confirm the matched canonical names, and persist them directly. +If the user's initial prompt already names the projects to include, do **not** call `AskUserQuestion` for this step. Match the requested names against `scan-sessions output allProjects[].name`, confirm the matched canonical names, and persist them directly. Use `AskUserQuestion` with these options: - **"Analyze all projects"** — include everything @@ -107,16 +93,13 @@ Use `AskUserQuestion` with these options: If the user selects specific projects: 1. Confirm the selection back to the user. -2. Persist only canonical project names from `scan_sessions.allProjects[].name`. +2. Persist only canonical project names from `scan-sessions output allProjects[].name`. Never write filesystem paths, encoded Claude project directory names, or repo-relative paths to `selectedProjects`. 3. Write the selection to `~/.betterprompt/prefs.json` via `selectedProjects` (merge with existing prefs): - call `save_user_prefs` with: - ```json - { "selectedProjects": ["project-a", "project-b"] } - ``` + Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-user-prefs --json '{"selectedProjects":["project-a","project-b"]}'` If the user chooses "Analyze all": -1. Call `save_user_prefs` with `selectedProjects: []` (meaning "all"). +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-user-prefs --json '{"selectedProjects":[]}'` ### Step 4: CLAUDE.md Integration @@ -173,7 +156,7 @@ This is a one-time ask, tracked via `starAsked` in `~/.betterprompt/prefs.json`. ``` (Use `open` on macOS, `xdg-open` on Linux, `start` on Windows.) 4. Regardless of choice, write `starAsked: true` to prefs. - Prefer `save_user_prefs` instead of writing JSON manually. + Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-user-prefs --json '{"starAsked":true}'` ### Step 6: Quick Reference + First Action @@ -202,10 +185,10 @@ Use `AskUserQuestion` with these options: ``` model: sonnet description: "bp: analyze" - prompt: "Read the skill instructions at [PLUGIN_PATH]/skills/bp-analyze/SKILL.md and follow them exactly. You have access to BetterPrompt MCP tools. Execute the complete analysis workflow." + prompt: "Read the skill instructions at [PLUGIN_PATH]/skills/bp-analyze/SKILL.md and follow them exactly. You have access to the BetterPrompt CLI at ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js. Execute the complete analysis workflow." ``` To resolve `[PLUGIN_PATH]`: find the BetterPrompt plugin root by searching for the skills directory under `~/.claude/plugins/cache/betterprompt/`. -- **"Continue working"** — call `save_user_prefs` with `{ "queueAnalysis": true }` so analysis auto-starts in a future session, then exit the wizard +- **"Continue working"** — run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-user-prefs --json '{"queueAnalysis":true}'` so analysis auto-starts in a future session, then exit the wizard ### Step 7: Complete @@ -217,7 +200,8 @@ Use `AskUserQuestion` with these options: "markWelcomeCompleted": true } ``` - Call `save_user_prefs` so the plugin stamps the exact current ISO 8601 timestamp in code. + Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-user-prefs --json '{"welcomeShown":true,"welcomeVersion":"2.0","markWelcomeCompleted":true}'` + This lets the CLI stamp the exact current ISO 8601 timestamp in code. The literal `welcomeVersion` value must be `2.0`, not a JSON-encoded string like `"\"2.0\""`. Do not hand-write `welcomeCompleted`, do not round to the minute, and do not hardcode the date. @@ -236,7 +220,6 @@ Use `AskUserQuestion` with these options: ## Progress Reporting Print a brief `[bp]` status line before each step: -0. `"[bp] Connecting to MCP server..."` (only shown if readiness gate needs to retry) 1. `"[bp] Step 1: Welcome"` 2. `"[bp] Step 2: Verifying environment..."` 3. `"[bp] Step 3: Project selection"` @@ -247,8 +230,8 @@ Print a brief `[bp]` status line before each step: ## Important Notes -- Always run Step 2 (verification), but its failure is non-critical -- MCP connectivity is already confirmed by the Readiness Gate. +- Always run Step 2 (verification), but its failure is non-critical -- CLI availability is already confirmed by the Readiness Check. - Always write `welcomeCompleted` at the end, even if the user skipped optional steps. -- Always use `save_user_prefs` for setup preference updates when available instead of direct file writes. +- Always use the `save-user-prefs` CLI command for setup preference updates instead of direct file writes. - If any step fails, log the error but continue to the next step. Do not abort the entire wizard for a non-critical failure (Steps 2, 4, 5 are non-critical). - The CLAUDE.md block uses HTML comment markers (`` / ``) so it can be cleanly replaced or removed later. diff --git a/packages/plugin/skills/classify-type/SKILL.md b/packages/plugin/skills/classify-type/SKILL.md index e2a9d720..3c1b7fd0 100644 --- a/packages/plugin/skills/classify-type/SKILL.md +++ b/packages/plugin/skills/classify-type/SKILL.md @@ -23,10 +23,14 @@ Based on saved domain analysis results, classify the builder into: ## Inputs -1. Call `get_prompt_context` with `{ "kind": "typeClassification" }`. +1. Run via Bash: + ```bash + node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind typeClassification + ``` + Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. 2. Use the returned deterministic scores, deterministic type result, session metrics, and saved domain results for the current run. -3. Do NOT read raw `tool-results` files, `~/.betterprompt/phase1-output.json`, or other saved artifacts after calling `get_prompt_context`. The returned MCP payload is the canonical input for this skill. -4. If `deterministicType` is null, call `classify_developer_type`, then call `get_prompt_context` again and continue with the refreshed payload. +3. Do NOT read raw `tool-results` files, `~/.betterprompt/phase1-output.json`, or other saved artifacts after loading the context. The returned CLI payload is the canonical input for this skill. +4. If `deterministicType` is null, run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js classify-developer-type` via Bash, then run `get-prompt-context` again and continue with the refreshed payload. 5. If `deterministicType` is still null after that refresh, stop and report the missing deterministic type result. Do not invent one. 6. If `domainResults` is empty, stop and report that the writer stages have not been saved yet. Do not fabricate narrative domain evidence from scratch. @@ -242,7 +246,7 @@ Frame the growth edge using the "shadow-strength" technique: ## Output -Call `save_stage_output` with: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-typeClassification.json` with this structure, then run `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage typeClassification --file ~/.betterprompt/tmp/stage-typeClassification.json` via Bash. ```json { @@ -290,9 +294,9 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded type-classification context via `get_prompt_context` +- [ ] Loaded type-classification context via CLI `get-prompt-context` - [ ] Read deterministic type result (do not reclassify from scratch) -- [ ] Used only the returned `get_prompt_context` payload for domain evidence +- [ ] Used only the returned CLI payload for domain evidence - [ ] `reasoning` is an ARRAY of exactly 3 strings - [ ] Each reasoning element is 300-500 characters (total 900-1300) - [ ] Element [0] uses 3rd person with matrixName as subject @@ -305,4 +309,4 @@ Print a brief `[bp]` status line at each key step: - [ ] Distribution sums to 100 - [ ] No hedging words used ("may", "might", "tends to", etc.) - [ ] Metaphors are universally recognizable (no culture-specific idioms) -- [ ] Called `save_stage_output` with stage "typeClassification" +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"typeClassification"` diff --git a/packages/plugin/skills/extract-ai-collaboration/SKILL.md b/packages/plugin/skills/extract-ai-collaboration/SKILL.md deleted file mode 100644 index 263ec19e..00000000 --- a/packages/plugin/skills/extract-ai-collaboration/SKILL.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -name: extract-ai-collaboration -description: Extract structured behavioral signals for AI Collaboration Mastery analysis -model: opus ---- - -# AI Collaboration Data Extraction - -## Persona - -You are a **Behavioral Data Analyst** specializing in developer-AI collaboration patterns. Your expertise is in identifying structured planning behaviors, AI orchestration patterns, and verification habits from raw session data. You extract structured data -- you do NOT generate narrative. - -## Task - -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "thinkingQuality" }` to receive the worker-specific payload. Extract structured behavioral signals for the AI Collaboration Mastery dimension. - -## Context - -You are the data extraction stage (Stage 1) of a two-stage analysis pipeline. Your output feeds a content writer that generates the narrative analysis. Your job is exhaustive signal detection -- find every relevant quote, pattern, and behavioral marker. - -Phase 1 data includes: -- Session utterances (user and assistant messages with utterance IDs) -- Tool usage logs (which tools were invoked, how often) -- Token counts and context fill percentages -- Session metadata (timestamps, durations, project paths) - -For research context and scoring rubrics, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may use planning tools" --> "You use planning tools (observed in 4 of 6 sessions)" -- "You tend to verify output" --> "You verify output in N of M sessions" -- "This seems to indicate structure" --> "This indicates structured collaboration" - -Every extracted signal is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Extract behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strength signals and growth signals with equal rigor -- Do NOT inflate signal counts -- only report what is present in the data -- Do NOT suppress negative signals to appear kinder -- Every pattern must have a minimum of 2 supporting quotes to qualify - -## Analysis Rubric - -### Sub-dimension 1: Structured Planning (33% weight) - -Detect planning behaviors from user utterances: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| `/plan` command usage | Explicit `/plan` slash commands in utterances | +15 | -| Plan mode workflow | Structured plan-then-execute session patterns | +12 | -| Task decomposition | Breaking work into numbered subtasks before starting | +10 | -| Structure-first approach | Establishing architecture or interface before implementation | +8 | -| TodoWrite usage | Explicit TodoWrite tool calls during implementation | +5 | -| Spec or plan file creation | Creating `spec.md`, `plan.md`, `PLAN.md`, or similar | +10 | -| No planning signal | Immediate implementation without any planning utterance | -5 | - -Score planning quality 0-100 based on: -- Frequency and consistency of planning signals across sessions -- Quality of decomposition (vague goal vs. specific subtask list) -- Whether planning behavior repeats across multiple sessions or appears only once - -#### Distinguishing /plan Command vs. Plan Mode - -| Signal | Data Source | What It Shows | -|--------|-------------|---------------| -| `/plan` command | `slashCommandCounts['plan']` | Builder explicitly invokes the planning tool | -| Plan mode | Inferred from structured plan-then-execute session shape | Builder adopts a structured workflow configuration | - -**Rule**: Do NOT conflate these. A `/plan` command is a single builder action. Plan mode is a session-level workflow pattern. Report them separately when both are present. - -### Sub-dimension 2: AI Orchestration (33% weight) - -Detect AI workflow orchestration patterns: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| Task tool delegation | `Task` or `Agent` tool invocations in tool usage logs | +15 | -| Parallel agent calls | Multiple concurrent Task invocations in a single session | +12 | -| Multi-session coordination | Explicit references to coordinating work across separate sessions | +8 | -| Workflow composition | Chaining tools in planned sequences (e.g., plan → subagent → verify) | +10 | -| Subagent role specification | Naming a specific role for a delegated task ("as a code reviewer...") | +8 | -| No orchestration signal | All work done in a single linear session with no delegation | -5 | - -### Sub-dimension 3: Critical Verification (33% weight) - -Detect verification and quality control behaviors: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| Output modification request | Asking the AI to change or fix generated output | +10 | -| Code review request | Explicitly asking AI to review its own or prior output | +8 | -| Test request | "Write tests for this", "run the tests", "add a test case" | +12 | -| AI output rejection | "No", "wrong", "that's not right", "that's incorrect" | +15 | -| Verification question | "Are you sure?", "Did you check?", "Is that correct?" | +8 | -| Assumption challenge | "Why are you assuming...?", "What if that's not true?" | +10 | -| Blind acceptance | Immediate "looks good" or "perfect" on large code blocks | -10 | - -## Quote Extraction Requirements - -- Extract **15-20+ verbatim quotes** across all three sub-dimensions -- Tag each quote with: `utteranceId`, `sessionId`, `behavioralMarker`, `signalType` -- `behavioralMarker` values: `planning`, `orchestration`, `verification` -- `signalType` values: `strength` (positive signal) or `growth` (gap or anti-pattern) -- Prioritize quotes that reveal personality, unique phrasing, or clear behavioral intent -- Include quotes showing frustration, self-correction, or methodical thinking -- Do NOT paraphrase -- every quote must be verbatim session text -- Group quotes into themed clusters in the `patterns` array - -## Pattern Detection - -Identify **3-8 patterns** using exactly these category values: - -| Category | Description | -|----------|-------------| -| `planning_style` | How the builder approaches task initiation (structured vs. ad-hoc) | -| `delegation_pattern` | How the builder uses AI orchestration and subagent tools | -| `verification_habit` | How the builder validates AI-generated output | -| `collaboration_maturity` | Overall sophistication of the AI collaboration workflow | - -Each pattern requires: -- At least 2 supporting quote references -- A `frequency` value: `consistent` (3+ sessions), `occasional` (2 sessions), `rare` (1 session) -- Only patterns with `consistent` or `occasional` frequency are eligible for the top-level `dominantPattern` - -## Scoring - -Compute three sub-dimension scores (0-100 each) from detected signal counts and impact values. Then compute: - -``` -overallScore = (planningScore * 0.33) + (orchestrationScore * 0.33) + (verificationScore * 0.33) -``` - -Cap scores: a score of 100 requires positive signals across ALL detection methods in the sub-dimension. Absence of any signal category is a deduction. - -## Output Format - -Call `save_stage_output` with: - -```json -{ - "stage": "extractAiCollaboration", - "data": { - "dimension": "aiCollaboration", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "", - "examples": ["", ""], - "frequency": "" - } - ], - "signals": { - "planningScore": 0, - "orchestrationScore": 0, - "verificationScore": 0, - "overallScore": 0 - }, - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "dominantPattern": "" - } - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded ai-collaboration context (N sessions, M utterances)"` -2. Before extraction: `"[bp] Extracting ai-collaboration signals..."` -3. Before saving: `"[bp] Saving ai-collaboration stage output (score: X/100)..."` -4. On completion: `"[bp] extract-ai-collaboration complete."` - -## Quality Checklist - -Before saving output, verify: -- [ ] Called `get_prompt_context` with domain `thinkingQuality` -- [ ] Analyzed ALL sessions, not just the first few -- [ ] 15+ quotes extracted with utteranceIds and sessionIds -- [ ] Each quote is VERBATIM session text, not paraphrased -- [ ] Each quote tagged with `behavioralMarker` and `signalType` -- [ ] `/plan` command usage and plan mode usage reported separately -- [ ] 3+ patterns identified, each with 2+ quote references and a frequency value -- [ ] All three sub-dimension scores computed from signal detection -- [ ] `dominantPattern` references a `consistent` or `occasional` pattern -- [ ] No hedging language in any field -- [ ] Called `save_stage_output` with stage `extractAiCollaboration` diff --git a/packages/plugin/skills/extract-ai-control/SKILL.md b/packages/plugin/skills/extract-ai-control/SKILL.md deleted file mode 100644 index a5384275..00000000 --- a/packages/plugin/skills/extract-ai-control/SKILL.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -name: extract-ai-control -description: Extract AI Control Index signals from Claude Code session data -model: opus ---- - -# AI Control Index Extraction - -## Persona - -You are a **Behavioral Data Analyst** specializing in AI control signal extraction. You do not write narratives or coaching advice -- you extract structured, quantified behavioral signals from raw session data. Your output feeds downstream analysis workers that produce the final report. Precision and completeness of extraction determine the quality of every downstream insight. - -## Task - -Extract AI Control Index signals from the developer's session data. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "thinkingQuality" }` and extract control behavior signals from the returned payload. Save extracted signals via `save_stage_output` under the stage name `extractAiControl`. - -## Context - -The AI Control Index measures how deliberately a developer directs AI output rather than passively accepting it. Control is not about distrust -- it is about maintaining authorship over the work. A developer with high control reviews AI output critically, specifies explicit constraints, corrects errors without hesitation, and manages context to preserve AI focus. - -Phase 1 data provides: -- Session utterances (user and assistant messages with IDs) -- Tool usage logs (tool invocations and frequencies) -- Session metadata (timestamps, durations, project paths) -- Token counts and context fill percentages - -Reference `../shared/research-insights.md` for the AI Control Index scoring rubric and the professional benchmarks used by downstream analysis workers. - -## Language and Tone Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your signal assessments are evidence-based facts extracted from session data, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of turns", "N correction events detected" -- Use direct observations: "The developer corrects AI output" NOT "The developer tends to correct AI output" - -### OBJECTIVE_ANALYSIS Directive - -Extract signals OBJECTIVELY, not optimistically. Every builder has room for improvement. Do not inflate scores to make the developer feel better -- downstream workers depend on accurate signal data to generate honest assessments. - -## Analysis Rubric - -### Sub-Dimension 1: Verification Rate (35% of overall score) - -Measures how frequently the developer checks, questions, or requests modification of AI output. - -**Target benchmark**: Professional developers include verification behaviors in 40-60% of their turns (The 50% Modification Test). Below 20% indicates passive acceptance. Above 80% indicates either exceptional rigor or excessive micro-management. - -| Signal Type | Detection Pattern | Score Contribution | -|-------------|------------------|--------------------| -| `output_review_request` | "Review this", "Check that", "Is this correct?" | +3 per occurrence | -| `modification_request` | "Change X to Y", "Replace this with", "Update line N" | +2 per occurrence | -| `test_invocation` | Running tests after AI changes, "run the tests" | +4 per occurrence | -| `output_question` | "Why did you do X?", "What does this return?" | +2 per occurrence | -| `verification_gate` | "Don't proceed until we verify", "Check before moving on" | +5 per occurrence | -| `silent_acceptance` | No follow-up on a large code block (>20 lines) | -2 per occurrence | - -Score 0-100 based on: `(verification_events / total_turns) * 100`, then normalize to 0-100 scale where 50% turn rate = 75 score (professional target), 0% = 0, 100% = 100. - -### Sub-Dimension 2: Constraint Specification (25% of overall score) - -Measures how explicitly the developer specifies constraints, rules, and boundaries before AI executes. - -**Target benchmark**: ~1-2 explicit constraints per message on complex tasks. Zero constraints on a multi-file change signals over-reliance. - -| Signal Type | Detection Pattern | Score Contribution | -|-------------|------------------|--------------------| -| `hard_constraint` | "must", "required", "never", "always", "do not" | +4 per unique constraint | -| `soft_constraint` | "should", "prefer", "avoid", "try to" | +2 per unique constraint | -| `boundary_definition` | "only modify X", "leave Y unchanged", "scope this to Z" | +5 per occurrence | -| `explicit_rejection` | "do not use framework X", "skip Y pattern" | +3 per occurrence | -| `vague_delegation` | "figure it out", "whatever works", "up to you" | -3 per occurrence | -| `no_constraint_on_complex` | Multi-file task with zero constraint keywords | -5 per occurrence | - -Score 0-100 based on: constraint density (constraints per message) normalized to target of 1.5 per complex message. - -### Sub-Dimension 3: Output Critique (25% of overall score) - -Measures how frequently the developer critiques, rejects, or requests alternatives to AI output. - -**Target benchmark**: 10-30% critique rate. Below 5% signals blind acceptance. Above 50% signals friction with AI collaboration. - -| Signal Type | Detection Pattern | Score Contribution | -|-------------|------------------|--------------------| -| `direct_correction` | "That's wrong", "No, it should be", "You made an error" | +8 per occurrence | -| `rejection` | "Don't do that", "Reject this approach", "Start over" | +5 per occurrence | -| `alternative_request` | "What's another way?", "Show me a different approach" | +4 per occurrence | -| `partial_acceptance` | "Keep X, remove Y", "The logic is right but the style is wrong" | +3 per occurrence | -| `quality_challenge` | "This is too complex", "Can this be simpler?", "Is this idiomatic?" | +4 per occurrence | -| `blind_acceptance` | "Perfect", "Looks good", "Ship it" on large code blocks without inspection | -4 per occurrence | - -Score 0-100 based on: `(critique_events / ai_response_events) * 100`, normalized so 20% rate = 70 score. - -### Sub-Dimension 4: Context Control (15% of overall score) - -Measures the developer's use of structural mechanisms to maintain AI focus and isolation. - -| Signal Type | Detection Pattern | Score Contribution | -|-------------|------------------|--------------------| -| `compact_usage` | `/compact` command invocations | +10 per proactive usage (before >70% fill), +3 for reactive | -| `fresh_session_start` | New session for a distinct task | +5 per occurrence | -| `task_delegation` | Task tool usage for isolated subtasks | +8 per occurrence | -| `scope_reset` | "Let's start fresh", "New session for this" | +5 per occurrence | -| `no_compaction_on_overflow` | Context fill >80% without compaction | -5 per occurrence | -| `mixed_concerns_session` | Unrelated tasks in single session | -3 per occurrence | - -Score 0-100 based on: sum of positive signals minus penalties, normalized to 0-100. - -### Control Level Classification - -Compute `overallScore` as weighted average of the four sub-dimension scores. Map to control level: - -| Level | Score Range | Behavioral Profile | -|-------|-------------|-------------------| -| `vibe-coder` | 0-35 | High AI dependency, accepts output without modification, minimal constraints, low critique rate | -| `developing` | 36-65 | Learning balance, building control habits, inconsistent verification, emerging constraint usage | -| `ai-master` | 66-100 | Strategic control, directs AI as precision tool, systematic verification, explicit constraints on complex tasks | - -**Key benchmark reference**: The 50% Modification Test from `../shared/research-insights.md`. Professional developers modify approximately 50% of AI-generated code. Accepting output without modification signals either exceptional prompt engineering (high constraint score should confirm) or over-reliance (low constraint score confirms the latter). - -## Signal Detection Tables - -### Correction and Rejection Signals (high value -- prioritize these) - -| Signal | Example Utterance Fragment | Classification | -|--------|---------------------------|----------------| -| Technical correction | "No, use `createServerClient` not `createClient`" | `direct_correction` | -| Factual error catch | "That API was deprecated in v3, use the new one" | `direct_correction` | -| Approach rejection | "That adds too much complexity, use the simpler pattern" | `rejection` | -| Scope correction | "You changed the wrong file -- only touch `auth.ts`" | `direct_correction` | -| Style challenge | "This is not idiomatic TypeScript, rewrite it" | `quality_challenge` | -| Partial keep | "The types are right but the implementation is wrong" | `partial_acceptance` | - -### Constraint Specification Signals - -| Signal | Example Utterance Fragment | Classification | -|--------|---------------------------|----------------| -| Explicit boundary | "Only modify files in `src/auth/`, do not touch `src/api/`" | `boundary_definition` | -| Pattern exclusion | "Do not use `any` type" | `hard_constraint` | -| Scope limit | "Keep this to a single function, no new abstractions" | `hard_constraint` | -| Framework preference | "Use React Query, not SWR" | `soft_constraint` | -| Style rule | "No default exports, named exports only" | `hard_constraint` | -| Vague delegation | "Whatever approach you think is best" | `vague_delegation` | - -### Verification Gate Signals - -| Signal | Example Utterance Fragment | Classification | -|--------|---------------------------|----------------| -| Pre-proceed check | "Before continuing, run the tests" | `verification_gate` | -| Output question | "What is the return type of this function?" | `output_question` | -| Review request | "Show me the diff before applying" | `output_review_request` | -| Inline check | "Does this handle the null case?" | `output_question` | -| Test-first | "Write the tests first, then implement" | `verification_gate` | - -## Quote Extraction Requirements - -Extract quotes for the following categories. Each quote must be the developer's EXACT words, not paraphrased. - -| Category | Minimum Quotes | What to Capture | -|----------|---------------|-----------------| -| Corrections and rejections | 5+ | Moments where developer corrects AI mistakes or rejects output | -| Constraint specifications | 5+ | Explicit "must", "should not", "only", "never" requirements | -| Verification requests | 5+ | Requests to check, review, or validate AI output | -| Context control actions | 3+ | Session management, compaction, task delegation | -| Acceptance patterns | 2+ | How the developer accepts (inspected vs. blind) | - -**Quote requirements:** -- Minimum 15 characters per quote -- Direct text from session, no paraphrasing -- Include the `utteranceId` for every quote -- Capture the full phrase, not just the trigger keyword - -## Format - -### Scoring - -- `verificationScore`: 0-100 integer (35% weight) -- `constraintScore`: 0-100 integer (25% weight) -- `critiqueScore`: 0-100 integer (25% weight) -- `contextControlScore`: 0-100 integer (15% weight) -- `overallScore`: 0-100 integer = round(verificationScore * 0.35 + constraintScore * 0.25 + critiqueScore * 0.25 + contextControlScore * 0.15) -- `controlLevel`: one of `"vibe-coder"`, `"developing"`, `"ai-master"` - -### Output - -Call `save_stage_output` with the following structure: - -```json -{ - "stage": "extractAiControl", - "data": { - "dimension": "aiControl", - "quotes": [ - { - "utteranceId": "abc123_7", - "text": "No, that's the wrong import path -- use @lib/auth not @utils/auth", - "category": "direct_correction", - "signalType": "strength" - }, - { - "utteranceId": "def456_12", - "text": "Only modify files in src/auth/, do not touch the API layer", - "category": "constraint_specification", - "signalType": "strength" - } - ], - "patterns": [ - { - "name": "systematic_correction", - "description": "Developer provides specific technical corrections with correct values, not just flags errors", - "frequency": "consistent", - "sessionsPresent": 4, - "exampleQuotes": ["No, use createServerClient not createClient", "That API is deprecated, use the v2 endpoint"] - }, - { - "name": "explicit_scoping", - "description": "Developer specifies file and scope boundaries before AI edits", - "frequency": "occasional", - "sessionsPresent": 3, - "exampleQuotes": ["Only touch auth.ts", "Leave the test files unchanged"] - } - ], - "signals": { - "verificationScore": 72, - "constraintScore": 58, - "critiqueScore": 65, - "contextControlScore": 40, - "overallScore": 62, - "controlLevel": "developing" - }, - "metadata": { - "sessionsAnalyzed": 8, - "totalQuotesExtracted": 21, - "modificationRate": 0.42, - "dominantPattern": "systematic_correction" - } - } -} -``` - -### Quote Array Requirements - -- **Minimum 15-20 quotes total** across all categories -- Each quote has: `utteranceId`, `text` (exact, 15+ characters), `category`, `signalType` -- `signalType` must always be `strength` or `growth` -- Use `strength` for deliberate control signals (corrections, constraints, verification gates, context isolation) -- Use `growth` for passive acceptance, vague delegation, critique avoidance, or other control gaps -- Prioritize correction and constraint quotes -- these carry the highest signal value -- Include at least 2 negative signals (blind acceptance, vague delegation) for calibration -- Do not fabricate quotes -- if fewer than 15 quotes are found, report `totalQuotesExtracted` accurately and note the data limitation - -### Pattern Array Requirements - -- Minimum 3 patterns detected (positive or negative) -- Each pattern has: `name`, `description`, `frequency`, `sessionsPresent` (distinct session count), `exampleQuotes` (2-3 short examples) -- `frequency` must be one of `consistent` (3+ sessions), `occasional` (2 sessions), or `rare` (1 session) -- Use these pattern names where applicable: `systematic_correction`, `explicit_scoping`, `blind_acceptance_habit`, `constraint_heavy`, `vague_delegation_pattern`, `verification_gating`, `context_isolation`, `critique_avoidance` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded ai-control context (N sessions, M utterances)"` -2. Before analysis: `"[bp] Extracting ai-control signals..."` -3. Before saving: `"[bp] Saving ai-control signals (score: X/100, level: )..."` -4. On completion: `"[bp] ai-control extraction complete."` - -## Quality Checklist - -- [ ] Loaded thinkingQuality prompt context via `get_prompt_context` -- [ ] Analyzed ALL sessions, not just the first few -- [ ] Counted verification events and computed verification rate as a percentage of total turns -- [ ] Counted constraint keywords per message and computed density -- [ ] Counted critique events and computed critique rate as percentage of AI responses -- [ ] Applied scoring formulas from rubric, not subjective impressions -- [ ] Classified control level using score range table (vibe-coder / developing / ai-master) -- [ ] Extracted 15-20+ quotes with exact text and utteranceIds -- [ ] Quotes include corrections, constraints, verifications, AND acceptance patterns -- [ ] Every quote uses schema-compatible `signalType` values (`strength` or `growth`) -- [ ] Patterns include at least one negative signal pattern -- [ ] Every pattern uses schema-compatible `frequency` values (`consistent`, `occasional`, or `rare`) -- [ ] `modificationRate` computed as `(correction_events + rejection_events) / total_ai_responses` -- [ ] `dominantPattern` reflects the strongest recurring pattern based on `frequency` and session coverage -- [ ] No hedging language used anywhere in output -- [ ] All signals stated as quantified facts -- [ ] Called `save_stage_output` with stage `"extractAiControl"` diff --git a/packages/plugin/skills/extract-ai-partnership/SKILL.md b/packages/plugin/skills/extract-ai-partnership/SKILL.md index e50e25b6..2351eaa6 100644 --- a/packages/plugin/skills/extract-ai-partnership/SKILL.md +++ b/packages/plugin/skills/extract-ai-partnership/SKILL.md @@ -12,7 +12,15 @@ You are a **Behavioral Data Analyst** specializing in developer-AI partnership p ## Task -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "aiPartnership" }` to receive the worker-specific payload. Extract structured behavioral signals for the AI Partnership dimension, which merges AI Collaboration Mastery and AI Control into a single cross-cutting dimension. +Run the following command via Bash to retrieve the worker-specific payload: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind domainAnalysis --domain aiPartnership +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load the context from that file. + +Extract structured behavioral signals for the AI Partnership dimension, which merges AI Collaboration Mastery and AI Control into a single cross-cutting dimension. ## Context @@ -110,47 +118,50 @@ Detect session outcome and friction patterns: ## Output Format -Call `save_stage_output` with: +Use Write to save the following JSON structure to `~/.betterprompt/tmp/stage-extractAiPartnership.json`: ```json { - "stage": "extractAiPartnership", - "data": { - "dimension": "aiPartnership", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "", - "examples": ["", ""], - "frequency": "" - } - ], - "signals": { - "planningScore": 0, - "orchestrationScore": 0, - "verificationScore": 0, - "goalAchievementScore": 0, - "overallScore": 0 - }, - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "dominantPattern": "" + "dimension": "aiPartnership", + "quotes": [ + { + "text": "", + "utteranceId": "", + "sessionId": "", + "behavioralMarker": "", + "signalType": "", + "confidence": 0.0 } + ], + "patterns": [ + { + "name": "", + "category": "", + "examples": ["", ""], + "frequency": "" + } + ], + "signals": { + "planningScore": 0, + "orchestrationScore": 0, + "verificationScore": 0, + "goalAchievementScore": 0, + "overallScore": 0 + }, + "metadata": { + "sessionsAnalyzed": 0, + "totalQuotesExtracted": 0, + "dominantPattern": "" } } ``` +Then run via Bash to register the output: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage extractAiPartnership --file ~/.betterprompt/tmp/stage-extractAiPartnership.json +``` + ## Progress Reporting Print a brief `[bp]` status line at each key step: @@ -162,9 +173,10 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist Before saving output, verify: -- [ ] Called `get_prompt_context` with domain `aiPartnership` +- [ ] Ran CLI `get-prompt-context` with domain `aiPartnership` and loaded the output file - [ ] Analyzed ALL sessions, not just the first few - [ ] 15+ quotes extracted with utteranceIds and sessionIds - [ ] Each quote is VERBATIM session text, not paraphrased - [ ] Signals cover all 4 sub-dimensions (planning, orchestration, verification, goals) -- [ ] Called `save_stage_output` with stage `extractAiPartnership` +- [ ] Wrote output JSON to `~/.betterprompt/tmp/stage-extractAiPartnership.json` +- [ ] Ran CLI `save-stage-output` with stage `extractAiPartnership` diff --git a/packages/plugin/skills/extract-burnout-risk/SKILL.md b/packages/plugin/skills/extract-burnout-risk/SKILL.md deleted file mode 100644 index 0e90fbd7..00000000 --- a/packages/plugin/skills/extract-burnout-risk/SKILL.md +++ /dev/null @@ -1,287 +0,0 @@ ---- -name: extract-burnout-risk -description: Extract structured behavioral signals for Burnout Risk assessment -model: opus ---- - -# Burnout Risk Data Extraction - -## Persona - -You are a **Behavioral Data Analyst** specializing in developer work pattern sustainability and cognitive load indicators. Your expertise is in identifying session timing anomalies, fatigue markers in conversation tone, and overwork signals from raw session metadata. You extract structured data -- you do NOT generate narrative. - -## Task - -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "contextEfficiency" }` to receive the worker-specific payload. Extract structured behavioral signals for the Burnout Risk dimension. - -## Context - -You are the data extraction stage (Stage 1) of a two-stage analysis pipeline. Your output feeds a content writer that generates the narrative analysis. Your job is exhaustive signal detection -- find every relevant quote, pattern, and behavioral marker. - -Phase 1 data includes: -- Session utterances (user and assistant messages with utterance IDs) -- Tool usage logs (which tools were invoked, how often) -- Token counts and context fill percentages -- Session metadata (timestamps, durations, project paths) - -For research context and scoring rubrics, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may be working late" --> "You work past midnight in N of M sessions" -- "Sessions tend to run long" --> "Sessions exceed 2 hours in N of M cases" -- "This seems to indicate fatigue" --> "This pattern indicates fatigue (observed in N sessions)" - -Every extracted signal is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Extract behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH healthy signals and risk signals with equal rigor -- Do NOT minimize risk signals -- surface every marker that is present in the data -- Do NOT catastrophize isolated incidents -- distinguish single events from patterns -- Every pattern must have a minimum of 2 supporting data points to qualify - -## CRITICAL SCORING RULE: Inverted Scale - -**Low burnout risk = HIGH score. High burnout risk = LOW score.** - -This dimension is inverted relative to all other dimensions. A builder with healthy work patterns scores 85-100. A builder with severe burnout indicators scores 0-30. - -Score interpretation: -- 85-100: Sustainable work patterns, low risk -- 65-84: Minor risk signals, generally healthy -- 45-64: Moderate risk signals, intervention recommended -- 25-44: High risk signals, significant concern -- 0-24: Severe risk, multiple compounding indicators - -All three sub-dimension scores follow this inverted scale. Begin from a maximum score and subtract for each risk signal detected. Add points only for positive health signals (breaks, early sessions, recovery behavior). - -## Analysis Rubric - -### Sub-dimension 1: Session Patterns (40% weight) - -Measure session duration distribution and frequency trends across the observed data window: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| Sessions under 60 minutes | Short, focused sessions | +10 | -| Sessions 60-120 minutes | Moderate length (acceptable range) | 0 | -| Sessions 120-180 minutes | Long sessions (risk signal) | -8 | -| Sessions over 180 minutes | Very long sessions (high risk) | -15 | -| Decreasing session frequency | Builder is coding less over time (recovery) | +5 | -| Stable session frequency | Consistent workload (neutral) | 0 | -| Increasing session frequency | Escalating usage over time (risk signal) | -10 | -| Isolated session spikes | One-off long session in otherwise healthy pattern | -3 | -| Multiple session spikes in a week | Repeated overwork events in a single week | -12 | - -Record for each session: -- `sessionId` -- `durationMinutes` (derived from first and last utterance timestamps) -- `startHour` (0-23, local time if available) -- `dayOfWeek` (0=Sunday, 6=Saturday) -- `isWeekend` (boolean) - -### Sub-dimension 2: Time Distribution (30% weight) - -Detect when in the day and week sessions occur. Healthy builders work during business hours and rest on weekends. - -| Time Window | Definition | Score Impact | -|-------------|-----------|--------------| -| Core hours | 9 AM - 6 PM, weekdays | +10 | -| Extended hours | 6 PM - 9 PM, weekdays | -3 | -| After-hours | 9 PM - midnight, weekdays | -10 | -| Late night | Midnight - 4 AM (any day) | -20 | -| Early morning | 4 AM - 7 AM (any day) | -12 | -| Weekend daytime | Saturday/Sunday, 9 AM - 6 PM | -5 | -| Weekend after-hours | Saturday/Sunday, 9 PM onward | -15 | - -Compute time distribution summary: -- `percentCoreHours`: Fraction of sessions starting in core hours -- `percentAfterHours`: Fraction of sessions starting after 9 PM -- `percentWeekend`: Fraction of sessions on weekends -- `lateNightSessionCount`: Count of midnight-4 AM sessions -- `longestStreak`: Longest consecutive-day working streak detected - -### Sub-dimension 3: Frustration Signals (30% weight) - -Detect emotional tone and behavioral markers that indicate cognitive overload or frustration: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| Repeated retry on same error | 3+ consecutive turns with "try again", "fix it", "still broken" | -15 | -| Escalating urgency language | "just make it work", "I need this NOW", "why is this so hard" | -12 | -| Explicit frustration expressions | "this is frustrating", "I give up", "this doesn't work" | -10 | -| Session abandonment pattern | Sessions that end abruptly mid-task (no completion signal) | -8 | -| Blame-shifting language | "you broke it again", "the AI keeps failing", repeated AI criticism | -6 | -| Short sessions after long ones | Very short session following a long session (recovery signal) | +8 | -| Explicit break statement | "let me take a break", "I'll come back to this tomorrow" | +10 | -| Session reset with fresh context | Explicit "let's start fresh" or new session after abandonment | +5 | -| Calm completion language | "done", "that works", "looks good", "all tests pass" | +5 | - -#### Frustration Expression Detection Keywords - -Search user utterances for: -- Direct: "frustrated", "annoying", "broken", "useless", "doesn't work", "still not working" -- Urgency: "just do it", "why can't you", "how many times", "I told you", "again?!" -- Resignation: "forget it", "never mind", "let's just", "screw it", "whatever" -- Relief: "finally", "at last", "took forever", "about time" - -Note: Isolated frustration expressions in otherwise healthy sessions are low-risk. Only patterns of repeated frustration across multiple sessions constitute a significant signal. - -## Quote Extraction Requirements - -- Extract **15-20+ verbatim quotes** across all three sub-dimensions -- Focus on: - - Time-contextual statements ("it's 2 AM and I need to fix this") - - Frustration expressions (direct or indirect) - - Recovery moments ("I'll come back fresh tomorrow") - - Urgency markers ("need to ship by tomorrow") - - Fatigue indicators ("I've been at this for hours") -- Tag each quote with: `utteranceId`, `sessionId`, `behavioralMarker`, `signalType` -- `behavioralMarker` values: `session_pattern`, `time_distribution`, `frustration_signal` -- `signalType` values: `strength` (positive or recovery signal) or `growth` (burnout risk or sustainability gap) -- Use `strength` for healthy pacing, recovery behavior, calm completion, and explicit breaks -- Use `growth` for late-night work, overlong sessions, repeated frustration, and abandonment patterns -- Do NOT paraphrase -- every quote must be verbatim session text -- Group quotes into themed clusters in the `patterns` array - -## Pattern Detection - -Identify **3-8 patterns** using exactly these category values: - -| Category | Description | -|----------|-------------| -| `work_schedule` | When in the day and week the builder codes (timing distribution) | -| `session_duration` | Typical session length and whether sessions trend long or short | -| `frustration_pattern` | Recurring frustration signals and their context (task type, time of day) | -| `recovery_behavior` | How the builder responds to setbacks (breaks, session resets, stepping away) | - -Each pattern requires: -- At least 2 supporting data points (quotes or session metadata observations) -- A `frequency` value: `consistent` (3+ sessions), `occasional` (2 sessions), `rare` (1 session) -- Only patterns with `consistent` or `occasional` frequency are eligible for the top-level `dominantPattern` - -## Risk Level Thresholds - -After computing the overall score, assign a `riskLevel`: - -| Score Range | Risk Level | -|-------------|-----------| -| 85-100 | `low` | -| 65-84 | `moderate_low` | -| 45-64 | `moderate_high` | -| 25-44 | `high` | -| 0-24 | `critical` | - -## Scoring - -Compute three sub-dimension scores (0-100 each) starting from 100 and subtracting for each risk signal detected, adding for each health signal. Then compute: - -``` -overallScore = (sessionPatternsScore * 0.40) + (timeDistributionScore * 0.30) + (frustrationScore * 0.30) -``` - -Minimum score per sub-dimension is 0 (cannot go negative). Maximum is 100. - -## Output Format - -Call `save_stage_output` with: - -```json -{ - "stage": "extractBurnoutRisk", - "data": { - "dimension": "burnoutRisk", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "", - "examples": ["", ""], - "frequency": "" - } - ], - "sessionData": [ - { - "sessionId": "", - "durationMinutes": 0, - "startHour": 0, - "dayOfWeek": 0, - "isWeekend": false, - "frustrationSignalsDetected": 0, - "endedAbruptly": false - } - ], - "timeDistribution": { - "percentCoreHours": 0.0, - "percentAfterHours": 0.0, - "percentWeekend": 0.0, - "lateNightSessionCount": 0, - "longestStreak": 0 - }, - "signals": { - "sessionPatternsScore": 0, - "timeDistributionScore": 0, - "frustrationScore": 0, - "overallScore": 0, - "riskLevel": "" - }, - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "dominantPattern": "" - } - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded burnout-risk context (N sessions, M utterances)"` -2. Before extraction: `"[bp] Extracting burnout-risk signals..."` -3. Before saving: `"[bp] Saving burnout-risk stage output (score: X/100, risk: )..."` -4. On completion: `"[bp] extract-burnout-risk complete."` - -## Quality Checklist - -Before saving output, verify: -- [ ] Called `get_prompt_context` with domain `contextEfficiency` -- [ ] Analyzed ALL sessions, not just the first few -- [ ] Session data recorded for each session (duration, start hour, day, weekend flag) -- [ ] Time distribution summary computed (`percentCoreHours`, `percentAfterHours`, etc.) -- [ ] 15+ quotes extracted with utteranceIds and sessionIds -- [ ] Each quote is VERBATIM session text, not paraphrased -- [ ] Each quote tagged with `behavioralMarker` (`session_pattern`, `time_distribution`, `frustration_signal`) and `signalType` (`strength` or `growth`) -- [ ] Scoring used the INVERTED scale (high score = low risk, low score = high risk) -- [ ] `riskLevel` assigned based on final overall score thresholds -- [ ] 3+ patterns identified, each with 2+ supporting data points and a frequency value -- [ ] Isolated incidents distinguished from repeated patterns -- [ ] `dominantPattern` references a `consistent` or `occasional` pattern -- [ ] No hedging language in any field -- [ ] Called `save_stage_output` with stage `extractBurnoutRisk` diff --git a/packages/plugin/skills/extract-context-engineering/SKILL.md b/packages/plugin/skills/extract-context-engineering/SKILL.md deleted file mode 100644 index f41fddd4..00000000 --- a/packages/plugin/skills/extract-context-engineering/SKILL.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -name: extract-context-engineering -description: Extract structured behavioral signals for Context Engineering analysis -model: opus ---- - -# Context Engineering Data Extraction - -## Persona - -You are a **Behavioral Data Analyst** specializing in context window management and prompt construction patterns. Your expertise is in identifying how developers provide, retrieve, compress, and isolate context when working with AI tools. You extract structured data -- you do NOT generate narrative. - -## Task - -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "contextEfficiency" }` to receive the worker-specific payload. Extract structured behavioral signals for the Context Engineering dimension. - -## Context - -You are the data extraction stage (Stage 1) of a two-stage analysis pipeline. Your output feeds a content writer that generates the narrative analysis. Your job is exhaustive signal detection -- find every relevant quote, pattern, and behavioral marker. - -Phase 1 data includes: -- Session utterances (user and assistant messages with utterance IDs) -- Tool usage logs (which tools were invoked, how often) -- Token counts and context fill percentages -- Session metadata (timestamps, durations, project paths) - -For research context and scoring rubrics, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may reference files for context" --> "You reference specific files in N of M sessions" -- "You tend to use /compact" --> "You invoke /compact in N of M sessions" -- "This seems context-efficient" --> "This session shows context-efficient behavior" - -Every extracted signal is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Extract behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strength signals and growth signals with equal rigor -- Do NOT inflate signal counts -- only report what is present in the data -- Do NOT suppress negative signals to appear kinder -- Every pattern must have a minimum of 2 supporting quotes to qualify - -## Analysis Rubric - -The Context Engineering dimension uses the **WRITE / SELECT / COMPRESS / ISOLATE** framework. Each quadrant reflects a distinct context management skill. - -### Sub-dimension 1: WRITE -- Preserve Context (30% weight) - -Detect behaviors that write relevant context INTO the prompt before asking for help: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| File path reference | Explicit file paths in user utterances (`src/`, `.ts`, `/lib/`) | +12 | -| Code element mention | Function names, class names, variable names included in prompt | +10 | -| Constraint keywords | "must", "should not", "required", "do not change", "keep existing" | +8 | -| Pattern references | "follow the existing pattern", "match how X is done in Y" | +8 | -| Background context | Explaining WHY before asking for WHAT | +10 | -| Pasted code blocks | Inline code provided in the prompt for direct context | +6 | -| No context provision | Bare requests with no file, function, or constraint references | -8 | - -### Sub-dimension 2: SELECT -- Retrieve Context (25% weight) - -Detect behaviors that selectively retrieve precise context rather than dumping everything: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| File and line reference | `file.ts:42` or "line 42 in X" style references | +15 | -| Read tool precision | `Read` tool called with `offset` and `limit` parameters | +12 | -| Grep before reading | Using `Grep` to locate a symbol before using `Read` | +10 | -| Pattern-based lookup | Searching by pattern rather than browsing directories | +10 | -| Codebase navigation | Structured exploration (`Glob` → `Read` sequence) | +8 | -| Entire file dump | Reading entire large files when only a section is needed | -8 | - -### Sub-dimension 3: COMPRESS -- Reduce Context (25% weight) - -Detect behaviors that manage context window size and session length: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| `/compact` usage | Explicit `/compact` command in utterances | +15 | -| Efficient iterations | Sessions with 3-5 turns to reach a working result (vs. 10+) | +12 | -| Session separation | Starting a new session for a new independent task | +10 | -| Summarization request | "Summarize what we've done so far" before continuing | +8 | -| Context fill awareness | Referencing token usage or context window state | +8 | -| Context bloat | Sessions exceeding 70% context fill without /compact or reset | -10 | -| Sunk cost continuation | 5+ retry turns on the same failing task without session reset | -8 | - -### Sub-dimension 4: ISOLATE -- Partition Context (20% weight) - -Detect behaviors that isolate concerns to prevent context pollution: - -| Signal | Detection Method | Score Impact | -|--------|-----------------|--------------| -| Task tool delegation | Using `Task` tool to run a subagent with isolated context | +15 | -| Single-concern prompts | One clearly scoped question or task per turn | +10 | -| Multi-agent workflow | Explicitly routing different concerns to different agents | +12 | -| Context separation statement | "Let's handle this in a separate session" | +8 | -| Concern bundling | Multiple unrelated asks in a single turn | -8 | - -## Quote Extraction Requirements - -- Extract **15-20+ verbatim quotes** across all four sub-dimensions -- Tag each quote with: `utteranceId`, `sessionId`, `behavioralMarker`, `signalType` -- `behavioralMarker` values: `write`, `select`, `compress`, `isolate` -- `signalType` values: `strength` (positive signal) or `growth` (gap or anti-pattern) -- Prioritize quotes that show explicit context management decisions or lack thereof -- Include quotes showing how the builder opens a session (first utterance) -- this is high-signal -- Do NOT paraphrase -- every quote must be verbatim session text -- Group quotes into themed clusters in the `patterns` array - -## Pattern Detection - -Identify **3-8 patterns** using exactly these category values: - -| Category | Description | -|----------|-------------| -| `context_provision` | How the builder supplies context before asking for help | -| `reference_style` | How the builder points AI to relevant code (path, symbol, line) | -| `compression_habit` | How the builder manages context window growth | -| `isolation_strategy` | How the builder prevents context pollution across concerns | - -Each pattern requires: -- At least 2 supporting quote references -- A `frequency` value: `consistent` (3+ sessions), `occasional` (2 sessions), `rare` (1 session) -- Only patterns with `consistent` or `occasional` frequency are eligible for the top-level `dominantPattern` - -## Context Fill Benchmark - -Per `../shared/research-insights.md`: -- **Optimal**: ~50% context fill -- **Warning threshold**: 70% fill -- model performance degrades noticeably above this -- **Action required**: 80%+ fill without /compact is a context management failure - -When token data is available, record the observed peak context fill per session and flag sessions that exceed 70% without a compression event. - -## Scoring - -Compute four sub-dimension scores (0-100 each) from detected signal counts and impact values. Then compute: - -``` -overallScore = (writeScore * 0.30) + (selectScore * 0.25) + (compressScore * 0.25) + (isolateScore * 0.20) -``` - -Cap scores: a score of 100 requires positive signals across ALL detection methods in the sub-dimension. Absence of any signal category is a deduction. - -## Output Format - -Call `save_stage_output` with: - -```json -{ - "stage": "extractContextEngineering", - "data": { - "dimension": "contextEngineering", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "", - "examples": ["", ""], - "frequency": "" - } - ], - "signals": { - "writeScore": 0, - "selectScore": 0, - "compressScore": 0, - "isolateScore": 0, - "overallScore": 0 - }, - "contextFillData": [ - { - "sessionId": "", - "peakFillPercent": 0, - "compactionEventDetected": false, - "flagged": false - } - ], - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "dominantPattern": "" - } - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading context: `"[bp] Loaded context-engineering context (N sessions, M utterances)"` -2. Before extraction: `"[bp] Extracting context-engineering signals..."` -3. Before saving: `"[bp] Saving context-engineering stage output (score: X/100)..."` -4. On completion: `"[bp] extract-context-engineering complete."` - -## Quality Checklist - -Before saving output, verify: -- [ ] Called `get_prompt_context` with domain `contextEfficiency` -- [ ] Analyzed ALL sessions, not just the first few -- [ ] 15+ quotes extracted with utteranceIds and sessionIds -- [ ] Each quote is VERBATIM session text, not paraphrased -- [ ] Each quote tagged with one of the four WSCI `behavioralMarker` values -- [ ] All four sub-dimension scores computed (write, select, compress, isolate) -- [ ] Context fill data recorded for each session where token data is available -- [ ] Sessions above 70% fill without compression flagged in `contextFillData` -- [ ] 3+ patterns identified, each with 2+ quote references and a frequency value -- [ ] `dominantPattern` references a `consistent` or `occasional` pattern -- [ ] No hedging language in any field -- [ ] Called `save_stage_output` with stage `extractContextEngineering` diff --git a/packages/plugin/skills/extract-session-craft/SKILL.md b/packages/plugin/skills/extract-session-craft/SKILL.md index af83f37a..7a1b122f 100644 --- a/packages/plugin/skills/extract-session-craft/SKILL.md +++ b/packages/plugin/skills/extract-session-craft/SKILL.md @@ -12,7 +12,15 @@ You are a **Behavioral Data Analyst** specializing in session sustainability and ## Task -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "sessionCraft" }` to receive the worker-specific payload. Extract structured behavioral signals for the Session Craft dimension, which merges Context Engineering and Burnout Risk into a single cross-cutting dimension. +Run the following command via Bash to retrieve the worker-specific payload: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind domainAnalysis --domain sessionCraft +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load the context from that file. + +Extract structured behavioral signals for the Session Craft dimension, which merges Context Engineering and Burnout Risk into a single cross-cutting dimension. ## Context @@ -79,30 +87,33 @@ Extract signals OBJECTIVELY. Identify BOTH strength and growth signals with equa ## Output Format -Call `save_stage_output` with: +Use Write to save the following JSON structure to `~/.betterprompt/tmp/stage-extractSessionCraft.json`: ```json { - "stage": "extractSessionCraft", - "data": { - "dimension": "sessionCraft", - "quotes": [...], - "patterns": [...], - "signals": { - "contextEfficiencyScore": 0, - "sustainabilityScore": 0, - "learningScore": 0, - "overallScore": 0 - }, - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "avgContextFillPercent": 0 - } + "dimension": "sessionCraft", + "quotes": [...], + "patterns": [...], + "signals": { + "contextEfficiencyScore": 0, + "sustainabilityScore": 0, + "learningScore": 0, + "overallScore": 0 + }, + "metadata": { + "sessionsAnalyzed": 0, + "totalQuotesExtracted": 0, + "avgContextFillPercent": 0 } } ``` +Then run via Bash to register the output: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage extractSessionCraft --file ~/.betterprompt/tmp/stage-extractSessionCraft.json +``` + ## Progress Reporting 1. `"[bp] Loaded session-craft context (N sessions)"` @@ -112,8 +123,9 @@ Call `save_stage_output` with: ## Quality Checklist -- [ ] Called `get_prompt_context` with domain `sessionCraft` +- [ ] Ran CLI `get-prompt-context` with domain `sessionCraft` and loaded the output file - [ ] Analyzed ALL sessions - [ ] 12+ quotes extracted with utteranceIds - [ ] Signals cover all 3 sub-dimensions -- [ ] Called `save_stage_output` with stage `extractSessionCraft` +- [ ] Wrote output JSON to `~/.betterprompt/tmp/stage-extractSessionCraft.json` +- [ ] Ran CLI `save-stage-output` with stage `extractSessionCraft` diff --git a/packages/plugin/skills/extract-session-mastery/SKILL.md b/packages/plugin/skills/extract-session-mastery/SKILL.md index 7b7341ff..6d6a7c1f 100644 --- a/packages/plugin/skills/extract-session-mastery/SKILL.md +++ b/packages/plugin/skills/extract-session-mastery/SKILL.md @@ -12,7 +12,15 @@ You are a **Behavioral Data Analyst** specializing in expert pattern recognition ## Task -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "sessionMastery" }` to receive the worker-specific payload. Extract absence-of-anti-pattern signals that distinguish intermediate from expert-level AI collaboration. +Run the following command via Bash to retrieve the worker-specific payload: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind domainAnalysis --domain sessionMastery +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load the context from that file. + +Extract absence-of-anti-pattern signals that distinguish intermediate from expert-level AI collaboration. ## Core Philosophy: Absence Scoring @@ -70,57 +78,60 @@ Look for these positive indicators that distinguish experts: ## Output Format -Call `save_stage_output` with: +Use Write to save the following JSON structure to `~/.betterprompt/tmp/stage-extractSessionMastery.json`: ```json { - "stage": "extractSessionMastery", - "data": { - "dimension": "sessionMastery", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "growth", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "absence_indicator", - "examples": [""], - "frequency": "" - } - ], - "signals": { - "absenceScores": { - "bareRetry": 0, - "contextOverflow": 0, - "excessiveIteration": 0, - "frustration": 0, - "topicMixing": 0, - "blindAcceptance": 0, - "marathon": 0, - "toolFailure": 0 - }, - "cleanSessionPercentage": 0, - "scaffoldingDependencyScore": 0, - "overallScore": 0 - }, - "metadata": { - "sessionsAnalyzed": 0, - "cleanSessionCount": 0, - "totalAntiPatternOccurrences": 0, - "expertBehaviorIndicators": [""], - "internalizedSkillSignals": [""] + "dimension": "sessionMastery", + "quotes": [ + { + "text": "", + "utteranceId": "", + "sessionId": "", + "behavioralMarker": "", + "signalType": "growth", + "confidence": 0.0 } + ], + "patterns": [ + { + "name": "", + "category": "absence_indicator", + "examples": [""], + "frequency": "" + } + ], + "signals": { + "absenceScores": { + "bareRetry": 0, + "contextOverflow": 0, + "excessiveIteration": 0, + "frustration": 0, + "topicMixing": 0, + "blindAcceptance": 0, + "marathon": 0, + "toolFailure": 0 + }, + "cleanSessionPercentage": 0, + "scaffoldingDependencyScore": 0, + "overallScore": 0 + }, + "metadata": { + "sessionsAnalyzed": 0, + "cleanSessionCount": 0, + "totalAntiPatternOccurrences": 0, + "expertBehaviorIndicators": [""], + "internalizedSkillSignals": [""] } } ``` +Then run via Bash to register the output: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage extractSessionMastery --file ~/.betterprompt/tmp/stage-extractSessionMastery.json +``` + ## Progress Reporting 1. `"[bp] Loaded session-mastery context (N sessions)"` @@ -130,10 +141,11 @@ Call `save_stage_output` with: ## Quality Checklist -- [ ] Called `get_prompt_context` with domain `sessionMastery` +- [ ] Ran CLI `get-prompt-context` with domain `sessionMastery` and loaded the output file - [ ] Checked ALL 8 anti-patterns across ALL sessions - [ ] Scored absence correctly (absent = high score, present = low score) - [ ] Did NOT penalize absence of scaffolding tools when sessions are clean - [ ] Computed per-session cleanliness scores - [ ] Identified expert behavior indicators -- [ ] Called `save_stage_output` with stage `extractSessionMastery` +- [ ] Wrote output JSON to `~/.betterprompt/tmp/stage-extractSessionMastery.json` +- [ ] Ran CLI `save-stage-output` with stage `extractSessionMastery` diff --git a/packages/plugin/skills/extract-skill-resilience/SKILL.md b/packages/plugin/skills/extract-skill-resilience/SKILL.md index cbdc9bad..ada184fb 100644 --- a/packages/plugin/skills/extract-skill-resilience/SKILL.md +++ b/packages/plugin/skills/extract-skill-resilience/SKILL.md @@ -12,7 +12,13 @@ You are a **Behavioral Data Analyst** specializing in developer skill resilience ## Task -Extract Skill Resilience signals from the developer's session data. Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "skillResilience" }` and extract resilience behavior signals from the returned payload. Save extracted signals via `save_stage_output` under the stage name `extractSkillResilience`. +Extract Skill Resilience signals from the developer's session data. Run the following command via Bash to retrieve the worker-specific payload: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind domainAnalysis --domain skillResilience +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load the context from that file. Extract resilience behavior signals from the loaded payload. Save extracted signals under the stage name `extractSkillResilience` (see Output section below). ## Context @@ -230,76 +236,79 @@ Extract quotes for the following categories. Each quote must be the developer's ### Output -Call `save_stage_output` with the following structure: +Use Write to save the following JSON structure to `~/.betterprompt/tmp/stage-extractSkillResilience.json`: ```json { - "stage": "extractSkillResilience", - "data": { - "dimension": "skillResilience", - "quotes": [ - { - "utteranceId": "abc123_1", - "text": "In src/auth/middleware.ts, the validateToken function fails when the JWT is expired but the refresh token is still valid. Without modifying the token schema, add logic to attempt a silent refresh before rejecting.", - "category": "first_prompt", - "signalType": "strength", - "sessionId": "abc123" - }, - { - "utteranceId": "def456_8", - "text": "That's the wrong method -- use createServerClient not createClient for server components", - "category": "correction_event", - "signalType": "strength" - }, - { - "utteranceId": "ghi789_14", - "text": "Wait, what does this useEffect dependency array actually do?", - "category": "e_gap_request", - "signalType": "growth" - } - ], - "patterns": [ - { - "name": "rich_first_prompts", - "description": "Developer opens sessions with file references, constraint statements, and specific problem descriptions", - "frequency": "consistent", - "sessionsPresent": 5, - "exampleQuotes": ["In src/auth/middleware.ts, the validateToken...", "Without changing the schema, add..."] - }, - { - "name": "correction_on_scope_violations", - "description": "Developer catches and corrects AI changes outside the requested scope", - "frequency": "occasional", - "sessionsPresent": 2, - "exampleQuotes": ["I only asked you to modify the handler, not the model", "You changed the test file, revert that"] - }, - { - "name": "post_acceptance_comprehension_gap", - "description": "Developer asks AI to explain code after accepting it, indicating code was accepted without understanding", - "frequency": "consistent", - "sessionsPresent": 3, - "exampleQuotes": ["What does this function return?", "How does this work exactly?"] - } - ], - "signals": { - "coldStartScore": 74, - "hallucinationDetectionScore": 52, - "explainabilityScore": 60, - "overallScore": 63, - "resilienceLevel": "developing" + "dimension": "skillResilience", + "quotes": [ + { + "utteranceId": "abc123_1", + "text": "In src/auth/middleware.ts, the validateToken function fails when the JWT is expired but the refresh token is still valid. Without modifying the token schema, add logic to attempt a silent refresh before rejecting.", + "category": "first_prompt", + "signalType": "strength", + "sessionId": "abc123" + }, + { + "utteranceId": "def456_8", + "text": "That's the wrong method -- use createServerClient not createClient for server components", + "category": "correction_event", + "signalType": "strength" + }, + { + "utteranceId": "ghi789_14", + "text": "Wait, what does this useEffect dependency array actually do?", + "category": "e_gap_request", + "signalType": "growth" + } + ], + "patterns": [ + { + "name": "rich_first_prompts", + "description": "Developer opens sessions with file references, constraint statements, and specific problem descriptions", + "frequency": "consistent", + "sessionsPresent": 5, + "exampleQuotes": ["In src/auth/middleware.ts, the validateToken...", "Without changing the schema, add..."] + }, + { + "name": "correction_on_scope_violations", + "description": "Developer catches and corrects AI changes outside the requested scope", + "frequency": "occasional", + "sessionsPresent": 2, + "exampleQuotes": ["I only asked you to modify the handler, not the model", "You changed the test file, revert that"] }, - "metadata": { - "sessionsAnalyzed": 8, - "totalQuotesExtracted": 19, - "avgFirstPromptLength": 187, - "correctionRate": 0.12, - "explanationRequestRate": 0.10, - "dominantPattern": "rich_first_prompts" + { + "name": "post_acceptance_comprehension_gap", + "description": "Developer asks AI to explain code after accepting it, indicating code was accepted without understanding", + "frequency": "consistent", + "sessionsPresent": 3, + "exampleQuotes": ["What does this function return?", "How does this work exactly?"] } + ], + "signals": { + "coldStartScore": 74, + "hallucinationDetectionScore": 52, + "explainabilityScore": 60, + "overallScore": 63, + "resilienceLevel": "developing" + }, + "metadata": { + "sessionsAnalyzed": 8, + "totalQuotesExtracted": 19, + "avgFirstPromptLength": 187, + "correctionRate": 0.12, + "explanationRequestRate": 0.10, + "dominantPattern": "rich_first_prompts" } } ``` +Then run via Bash to register the output: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage extractSkillResilience --file ~/.betterprompt/tmp/stage-extractSkillResilience.json +``` + ### Quote Array Requirements - **Minimum 15-20 quotes total** across all categories @@ -329,7 +338,7 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded skillResilience prompt context via `get_prompt_context` +- [ ] Ran CLI `get-prompt-context` with domain `skillResilience` and loaded the output file - [ ] Identified the FIRST utterance of each session for M_CSR scoring - [ ] Scored each session's first utterance individually using the M_CSR point rubric - [ ] Computed average first-prompt length in characters across all sessions @@ -349,4 +358,5 @@ Print a brief `[bp]` status line at each key step: - [ ] Every pattern uses schema-compatible `frequency` values (`consistent`, `occasional`, or `rare`) - [ ] `dominantPattern` reflects the strongest recurring pattern based on `frequency` and session coverage - [ ] No hedging language used anywhere in output -- [ ] Called `save_stage_output` with stage `"extractSkillResilience"` +- [ ] Wrote output JSON to `~/.betterprompt/tmp/stage-extractSkillResilience.json` +- [ ] Ran CLI `save-stage-output` with stage `extractSkillResilience` diff --git a/packages/plugin/skills/extract-tool-mastery/SKILL.md b/packages/plugin/skills/extract-tool-mastery/SKILL.md index 6ac711a3..d9a91c4a 100644 --- a/packages/plugin/skills/extract-tool-mastery/SKILL.md +++ b/packages/plugin/skills/extract-tool-mastery/SKILL.md @@ -12,7 +12,15 @@ You are a **Behavioral Data Analyst** specializing in developer tool usage patte ## Task -Call `get_prompt_context` with `{ "kind": "domainAnalysis", "domain": "toolMastery" }` to receive the worker-specific payload. Extract structured behavioral signals for the Tool Mastery dimension. +Run the following command via Bash to retrieve the worker-specific payload: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind domainAnalysis --domain toolMastery +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load the context from that file. + +Extract structured behavioral signals for the Tool Mastery dimension. ## Context @@ -173,56 +181,59 @@ Cap scores: a score of 100 requires positive signals across ALL detection method ## Output Format -Call `save_stage_output` with: +Use Write to save the following JSON structure to `~/.betterprompt/tmp/stage-extractToolMastery.json`: ```json { - "stage": "extractToolMastery", - "data": { - "dimension": "toolMastery", - "quotes": [ - { - "text": "", - "utteranceId": "", - "sessionId": "", - "behavioralMarker": "", - "signalType": "", - "confidence": 0.0 - } - ], - "patterns": [ - { - "name": "", - "category": "", - "examples": ["", ""], - "frequency": "" - } - ], - "toolInventory": [ - { - "sessionId": "", - "toolsUsed": [""], - "distinctToolCount": 0, - "dominantTool": "", - "bashOveruseDetected": false - } - ], - "signals": { - "diversityScore": 0, - "advancedUsageScore": 0, - "workflowCompositionScore": 0, - "overallScore": 0 - }, - "metadata": { - "sessionsAnalyzed": 0, - "totalQuotesExtracted": 0, - "distinctToolsAcrossAllSessions": 0, - "dominantPattern": "" + "dimension": "toolMastery", + "quotes": [ + { + "text": "", + "utteranceId": "", + "sessionId": "", + "behavioralMarker": "", + "signalType": "", + "confidence": 0.0 + } + ], + "patterns": [ + { + "name": "", + "category": "", + "examples": ["", ""], + "frequency": "" } + ], + "toolInventory": [ + { + "sessionId": "", + "toolsUsed": [""], + "distinctToolCount": 0, + "dominantTool": "", + "bashOveruseDetected": false + } + ], + "signals": { + "diversityScore": 0, + "advancedUsageScore": 0, + "workflowCompositionScore": 0, + "overallScore": 0 + }, + "metadata": { + "sessionsAnalyzed": 0, + "totalQuotesExtracted": 0, + "distinctToolsAcrossAllSessions": 0, + "dominantPattern": "" } } ``` +Then run via Bash to register the output: + +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage extractToolMastery --file ~/.betterprompt/tmp/stage-extractToolMastery.json +``` + ## Progress Reporting Print a brief `[bp]` status line at each key step: @@ -234,7 +245,7 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist Before saving output, verify: -- [ ] Called `get_prompt_context` with domain `communicationPatterns` +- [ ] Ran CLI `get-prompt-context` with domain `toolMastery` and loaded the output file - [ ] Analyzed ALL sessions, not just the first few - [ ] Tool inventory recorded for each session - [ ] 15+ quotes extracted with utteranceIds and sessionIds @@ -245,4 +256,5 @@ Before saving output, verify: - [ ] All three sub-dimension scores computed (diversity, advanced usage, workflow composition) - [ ] `dominantPattern` references a `consistent` or `occasional` pattern - [ ] No hedging language in any field -- [ ] Called `save_stage_output` with stage `extractToolMastery` +- [ ] Wrote output JSON to `~/.betterprompt/tmp/stage-extractToolMastery.json` +- [ ] Ran CLI `save-stage-output` with stage `extractToolMastery` diff --git a/packages/plugin/skills/generate-weekly-insights/SKILL.md b/packages/plugin/skills/generate-weekly-insights/SKILL.md index cadffff7..7969e650 100644 --- a/packages/plugin/skills/generate-weekly-insights/SKILL.md +++ b/packages/plugin/skills/generate-weekly-insights/SKILL.md @@ -27,7 +27,12 @@ Phase 1 output provides per session: ### Step 1: Load Phase 1 Output -Call `get_prompt_context` with `{ "kind": "weeklyInsights" }` and extract the returned activity-session payload with Phase 1.5 summaries. +Run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind weeklyInsights +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. Extract the returned activity-session payload with Phase 1.5 summaries. ### Step 2: Compute Deterministic Stats @@ -100,11 +105,11 @@ If no sessions fall within the current week window: - Set `highlights` to an empty array - Set `projects` to an empty array - Set `topSessions` to an empty array -- Still call `save_stage_output` with this zero-state data +- Still save this zero-state data via Write + CLI `save-stage-output` as described in Step 7 ### Step 7: Save Output -Call `save_stage_output` with the following arguments: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-weeklyInsights.json` with this structure: ```json { @@ -157,6 +162,11 @@ Call `save_stage_output` with the following arguments: } ``` +Then run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage weeklyInsights --file ~/.betterprompt/tmp/stage-weeklyInsights.json +``` + **Schema requirements:** - `stats.sessionCount` (integer >= 0): Total sessions this week - `stats.totalMinutes` (number >= 0): Total minutes this week @@ -172,7 +182,7 @@ Call `save_stage_output` with the following arguments: ## Error Handling -- If `get_prompt_context` cannot return the weekly-insights payload, report the error. Do not fabricate stats. +- If the CLI `get-prompt-context` command fails or cannot return the weekly-insights payload, report the error. Do not fabricate stats. - If sessions have missing or unparseable `startTime`, exclude them from week splitting but log a warning. - If `totalInputTokens` or `totalOutputTokens` is missing from a session, treat them as 0 for token calculations. - If all sessions fall outside the 14-day window, use the zero-sessions edge case path. @@ -187,7 +197,7 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded weekly-insights context via `get_prompt_context` +- [ ] Loaded weekly-insights context via CLI `get-prompt-context` - [ ] Correctly split sessions into this-week and previous-week buckets - [ ] Stats are deterministic (computed from data, not estimated) - [ ] Deltas omitted when previous week has no sessions @@ -197,4 +207,4 @@ Print a brief `[bp]` status line at each key step: - [ ] Narrative is 2-3 sentences, specific, references project names - [ ] Highlights are 3-5 items, each one concise sentence with specific info - [ ] Zero-session edge case handled correctly -- [ ] Called `save_stage_output` with stage `"weeklyInsights"` +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"weeklyInsights"` diff --git a/packages/plugin/skills/summarize-projects/SKILL.md b/packages/plugin/skills/summarize-projects/SKILL.md index 62c4a2ab..620f2783 100644 --- a/packages/plugin/skills/summarize-projects/SKILL.md +++ b/packages/plugin/skills/summarize-projects/SKILL.md @@ -24,7 +24,11 @@ Session IDs encode the project path. The `projectName` field in Phase 1 output p ### Step 1: Load Input Data -1. Call `get_prompt_context` with `{ "kind": "projectSummaries" }` to get project-ready activity sessions plus Phase 1.5 session summaries. +1. Run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind projectSummaries +``` +Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. This provides project-ready activity sessions plus Phase 1.5 session summaries. ### Step 2: Group Sessions by Project @@ -80,7 +84,7 @@ For example, a project with 12 sessions: ### Step 4: Save Output -Call `save_stage_output` with the following arguments: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-projectSummaries.json` with this structure: ```json { @@ -108,6 +112,12 @@ Call `save_stage_output` with the following arguments: } ``` +Then run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage projectSummaries --file ~/.betterprompt/tmp/stage-projectSummaries.json +``` +``` + **Schema requirements:** - `projects` is an array of project objects - `projectName` (string): Human-readable project name from Phase 1 output @@ -117,11 +127,11 @@ Call `save_stage_output` with the following arguments: ### Filtering Rules - Exclude projects named `"(temp)"` or `"unknown"` from the output. These are noise from temporary directories or unrecognized project paths. -- If all projects are excluded, call `save_stage_output` with an empty projects array. +- If all projects are excluded, save an empty projects array and run `save-stage-output` as described above. ## Error Handling -- If `get_prompt_context` cannot return the project-summarization payload, report the error. Do not fabricate project data. +- If the CLI `get-prompt-context` command fails or cannot return the project-summarization payload, report the error. Do not fabricate project data. - If session summaries from Phase 1.5 are not available, fall back to using session metadata (project name, duration, message count) to generate summaries. This produces lower-quality output but avoids blocking the pipeline. - If a project has sessions but all session summaries are empty strings, use a fallback summary: `"Development work across N sessions"`. - Never silently drop projects from the output (except the excluded names above). @@ -136,11 +146,11 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded project summarization context via `get_prompt_context` +- [ ] Loaded project summarization context via CLI `get-prompt-context` - [ ] Grouped sessions by project name correctly - [ ] Small projects (<=3 sessions) pass through session summaries directly - [ ] Large projects (>3 sessions) have synthesized 2-3 line summaries (not repeated session lines) - [ ] Projects sorted by session count descending - [ ] Excluded `"(temp)"` and `"unknown"` projects - [ ] Each project has 1-3 summaryLines (not more) -- [ ] Called `save_stage_output` with stage `"projectSummaries"` +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"projectSummaries"` diff --git a/packages/plugin/skills/summarize-sessions/SKILL.md b/packages/plugin/skills/summarize-sessions/SKILL.md index e1097837..fe561db6 100644 --- a/packages/plugin/skills/summarize-sessions/SKILL.md +++ b/packages/plugin/skills/summarize-sessions/SKILL.md @@ -12,7 +12,7 @@ You are a **Session Summarizer**, skilled at reading developer-AI collaboration ## Task -Call `get_prompt_context` with `{ "kind": "sessionSummaries" }` and generate a concise 1-line summary for every session in the returned dataset. Each summary should describe the primary work accomplished in that session. +Load the session-summarization context via CLI and generate a concise 1-line summary for every session in the returned dataset. Each summary should describe the primary work accomplished in that session. ## Context @@ -30,7 +30,12 @@ Phase 1 data provides per session: ### Step 1: Load Phase 1 Output -Call `get_prompt_context` with `{ "kind": "sessionSummaries" }`. Use the returned `phase1.sessions` payload for summarization instead of rereading the raw Phase 1 file. +Run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind sessionSummaries +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. Use the returned `phase1.sessions` payload for summarization instead of rereading the raw Phase 1 file. ### Step 2: Generate Summaries @@ -55,7 +60,7 @@ For EVERY session in the Phase 1 output, generate exactly one summary line. ### Step 3: Save Output -Call `save_stage_output` with the following arguments: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-sessionSummaries.json` with this structure: ```json { @@ -75,6 +80,11 @@ Call `save_stage_output` with the following arguments: } ``` +Then run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage sessionSummaries --file ~/.betterprompt/tmp/stage-sessionSummaries.json +``` + **Schema requirements:** - `summaries` is a non-empty array (one entry per session in Phase 1 output) - `sessionId` (string): Must match the sessionId from Phase 1 output exactly @@ -84,8 +94,8 @@ Every session in Phase 1 output MUST have a corresponding entry in the summaries ## Error Handling -- If `get_prompt_context` cannot return the session-summarization payload, report the error immediately. Do not fabricate data. -- If Phase 1 output contains zero sessions, call `save_stage_output` with an empty summaries array: `{ "summaries": [] }`. +- If the CLI `get-prompt-context` command fails or cannot return the session-summarization payload, report the error immediately. Do not fabricate data. +- If Phase 1 output contains zero sessions, save an empty summaries array `{ "summaries": [] }` and run `save-stage-output` as described above. - If a session has no utterances at all, still include it with the empty session summary text described above. - Never silently drop sessions from the output. The count of summaries must equal the count of sessions in Phase 1 data. @@ -99,10 +109,10 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded session summarization context via `get_prompt_context` +- [ ] Loaded session summarization context via CLI `get-prompt-context` - [ ] Generated exactly one summary per session (no skips, no duplicates) - [ ] Every summary starts with a verb - [ ] Summaries are 5-15 words, specific, not generic - [ ] Empty/short sessions handled with appropriate fallback text - [ ] sessionId values match Phase 1 output exactly -- [ ] Called `save_stage_output` with stage `"sessionSummaries"` +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"sessionSummaries"` diff --git a/packages/plugin/skills/translate-report/SKILL.md b/packages/plugin/skills/translate-report/SKILL.md index ec235567..716bc1ae 100644 --- a/packages/plugin/skills/translate-report/SKILL.md +++ b/packages/plugin/skills/translate-report/SKILL.md @@ -12,13 +12,17 @@ You are a **Technical Report Translator** for BetterPrompt analyses. You preserv ## Task -Translate the canonical BetterPrompt evaluation fields that are meant to be localized, then persist the translated overlay through `save_stage_output` with stage `translator`. +Translate the canonical BetterPrompt evaluation fields that are meant to be localized, then persist the translated overlay via Write + CLI `save-stage-output` with stage `translator`. This stage is conditional. Run it only when the developer's sessions are primarily non-English or the user explicitly requests translated output. If English output is correct, skip the stage and explain briefly that no translation is needed. ## Inputs -1. Call `get_prompt_context` with `{ "kind": "translation" }`. +1. Run via Bash: + ```bash + node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind translation + ``` + Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. 2. Use the returned `languageSample`, `stageOutputs`, and `domainResults` payload instead of rereading the raw Phase 1 file. ## Translation Rules @@ -52,7 +56,7 @@ When translation is needed, include every available section below: ## Output -Call `save_stage_output` with this shape: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-translator.json` with this structure: ```json { @@ -122,6 +126,11 @@ Call `save_stage_output` with this shape: } ``` +Then run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage translator --file ~/.betterprompt/tmp/stage-translator.json +``` + ## Progress Reporting Print a brief `[bp]` status line at each key step: @@ -137,4 +146,4 @@ Print a brief `[bp]` status line at each key step: - [ ] Kept structure unchanged and omitted missing sections - [ ] Included `translatedAgentInsights` for every available worker domain - [ ] Kept project names and domain keys unchanged -- [ ] Called `save_stage_output` with stage `"translator"` only when translation was needed +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"translator"` only when translation was needed diff --git a/packages/plugin/skills/verify-evidence/SKILL.md b/packages/plugin/skills/verify-evidence/SKILL.md index 8c6f6537..abe28a62 100644 --- a/packages/plugin/skills/verify-evidence/SKILL.md +++ b/packages/plugin/skills/verify-evidence/SKILL.md @@ -12,41 +12,46 @@ You are an **Evidence Quality Auditor**. Your job is to run the deterministic ve ## Task -Call the `verify_evidence` MCP tool, then summarize the saved verification result back to the user. Do not perform manual quote-by-quote scoring when the tool succeeds. +Run the deterministic evidence verifier via CLI, then summarize the saved verification result back to the user. Do not perform manual quote-by-quote scoring when the CLI succeeds. ## Context -This is Phase 2.8 of the BetterPrompt pipeline, running after all domain workers (Phase 2) and type classification (Phase 2.5), before the Content Writer (Phase 3). Evidence verification ensures the final report does not cite fabricated quotes. The deterministic MCP tool handles the actual matching and persistence so this step stays fast and resumable. +This is Phase 2.8 of the BetterPrompt pipeline, running after all domain workers (Phase 2) and type classification (Phase 2.5), before the Content Writer (Phase 3). Evidence verification ensures the final report does not cite fabricated quotes. The deterministic CLI tool handles the actual matching and persistence so this step stays fast and resumable. ## Instructions ### Step 1: Run Deterministic Verification -Call `verify_evidence` with `{}` unless the user explicitly provided a custom threshold. +Run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js verify-evidence +``` + +Unless the user explicitly provided a custom threshold, run with no additional flags. ### Step 2: Summarize the Result -If the tool returns `status: "ok"`: +If the CLI returns a JSON result with `status: "ok"`: 1. Report the total evidence count. 2. Report kept and filtered counts. 3. Mention any domains with filtered evidence. -4. Stop. The tool already persisted the `evidenceVerification` stage output. +4. Stop. The CLI already persisted the `evidenceVerification` stage output. ## Error Handling -- If `verify_evidence` returns an error, surface it clearly and stop. +- If the `verify-evidence` CLI command returns an error, surface it clearly and stop. - Do not fabricate verification results. ## Progress Reporting Print a brief `[bp]` status line at each key step: 1. Before verification: `"[bp] Verifying evidence quotes..."` -2. After tool success: `"[bp] Saving verification results..."` +2. After CLI success: `"[bp] Saving verification results..."` 3. On completion: `"[bp] evidence-verification complete."` ## Quality Checklist -- [ ] Called `verify_evidence` -- [ ] Reported kept/filtered counts from the tool response +- [ ] Ran `verify-evidence` via CLI +- [ ] Reported kept/filtered counts from the CLI response - [ ] Did not fabricate manual verification output diff --git a/packages/plugin/skills/write-ai-collaboration/SKILL.md b/packages/plugin/skills/write-ai-collaboration/SKILL.md deleted file mode 100644 index e2e5a48b..00000000 --- a/packages/plugin/skills/write-ai-collaboration/SKILL.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -name: write-ai-collaboration -description: Generate narrative analysis for AI Collaboration Mastery -model: opus ---- - -# AI Collaboration Mastery Content Writer - -## Persona - -You are an **AI Collaboration Coach**, a senior career advisor specializing in developer-AI interaction assessment. You transform structured behavioral data into deeply personal, actionable narrative insights. Your writing makes developers feel "deeply understood" through specificity and their own words. - -## Task - -1. Call `get_stage_output` with `{ "stage": "extractAiCollaboration" }` to read the extraction results -2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "thinkingQuality" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT use `Agent`, `Task`, or delegation tools. - -## Context - -You are the narrative generation stage (Stage 2) of a two-stage analysis pipeline. The data-analyst stage has already extracted quotes, patterns, and scores. Your job is to synthesize these into compelling, evidence-backed insights. - -**IMPORTANT**: Ignore the `deterministicScores` field in any context. Score based on the extraction data only. - -For research context, scoring rubrics, and professional benchmarks, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may use planning tools" --> "You use planning tools (observed in 4 of 6 sessions)" -- "You tend to verify output" --> "You verify output in N of M sessions" -- "This seems to indicate structure" --> "This indicates structured collaboration" - -Every finding is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Analyze behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strengths and growth areas with equal rigor -- Do NOT inflate scores or suppress growth areas to appear kinder -- Every claim must be grounded in extraction data -- Every builder has growth areas -- surface them honestly - -## Narrative Requirements - -### Strengths (2-4 per dimension) - -For each strength cluster: -- **title**: Short, descriptive (max 50 chars). NOT generic -- specific to THIS builder's behavior -- **description**: 300+ characters using WHAT-WHY-HOW structure: - - WHAT: The specific behavioral pattern observed (2-3 sentences) - - WHY: Why this matters for AI collaboration effectiveness (1-2 sentences) - - HOW: How to leverage this strength further (1-2 sentences) -- **evidence**: 3-5 evidence items, each with: - - quote: Verbatim text from extraction data - - utteranceId: Reference to source - - context: Brief insight (max 150 chars) - -### Growth Areas (1-3 per dimension) - -For each growth area: -- **title**: Short, descriptive (max 50 chars). Frame as opportunity, not criticism -- **description**: 300+ characters using WHAT-WHY-HOW -- **severity**: One of `low`, `medium`, `high`, or `critical` based on breadth + impact of the gap -- **evidence**: 2-4 evidence items from extraction data -- **recommendation**: 150+ characters with specific, actionable steps - -### Behavioral Signature - -Identify what makes THIS developer unique in this dimension. Reference their actual words and patterns from the extraction data. - -## Data Mapping - -The extraction output from `extractAiCollaboration` maps to the `thinkingQuality` domain schema as follows: - -- **planningHabits**: Build from extraction `patterns` where `category` is `planning_style`. Each entry: `{ type: pattern name, frequency: pattern frequency, examples: [quote text] }`. Use the signal score to determine quality level. -- **verificationBehavior**: Build from the `verificationScore` in `signals`. Map to level: - - 0-25: `"blind_trust"` - - 26-50: `"occasional_review"` - - 51-75: `"systematic_verification"` - - 76-100: `"skeptical"` -- **criticalThinkingMoments**: Build from quotes where `behavioralMarker` is `"verification"` and `signalType` is `"strength"`. Each entry: `{ type: behavioralMarker, quote: text, result: "improved output quality", utteranceId, sessionId }`. -- **verificationAntiPatterns**: Build from quotes where `signalType` is `"growth"`. Each entry: `{ type: behavioralMarker, frequency: count occurrences across quotes, severity: "low|medium|high" based on overallScore }`. - -Focus dimensions for this domain: planning discipline, AI orchestration sophistication, verification rigor. A high planningScore with low verificationScore is the most common gap pattern -- call it out directly. - -## Output Format - -Call `save_domain_results` with: - -```json -{ - "domain": "thinkingQuality", - "overallScore": 0, - "confidenceScore": 0.0, - "strengths": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ] - } - ], - "growthAreas": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "severity": "", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ], - "recommendation": "<150+ chars, specific and actionable>" - } - ], - "data": { - "_dimensionSource": "aiCollaboration", - "planningHabits": [ - { - "type": "", - "frequency": "", - "examples": [""] - } - ], - "verificationBehavior": { - "level": "" - }, - "criticalThinkingMoments": [ - { - "type": "", - "quote": "", - "result": "", - "utteranceId": "", - "sessionId": "" - } - ], - "verificationAntiPatterns": [ - { - "type": "", - "frequency": 0, - "severity": "" - } - ] - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading stage output: `"[bp] Loaded ai-collaboration extraction (score: X/100, N quotes)"` -2. Before writing: `"[bp] Writing ai-collaboration narrative..."` -3. Before saving: `"[bp] Saving thinkingQuality domain results..."` -4. On completion: `"[bp] write-ai-collaboration complete."` - -## Quality Checklist - -- [ ] overallScore derived from extraction signals (NOT deterministic scores) -- [ ] 2-4 strengths, each with 300+ char description and 3+ evidence items -- [ ] 1-3 growth areas, each with 300+ char description and 150+ char recommendation -- [ ] Every growth area includes `severity` -- [ ] All evidence quotes are verbatim from extraction data -- [ ] No hedging language anywhere -- [ ] planningHabits populated from planning_style patterns -- [ ] verificationBehavior.level derived from verificationScore range -- [ ] criticalThinkingMoments from verification strength quotes -- [ ] verificationAntiPatterns from growth signal quotes -- [ ] Never used `Agent`, `Task`, or delegated tooling -- [ ] Called `save_domain_results` with domain `"thinkingQuality"` diff --git a/packages/plugin/skills/write-ai-control/SKILL.md b/packages/plugin/skills/write-ai-control/SKILL.md deleted file mode 100644 index 71ec3a83..00000000 --- a/packages/plugin/skills/write-ai-control/SKILL.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -name: write-ai-control -description: Generate narrative analysis for AI Control Index -model: opus ---- - -# AI Control Index Content Writer - -## Persona - -You are an **AI Collaboration Coach**, a senior career advisor specializing in developer-AI interaction assessment. You transform structured behavioral data into deeply personal, actionable narrative insights. Your writing makes developers feel "deeply understood" through specificity and their own words. - -## Task - -1. Call `get_stage_output` with `{ "stage": "extractAiControl" }` to read the extraction results -2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "sessionOutcome" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT use `Agent`, `Task`, or delegation tools. - -## Context - -You are the narrative generation stage (Stage 2) of a two-stage analysis pipeline. The data-analyst stage has already extracted quotes, patterns, and scores. Your job is to synthesize these into compelling, evidence-backed insights. - -**IMPORTANT**: Ignore the `deterministicScores` field in any context. Score based on the extraction data only. - -For research context, scoring rubrics, and professional benchmarks, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of turns", "N correction events detected" - -**Examples of required corrections:** -- "You may accept AI output without review" --> "You accept AI output without review in N of M sessions" -- "You tend to specify constraints" --> "You specify explicit constraints in N of M complex tasks" -- "This seems like a control pattern" --> "This is a systematic control pattern" - -Every finding is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Analyze behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strengths and growth areas with equal rigor -- Do NOT inflate scores or suppress growth areas to appear kinder -- Every claim must be grounded in extraction data -- Every builder has growth areas -- surface them honestly - -## Narrative Requirements - -### Strengths (2-4 per dimension) - -For each strength cluster: -- **title**: Short, descriptive (max 50 chars). NOT generic -- specific to THIS builder's behavior -- **description**: 300+ characters using WHAT-WHY-HOW structure: - - WHAT: The specific behavioral pattern observed (2-3 sentences) - - WHY: Why this matters for AI collaboration effectiveness (1-2 sentences) - - HOW: How to leverage this strength further (1-2 sentences) -- **evidence**: 3-5 evidence items, each with: - - quote: Verbatim text from extraction data - - utteranceId: Reference to source - - context: Brief insight (max 150 chars) - -### Growth Areas (1-3 per dimension) - -For each growth area: -- **title**: Short, descriptive (max 50 chars). Frame as opportunity, not criticism -- **description**: 300+ characters using WHAT-WHY-HOW -- **severity**: One of `low`, `medium`, `high`, or `critical` based on breadth + impact of the gap -- **evidence**: 2-4 evidence items from extraction data -- **recommendation**: 150+ characters with specific, actionable steps - -### Behavioral Signature - -Identify what makes THIS developer unique in this dimension. Reference their actual words and patterns from the extraction data. For AI Control, the signature is usually the builder's correction style -- are they precise and technical ("use createServerClient, not createClient") or directional ("that's wrong, try again")? - -## Data Mapping - -The extraction output from `extractAiControl` maps to the `sessionOutcome` domain schema as follows: - -- **sessionAnalyses**: Build one entry per analyzed session from `metadata.sessionsAnalyzed`. For each session, synthesize from the patterns and quotes associated with that `sessionId`: - - `sessionId`: from session data - - `sessionType`: Map from `controlLevel` in signals. Use the per-session dominant pattern to assign: `"ai-master"` for sessions with systematic_correction or verification_gating patterns, `"developing"` for mixed patterns, `"vibe-coder"` for sessions with blind_acceptance_habit - - `outcome`: Summarize the verification posture for this session in 1-2 sentences (no hedging) - - `outcomeScore`: Estimate 0-100 based on quotes from this session vs. overall signal balance - - `satisfactionSignal`: `"positive"` if the session contains at least one verification_gate or direct_correction; `"negative"` if the session contains blind_acceptance; `"neutral"` if no strong signal - -- **overallSuccessRate**: Map directly from `signals.overallScore` divided by 100. This represents the proportion of interactions where control was exercised appropriately. - -Focus dimensions for this domain: verification mastery, constraint specification precision, output critique quality. The 50% Modification Test benchmark from `research-insights.md` is the primary calibration point -- reference it explicitly if the builder's `modificationRate` is available in extraction metadata. - -## Output Format - -Call `save_domain_results` with: - -```json -{ - "domain": "sessionOutcome", - "overallScore": 0, - "confidenceScore": 0.0, - "strengths": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ] - } - ], - "growthAreas": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "severity": "", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ], - "recommendation": "<150+ chars, specific and actionable>" - } - ], - "data": { - "_dimensionSource": "aiControl", - "sessionAnalyses": [ - { - "sessionId": "", - "sessionType": "", - "outcome": "<1-2 sentence verification posture summary>", - "outcomeScore": 0, - "satisfactionSignal": "" - } - ], - "overallSuccessRate": 0.0 - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading stage output: `"[bp] Loaded ai-control extraction (level: , score: X/100, N quotes)"` -2. Before writing: `"[bp] Writing ai-control narrative..."` -3. Before saving: `"[bp] Saving sessionOutcome domain results..."` -4. On completion: `"[bp] write-ai-control complete."` - -## Quality Checklist - -- [ ] overallScore derived from extraction signals (NOT deterministic scores) -- [ ] 2-4 strengths, each with 300+ char description and 3+ evidence items -- [ ] 1-3 growth areas, each with 300+ char description and 150+ char recommendation -- [ ] Every growth area includes `severity` -- [ ] All evidence quotes are verbatim from extraction data -- [ ] No hedging language anywhere -- [ ] sessionAnalyses has one entry per session from metadata.sessionsAnalyzed -- [ ] sessionType mapped from control level classification per session -- [ ] satisfactionSignal derived from quote presence (verification gate = positive, blind acceptance = negative) -- [ ] overallSuccessRate is signals.overallScore / 100 -- [ ] 50% Modification Test benchmark referenced if modificationRate is present in extraction metadata -- [ ] Never used `Agent`, `Task`, or delegated tooling -- [ ] Called `save_domain_results` with domain `"sessionOutcome"` diff --git a/packages/plugin/skills/write-ai-partnership/SKILL.md b/packages/plugin/skills/write-ai-partnership/SKILL.md index b8288ed9..88d4e703 100644 --- a/packages/plugin/skills/write-ai-partnership/SKILL.md +++ b/packages/plugin/skills/write-ai-partnership/SKILL.md @@ -12,10 +12,12 @@ You are an **AI Partnership Coach**, a senior career advisor specializing in dev ## Task -1. Call `get_stage_output` with `{ "stage": "extractAiPartnership" }` to read the extraction results +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-stage-output --stage extractAiPartnership` + Parse the JSON stdout to get the `outputFile` path, then use Read to load the extraction from that file. 2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "aiPartnership" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT internally spawn additional Agents or Tasks. +3. Use Write to save the domain result JSON to `~/.betterprompt/tmp/domain-aiPartnership.json` + Then run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-domain-results --file ~/.betterprompt/tmp/domain-aiPartnership.json` +4. If `save-domain-results` returns a validation error, fix the JSON file and retry the same CLI command. Do NOT internally spawn additional Agents or Tasks. ## Context @@ -64,7 +66,7 @@ Compute `overallScore` (0-100) from the extraction's sub-dimension scores. The s ## Output Format -Call `save_domain_results` with: +Write the following JSON to `~/.betterprompt/tmp/domain-aiPartnership.json`, then save via CLI: ```json { diff --git a/packages/plugin/skills/write-burnout-risk/SKILL.md b/packages/plugin/skills/write-burnout-risk/SKILL.md deleted file mode 100644 index 4284f66f..00000000 --- a/packages/plugin/skills/write-burnout-risk/SKILL.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -name: write-burnout-risk -description: Generate narrative analysis for Burnout Risk and Session Sustainability -model: opus ---- - -# Burnout Risk Content Writer - -## Persona - -You are an **AI Collaboration Coach**, a senior career advisor specializing in developer-AI interaction assessment. You transform structured behavioral data into deeply personal, actionable narrative insights. Your writing makes developers feel "deeply understood" through specificity and their own words. - -## Task - -1. Call `get_stage_output` with `{ "stage": "extractBurnoutRisk" }` to read the extraction results -2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "learningBehavior" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT use `Agent`, `Task`, or delegation tools. - -## Context - -You are the narrative generation stage (Stage 2) of a two-stage analysis pipeline. The data-analyst stage has already extracted quotes, patterns, and scores. Your job is to synthesize these into compelling, evidence-backed insights. - -**IMPORTANT**: Ignore the `deterministicScores` field in any context. Score based on the extraction data only. - -For research context, scoring rubrics, and professional benchmarks, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may be experiencing burnout" --> "Your session data shows N consecutive high-duration sessions" -- "You tend to push through fatigue" --> "You continue work past sustainable session lengths in N of M sessions" -- "This seems unsustainable" --> "This session pattern is unsustainable" - -Every finding is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Analyze behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strengths and growth areas with equal rigor -- Do NOT inflate scores or suppress growth areas to appear kinder -- Every claim must be grounded in extraction data -- Every builder has growth areas -- surface them honestly - -## Narrative Framing - -**CRITICAL**: This dimension is stored under `learningBehavior` because the schema maps burnout risk as a learning and growth dimension. Frame all insights accordingly: - -- **Low burnout risk is a strength**: Sustainable session patterns indicate mature self-regulation, which directly improves learning quality and knowledge retention -- **High burnout risk is a growth area**: Frame as "session sustainability" or "work pattern management", not as pathology. The opportunity is building better self-management habits -- **Frustration recovery is learning**: Each recovery moment in the data is evidence of adaptability. Name it as such -- **Overwork patterns are knowledge gaps**: Treating unsustainable session lengths as a knowledge gap in self-management aligns with the learning domain framing - -## Narrative Requirements - -### Strengths (2-4 per dimension) - -For each strength cluster: -- **title**: Short, descriptive (max 50 chars). NOT generic -- specific to THIS builder's behavior -- **description**: 300+ characters using WHAT-WHY-HOW structure: - - WHAT: The specific behavioral pattern observed (2-3 sentences) - - WHY: Why this matters for AI collaboration effectiveness (1-2 sentences) - - HOW: How to leverage this strength further (1-2 sentences) -- **evidence**: 3-5 evidence items, each with: - - quote: Verbatim text from extraction data - - utteranceId: Reference to source - - context: Brief insight (max 150 chars) - -### Growth Areas (1-3 per dimension) - -For each growth area: -- **title**: Short, descriptive (max 50 chars). Frame as opportunity, not criticism -- **description**: 300+ characters using WHAT-WHY-HOW -- **severity**: One of `low`, `medium`, `high`, or `critical` based on breadth + impact of the gap -- **evidence**: 2-4 evidence items from extraction data -- **recommendation**: 150+ characters with specific, actionable steps - -### Behavioral Signature - -Identify what makes THIS developer unique in this dimension. Reference their actual words and patterns from the extraction data. - -## Data Mapping - -The extraction output from `extractBurnoutRisk` maps to the `learningBehavior` domain schema as follows: - -- **knowledgeGaps**: Build from risk signals or growth-signal quotes in the extraction data. Each entry represents a self-management knowledge gap: - - `area`: Map from signal type to gap category. Examples: `"work-life balance"`, `"session time management"`, `"frustration recovery"`, `"context window awareness"` - - `severity`: `"low"` (score 70-100), `"medium"` (40-69), `"high"` (0-39) -- invert the burnout risk score for this - - `trend`: `"improving"` if positive recovery signals outnumber risk signals, `"worsening"` otherwise, `"stable"` if equal - -- **repeatedMistakePatterns**: Build from frustration patterns and risk signal quotes. Each entry: - - `category`: `"overwork"` for session length/duration signals, `"session_management"` for context/compaction gaps, `"frustration_cycling"` for repeated failure loops - - `description`: Brief description of the repeated pattern (50-100 chars) - - `frequency`: Count of supporting quotes in the extraction - -- **learningProgress**: Build from positive recovery signals and strength quotes. Each entry represents a growth trajectory: - - `area`: Same vocabulary as `knowledgeGaps.area` - - `startLevel`: `"unaware"` if no early-session signals, `"aware"` if builder acknowledges the issue - - `currentLevel`: `"practicing"` if recovery signals present, `"mastered"` if consistent sustainable behavior - - `milestones`: Array of quote text that marks progress moments - -Focus dimensions for this domain: session sustainability, time management, frustration recovery. Developers who show frustration but immediately recover (e.g., "let me try a different approach") have the strongest resilience signal -- elevate those moments. - -## Output Format - -Call `save_domain_results` with: - -```json -{ - "domain": "learningBehavior", - "overallScore": 0, - "confidenceScore": 0.0, - "strengths": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ] - } - ], - "growthAreas": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "severity": "", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ], - "recommendation": "<150+ chars, specific and actionable>" - } - ], - "data": { - "_dimensionSource": "burnoutRisk", - "knowledgeGaps": [ - { - "area": "", - "severity": "", - "trend": "" - } - ], - "repeatedMistakePatterns": [ - { - "category": "", - "description": "", - "frequency": 0 - } - ], - "learningProgress": [ - { - "area": "", - "startLevel": "", - "currentLevel": "", - "milestones": [""] - } - ] - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading stage output: `"[bp] Loaded burnout-risk extraction (score: X/100, N quotes)"` -2. Before writing: `"[bp] Writing burnout-risk narrative..."` -3. Before saving: `"[bp] Saving learningBehavior domain results..."` -4. On completion: `"[bp] write-burnout-risk complete."` - -## Quality Checklist - -- [ ] overallScore derived from extraction signals (NOT deterministic scores) -- [ ] 2-4 strengths, each with 300+ char description and 3+ evidence items -- [ ] 1-3 growth areas, each with 300+ char description and 150+ char recommendation -- [ ] Every growth area includes `severity` -- [ ] All evidence quotes are verbatim from extraction data -- [ ] No hedging language anywhere -- [ ] Low burnout risk framed as a learning maturity strength (not just absence of a problem) -- [ ] High burnout risk framed as session management knowledge gap (not pathology) -- [ ] knowledgeGaps severity inverted from burnout risk score (high risk = high gap severity) -- [ ] repeatedMistakePatterns use category vocabulary: overwork, session_management, frustration_cycling -- [ ] learningProgress populated from recovery and positive signals -- [ ] Never used `Agent`, `Task`, or delegated tooling -- [ ] Called `save_domain_results` with domain `"learningBehavior"` diff --git a/packages/plugin/skills/write-content/SKILL.md b/packages/plugin/skills/write-content/SKILL.md index 5188491a..74225bca 100644 --- a/packages/plugin/skills/write-content/SKILL.md +++ b/packages/plugin/skills/write-content/SKILL.md @@ -12,7 +12,7 @@ You are an **AI Collaboration Coach**, a trusted mentor who writes deeply person ## Task -Generate top focus areas with coaching narratives and actionable start/stop/continue recommendations. Call `get_prompt_context` with `{ "kind": "contentWriter" }` and synthesize the most impactful themes from the returned domain, type, weekly, project, and evidence-verification context. +Generate top focus areas with coaching narratives and actionable start/stop/continue recommendations. Load the content-writer context via CLI and synthesize the most impactful themes from the returned domain, type, weekly, project, and evidence-verification context. ## Context @@ -24,14 +24,19 @@ The developer will read these focus areas as the headline section of their repor ### Step 1: Read All Domain Results -Call `get_prompt_context` with `{ "kind": "contentWriter" }`, then load the returned saved results for all five domains: +Run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-prompt-context --kind contentWriter +``` + +Parse the JSON stdout to get the `outputFile` path, then use Read to load that file. The payload contains saved results for all five domains: - `thinkingQuality` -- planning habits, verification behavior, anti-patterns - `communicationPatterns` -- structural/context/questioning patterns, signature quotes - `learningBehavior` -- knowledge gaps, repeated mistakes, progress trajectory - `contextEfficiency` -- inefficiency patterns, context management, token usage - `sessionOutcome` -- goal achievement, friction patterns, success/failure analysis -Do NOT read raw `tool-results` files or `~/.betterprompt/phase1-output.json` after calling `get_prompt_context`. Use the returned MCP payload as the full input for this stage. +Do NOT read raw `tool-results` files or `~/.betterprompt/phase1-output.json` after loading the context. Use the returned CLI payload as the full input for this stage. ### Step 2: Identify Cross-Domain Themes @@ -87,7 +92,7 @@ Each action must be concrete enough that the developer could implement it in the ### Output -Call `save_stage_output` with the following structure: +Use Write to save the output JSON to `~/.betterprompt/tmp/stage-contentWriter.json` with this structure: ```json { @@ -109,6 +114,11 @@ Call `save_stage_output` with the following structure: } ``` +Then run via Bash: +```bash +node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-stage-output --stage contentWriter --file ~/.betterprompt/tmp/stage-contentWriter.json +``` + ### Focus Area Constraints - **Maximum 3 focus areas** (fewer is fine if the data only supports 1-2 strong themes) @@ -127,7 +137,7 @@ Print a brief `[bp]` status line at each key step: ## Quality Checklist -- [ ] Loaded content-writer context via `get_prompt_context` +- [ ] Loaded content-writer context via CLI `get-prompt-context` - [ ] Identified cross-domain themes (not single-domain summaries) - [ ] Maximum 3 focus areas produced - [ ] Each title is 8-15 words, specific and personal @@ -138,4 +148,4 @@ Print a brief `[bp]` status line at each key step: - [ ] Actions are concrete and implementable in the next session - [ ] Each focus area references 2+ domains - [ ] Evidence from domain analyses is cited with specific numbers/patterns -- [ ] Called `save_stage_output` with stage "contentWriter" +- [ ] Saved output via Write + CLI `save-stage-output` with stage `"contentWriter"` diff --git a/packages/plugin/skills/write-context-engineering/SKILL.md b/packages/plugin/skills/write-context-engineering/SKILL.md deleted file mode 100644 index 8c0abe05..00000000 --- a/packages/plugin/skills/write-context-engineering/SKILL.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -name: write-context-engineering -description: Generate narrative analysis for Context Engineering -model: opus ---- - -# Context Engineering Content Writer - -## Persona - -You are an **AI Collaboration Coach**, a senior career advisor specializing in developer-AI interaction assessment. You transform structured behavioral data into deeply personal, actionable narrative insights. Your writing makes developers feel "deeply understood" through specificity and their own words. - -## Task - -1. Call `get_stage_output` with `{ "stage": "extractContextEngineering" }` to read the extraction results -2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "contextEfficiency" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT use `Agent`, `Task`, or delegation tools. - -## Context - -You are the narrative generation stage (Stage 2) of a two-stage analysis pipeline. The data-analyst stage has already extracted quotes, patterns, and scores. Your job is to synthesize these into compelling, evidence-backed insights. - -**IMPORTANT**: Ignore the `deterministicScores` field in any context. Score based on the extraction data only. - -For research context, scoring rubrics, and professional benchmarks, see `../shared/research-insights.md`. - -## Language Directives - -### NO_HEDGING Directive - -Write with absolute certainty. Your assessments are evidence-based facts, not possibilities. - -**BANNED WORDS (never use these):** -- Hedging: "may", "might", "could", "tends to", "seems", "appears", "possibly", "likely", "probably", "potentially" -- Vague frequency: "often", "sometimes", "usually", "typically", "generally" -- Weak qualifiers: "somewhat", "fairly", "rather", "quite", "a bit" - -**REQUIRED LANGUAGE:** -- Use definitive verbs: "is", "does", "demonstrates", "shows", "indicates", "reveals", "exhibits" -- Use quantified statements: "in X of Y sessions", "X% of the time", "consistently across N sessions" - -**Examples of required corrections:** -- "You may reference files for context" --> "You reference specific files in N of M sessions" -- "You tend to use /compact" --> "You invoke /compact in N of M sessions" -- "This seems context-efficient" --> "This session shows context-efficient behavior" - -Every finding is a fact derived from evidence. State it as such. - -### OBJECTIVE_ANALYSIS Directive - -Analyze behavioral signals OBJECTIVELY, not optimistically. - -- Identify BOTH strengths and growth areas with equal rigor -- Do NOT inflate scores or suppress growth areas to appear kinder -- Every claim must be grounded in extraction data -- Every builder has growth areas -- surface them honestly - -## Narrative Requirements - -### Strengths (2-4 per dimension) - -For each strength cluster: -- **title**: Short, descriptive (max 50 chars). NOT generic -- specific to THIS builder's behavior -- **description**: 300+ characters using WHAT-WHY-HOW structure: - - WHAT: The specific behavioral pattern observed (2-3 sentences) - - WHY: Why this matters for AI collaboration effectiveness (1-2 sentences) - - HOW: How to leverage this strength further (1-2 sentences) -- **evidence**: 3-5 evidence items, each with: - - quote: Verbatim text from extraction data - - utteranceId: Reference to source - - context: Brief insight (max 150 chars) - -### Growth Areas (1-3 per dimension) - -For each growth area: -- **title**: Short, descriptive (max 50 chars). Frame as opportunity, not criticism -- **description**: 300+ characters using WHAT-WHY-HOW -- **severity**: One of `low`, `medium`, `high`, or `critical` based on breadth + impact of the gap -- **evidence**: 2-4 evidence items from extraction data -- **recommendation**: 150+ characters with specific, actionable steps - -### Behavioral Signature - -Identify what makes THIS developer unique in this dimension. Reference their actual words and patterns from the extraction data. - -## Data Mapping - -The extraction output from `extractContextEngineering` maps to the `contextEfficiency` domain schema as follows: - -- **inefficiencyPatterns**: Build from quotes where `signalType` is `"growth"`. Group by `behavioralMarker` (write/select/compress/isolate) to assign type. Each entry: - - `type`: Map marker to WRITE/SELECT/COMPRESS/ISOLATE weakness (e.g., `"COMPRESS_weakness"`, `"WRITE_weakness"`) - - `frequency`: Count of growth quotes with that marker - - `severity`: `"low"` (1-2 occurrences), `"medium"` (3-5), `"high"` (6+) - - `description`: Brief description of the observed gap -- **contextUsagePatterns**: Build from `contextFillData` in extraction output. Each entry: - - `sessionId`: from contextFillData - - `avgFillPercent`: peakFillPercent from that session - - `pattern`: `"efficient"` if peakFillPercent < 50, `"moderate"` if 50-70, `"bloated"` if > 70 - - `trajectory`: `"compressed"` if compactionEventDetected, `"unchecked"` otherwise -- **avgContextFillPercent**: Compute the mean of all `peakFillPercent` values from `contextFillData`. If no token data available, omit this field. - -Focus dimensions for this domain: WRITE/SELECT/COMPRESS/ISOLATE mastery, token optimization. Developers who score high on WRITE but low on COMPRESS are the most common pattern -- name it directly if present. - -## Output Format - -Call `save_domain_results` with: - -```json -{ - "domain": "contextEfficiency", - "overallScore": 0, - "confidenceScore": 0.0, - "strengths": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ] - } - ], - "growthAreas": [ - { - "title": "", - "description": "<300+ chars, WHAT-WHY-HOW>", - "severity": "", - "evidence": [ - { - "quote": "", - "utteranceId": "", - "context": "" - } - ], - "recommendation": "<150+ chars, specific and actionable>" - } - ], - "data": { - "_dimensionSource": "contextEngineering", - "inefficiencyPatterns": [ - { - "type": "", - "frequency": 0, - "severity": "", - "description": "" - } - ], - "contextUsagePatterns": [ - { - "sessionId": "", - "avgFillPercent": 0, - "pattern": "", - "trajectory": "" - } - ], - "avgContextFillPercent": 0 - } -} -``` - -## Progress Reporting - -Print a brief `[bp]` status line at each key step: -1. After loading stage output: `"[bp] Loaded context-engineering extraction (score: X/100, N quotes)"` -2. Before writing: `"[bp] Writing context-engineering narrative..."` -3. Before saving: `"[bp] Saving contextEfficiency domain results..."` -4. On completion: `"[bp] write-context-engineering complete."` - -## Quality Checklist - -- [ ] overallScore derived from extraction signals (NOT deterministic scores) -- [ ] 2-4 strengths, each with 300+ char description and 3+ evidence items -- [ ] 1-3 growth areas, each with 300+ char description and 150+ char recommendation -- [ ] Every growth area includes `severity` -- [ ] All evidence quotes are verbatim from extraction data -- [ ] No hedging language anywhere -- [ ] inefficiencyPatterns typed using WRITE/SELECT/COMPRESS/ISOLATE weakness naming -- [ ] contextUsagePatterns populated from contextFillData with pattern and trajectory -- [ ] avgContextFillPercent computed from peak fill values (omit if no token data) -- [ ] Never used `Agent`, `Task`, or delegated tooling -- [ ] Called `save_domain_results` with domain `"contextEfficiency"` diff --git a/packages/plugin/skills/write-session-craft/SKILL.md b/packages/plugin/skills/write-session-craft/SKILL.md index f02ebc5c..ddbf68b1 100644 --- a/packages/plugin/skills/write-session-craft/SKILL.md +++ b/packages/plugin/skills/write-session-craft/SKILL.md @@ -12,10 +12,12 @@ You are a **Session Sustainability Coach**, a senior advisor specializing in dev ## Task -1. Call `get_stage_output` with `{ "stage": "extractSessionCraft" }` to read the extraction results +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-stage-output --stage extractSessionCraft` + Parse the JSON stdout to get the `outputFile` path, then use Read to load the extraction from that file. 2. Transform the structured signals into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "sessionCraft" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry. +3. Use Write to save the domain result JSON to `~/.betterprompt/tmp/domain-sessionCraft.json` + Then run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-domain-results --file ~/.betterprompt/tmp/domain-sessionCraft.json` +4. If `save-domain-results` returns a validation error, fix the JSON file and retry. ## Context @@ -52,7 +54,7 @@ Each growth area: specific title, 6-10 sentence description, severity (`critical ## Output Format -Call `save_domain_results` with: +Write the following JSON to `~/.betterprompt/tmp/domain-sessionCraft.json`, then save via CLI: ```json { diff --git a/packages/plugin/skills/write-session-mastery/SKILL.md b/packages/plugin/skills/write-session-mastery/SKILL.md index 236597bd..20e154e8 100644 --- a/packages/plugin/skills/write-session-mastery/SKILL.md +++ b/packages/plugin/skills/write-session-mastery/SKILL.md @@ -12,10 +12,12 @@ You are an **Expert Differentiation Coach**, a senior advisor who distinguishes ## Task -1. Call `get_stage_output` with `{ "stage": "extractSessionMastery" }` to read the extraction results +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-stage-output --stage extractSessionMastery` + Parse the JSON stdout to get the `outputFile` path, then use Read to load the extraction from that file. 2. Transform absence indicators and cleanliness data into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "sessionMastery" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry. +3. Use Write to save the domain result JSON to `~/.betterprompt/tmp/domain-sessionMastery.json` + Then run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-domain-results --file ~/.betterprompt/tmp/domain-sessionMastery.json` +4. If `save-domain-results` returns a validation error, fix the JSON file and retry. ## Core Philosophy: Absence = Mastery @@ -77,7 +79,7 @@ A score of 85+ indicates expert-level collaboration. 65-84 indicates intermediat ## Output Format -Call `save_domain_results` with: +Write the following JSON to `~/.betterprompt/tmp/domain-sessionMastery.json`, then save via CLI: ```json { diff --git a/packages/plugin/skills/write-skill-resilience/SKILL.md b/packages/plugin/skills/write-skill-resilience/SKILL.md index c8f00664..5158aa90 100644 --- a/packages/plugin/skills/write-skill-resilience/SKILL.md +++ b/packages/plugin/skills/write-skill-resilience/SKILL.md @@ -12,10 +12,12 @@ You are an **AI Collaboration Coach**, a senior career advisor specializing in d ## Task -1. Call `get_stage_output` with `{ "stage": "extractSkillResilience" }` to read the extraction results +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-stage-output --stage extractSkillResilience` + Parse the JSON stdout to get the `outputFile` path, then use Read to load the extraction from that file. 2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "skillResilience" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT internally spawn additional Agents or Tasks. +3. Use Write to save the domain result JSON to `~/.betterprompt/tmp/domain-skillResilience.json` + Then run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-domain-results --file ~/.betterprompt/tmp/domain-skillResilience.json` +4. If `save-domain-results` returns a validation error, fix the JSON file and retry the same CLI command. Do NOT internally spawn additional Agents or Tasks. ## Context @@ -114,7 +116,7 @@ Focus dimensions for this domain: skill independence, AI dependency assessment, ## Output Format -Call `save_domain_results` with: +Write the following JSON to `~/.betterprompt/tmp/domain-skillResilience.json`, then save via CLI: ```json { @@ -199,4 +201,4 @@ Print a brief `[bp]` status line at each key step: - [ ] explainabilityGap.requestRate computed from sessions containing "why" or "explain" patterns - [ ] vpcMetrics computed from available signals using VCP paper definitions - [ ] Never internally spawned additional Agents or Tasks -- [ ] Called `save_domain_results` with domain `"skillResilience"` +- [ ] Saved domain results via CLI with domain `"skillResilience"` diff --git a/packages/plugin/skills/write-tool-mastery/SKILL.md b/packages/plugin/skills/write-tool-mastery/SKILL.md index ec36ccf0..b379ba38 100644 --- a/packages/plugin/skills/write-tool-mastery/SKILL.md +++ b/packages/plugin/skills/write-tool-mastery/SKILL.md @@ -12,10 +12,12 @@ You are an **AI Collaboration Coach**, a senior career advisor specializing in d ## Task -1. Call `get_stage_output` with `{ "stage": "extractToolMastery" }` to read the extraction results +1. Run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js get-stage-output --stage extractToolMastery` + Parse the JSON stdout to get the `outputFile` path, then use Read to load the extraction from that file. 2. Transform the structured signals, quotes, and patterns into narrative strengths and growth areas -3. Save results via `save_domain_results` with `{ "domain": "toolMastery" }` -4. If `save_domain_results` returns a validation error, fix the payload and retry the same MCP call. Do NOT internally spawn additional Agents or Tasks. +3. Use Write to save the domain result JSON to `~/.betterprompt/tmp/domain-toolMastery.json` + Then run via Bash: `node ${CLAUDE_PLUGIN_ROOT}/dist/cli/index.js save-domain-results --file ~/.betterprompt/tmp/domain-toolMastery.json` +4. If `save-domain-results` returns a validation error, fix the JSON file and retry the same CLI command. Do NOT internally spawn additional Agents or Tasks. ## Context @@ -86,9 +88,9 @@ Identify what makes THIS developer unique in this dimension. Reference their act ## Data Mapping -The extraction output from `extractToolMastery` maps to the `communicationPatterns` domain schema as follows. The tool mastery dimension is stored under the communication domain because the schema pre-dates this dimension. Map tool behavior as communication-style patterns: +The extraction output from `extractToolMastery` maps to the `toolMastery` domain schema as follows. Build tool behavior patterns from the extraction data: -- **communicationPatterns**: Build from extraction `patterns` array. Each pattern becomes a communication-style entry: +- **toolMastery**: Build from extraction `patterns` array. Each pattern becomes an entry: - `patternName`: Use the pattern's `name` field directly - `category`: `"tool_usage"` for all entries (this is a tool mastery dimension, not literal communication) - `description`: Describe the tool behavior this pattern represents (30-100 chars) @@ -107,7 +109,7 @@ Focus dimensions for this domain: tool diversity, advanced tool usage (Task, Tod ## Output Format -Call `save_domain_results` with: +Write the following JSON to `~/.betterprompt/tmp/domain-toolMastery.json`, then save via CLI: ```json { @@ -185,4 +187,4 @@ Print a brief `[bp]` status line at each key step: - [ ] Bash overuse sessions represented as a pattern if bashOveruseDetected appears in toolInventory - [ ] signatureQuotes from strength quotes with advanced_usage or workflow_composition markers - [ ] Never internally spawned additional Agents or Tasks -- [ ] Called `save_domain_results` with domain `"toolMastery"` +- [ ] Saved domain results via CLI with domain `"toolMastery"` diff --git a/packages/plugin/tsconfig.json b/packages/plugin/tsconfig.json index 511fbdda..fd43464e 100644 --- a/packages/plugin/tsconfig.json +++ b/packages/plugin/tsconfig.json @@ -13,6 +13,6 @@ "noEmit": true, "resolveJsonModule": true }, - "include": ["mcp/**/*", "lib/**/*", "hooks/**/*"], + "include": ["cli/**/*", "lib/**/*", "hooks/**/*"], "exclude": ["node_modules", "dist"] } diff --git a/packages/plugin/tsup.config.ts b/packages/plugin/tsup.config.ts index 45be8aac..2ba5574c 100644 --- a/packages/plugin/tsup.config.ts +++ b/packages/plugin/tsup.config.ts @@ -2,8 +2,7 @@ import { defineConfig } from 'tsup'; export default defineConfig({ entry: { - 'mcp/server-entry': 'mcp/server-entry.ts', - 'mcp/server': 'mcp/server.ts', + 'cli/index': 'cli/index.ts', 'hooks/post-session-handler': 'hooks/post-session-handler.ts', 'hooks/session-start-handler': 'hooks/session-start-handler.ts', }, @@ -16,7 +15,7 @@ export default defineConfig({ sourcemap: true, dts: false, // Bundle these into output (not available via node_modules at runtime) - noExternal: [/@betterprompt\/shared/, '@modelcontextprotocol/sdk', 'zod'], + noExternal: [/@betterprompt\/shared/, 'zod'], // Only native addon stays external — installed by SessionStart hook external: ['better-sqlite3'], });