@slayzone/computer 0.0.1 → 0.36.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -2
- package/dist/bin.cjs +22704 -0
- package/dist/bin.cjs.map +7 -0
- package/package.json +22 -5
package/dist/bin.cjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../shared/platform/src/dirs.ts", "../../../../node_modules/ws/lib/stream.js", "../../../../node_modules/ws/lib/constants.js", "../../../../node_modules/ws/lib/buffer-util.js", "../../../../node_modules/ws/lib/limiter.js", "../../../../node_modules/ws/lib/permessage-deflate.js", "../../../../node_modules/ws/lib/validation.js", "../../../../node_modules/ws/lib/receiver.js", "../../../../node_modules/ws/lib/sender.js", "../../../../node_modules/ws/lib/event-target.js", "../../../../node_modules/ws/lib/extension.js", "../../../../node_modules/ws/lib/websocket.js", "../../../../node_modules/ws/lib/subprotocol.js", "../../../../node_modules/ws/lib/websocket-server.js", "../../../../node_modules/ignore/index.js", "../../../shared/platform/src/fs-utils.ts", "../../../shared/platform/src/agent-hooks/notify-script-installer.ts", "../../../shared/platform/src/agent-hooks/hook-paths.ts", "../../../shared/platform/src/agent-hooks/claude-hook-installer.ts", "../../../shared/platform/src/agent-hooks/gemini-hook-installer.ts", "../../../shared/platform/src/agent-hooks/codex-hook-installer.ts", "../../../shared/platform/src/agent-hooks/antigravity-hook-installer.ts", "../../../shared/platform/src/agent-hooks/opencode-plugin-installer.ts", "../../../shared/platform/src/agent-hooks/index.ts", "raw-import:/tmp/slz-publish-wt.2QxCLO/packages/shared/hooks/src/notify.sh", "raw-import:/tmp/slz-publish-wt.2QxCLO/packages/shared/hooks/src/opencode-plugin.js", "../src/agent-hooks.ts", "../src/bin.ts", "../../../shared/platform/src/config-prompt.ts", "../../../shared/platform/src/slayzone-config.ts", "../../../shared/platform/src/computer-identity.ts", "../../../shared/platform/src/hub-addr.ts", "../../../domains/computer-transport/src/shared/rpc.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", "../../../domains/computer-transport/src/shared/frames.ts", "../../../domains/computer-transport/src/shared/pinning.ts", "../../../domains/computer-transport/src/shared/events.ts", "../../../domains/computer-transport/src/shared/ws-data.ts", "../../../domains/computer-transport/src/client/backoff.ts", "../../../domains/computer-transport/src/client/credential-store.ts", "../../../domains/computer-transport/src/client/hub-dialer.ts", "../../../../node_modules/ws/wrapper.mjs", "../src/config.ts", "../../../shared/platform/src/join-token.ts", "../src/host-id.ts", "../src/handlers/agent-hook.ts", "../src/handlers/fs.ts", "../../../domains/file-editor/src/server/file-ops.ts", "../../../domains/file-editor/src/server/watcher.ts", "../../../domains/file-editor/src/server/repo-discovery.ts", "../src/handlers/gh.ts", "../src/handlers/git.ts", "../../../shared/platform/src/env-manifest.ts", "../src/handlers/exec.ts", "../src/handlers/proc.ts", "../../../shared/platform/src/index.ts", "../../../shared/platform/src/paths.ts", "../../../shared/platform/src/hub-switches.ts", "../../../shared/platform/src/migrations.ts", "../../../shared/platform/src/cli-install.ts", "../../../shared/platform/src/shell.ts", "../../../shared/platform/src/slz-file-url.ts", "../../../shared/platform/src/html-theme-css.ts", "../../../shared/platform/src/ipc-dedup.ts", "../src/ring-buffer.ts", "../src/handlers/project.ts", "../src/handlers/pty.ts", "../src/handlers/computer-config.ts", "../src/project-paths.ts", "../src/main.ts"],
|
|
4
|
+
"sourcesContent": ["import path from 'path'\nimport os from 'os'\n\n/**\n * Returns the directory for all app state (DB, backups, Electron internal data).\n *\n * - macOS: ~/Library/Application Support/slayzone\n * - Windows: %APPDATA%/slayzone\n * - Linux: $XDG_STATE_HOME/slayzone or ~/.local/state/slayzone\n */\nexport function getStateDir(): string {\n switch (process.platform) {\n case 'darwin':\n return path.join(os.homedir(), 'Library', 'Application Support', 'slayzone')\n case 'win32':\n return path.join(process.env.APPDATA ?? os.homedir(), 'slayzone')\n default: {\n const stateHome = process.env.XDG_STATE_HOME || path.join(os.homedir(), '.local', 'state')\n return path.join(stateHome, 'slayzone')\n }\n }\n}\n\n/**\n * User-visible SlayZone home/root dir \u2014 the single anchor for on-disk state.\n * For standalone hub/computer, everything (hub.config.json/hub.state.json or\n * computer.config.json, the DB, logs, computer creds) derives directly from it.\n * For the desktop app it anchors only what's genuinely machine-wide and\n * channel-agnostic \u2014 `hooks/`, `bin/` \u2014 since per-channel supervised state\n * derives from {@link getSupervisedRoot} instead, not this function directly.\n * Distinct from getStateDir() (Electron app state).\n *\n * Resolution (pure env reader \u2014 no CWD default here): `SLAYZONE_ROOT` >\n * `$HOME/.slayzone`. Standalone hub/computer entrypoints seed\n * `SLAYZONE_ROOT=process.cwd()` before any reader runs, so a remote deploy\n * anchors to the launch dir; the Electron app leaves it unset and falls through\n * to `~/.slayzone`. This function stays CWD-agnostic on purpose \u2014 the app main\n * process is NOT flagged SUPERVISED, so a CWD default gated here would wrongly\n * relocate the app's hook installers.\n *\n * Uses `process.env.HOME` first so an E2E fixture's `HOME` override redirects\n * writes deterministically.\n */\nexport function getSlayzoneHomeDir(): string {\n if (process.env.SLAYZONE_ROOT) return process.env.SLAYZONE_ROOT\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.slayzone')\n}\n\n/**\n * The release channel this SlayZone process belongs to \u2014 `stable` / `beta` /\n * `dev` (or `unknown` when unset). Pure env reader: the Electron app main sets\n * `SLAYZONE_RELEASE_CHANNEL` at boot (derived from `app.isPackaged` + the version's\n * prerelease tag) BEFORE any sidecar / pty env is built; standalone hub/computer\n * boots and tests leave it unset \u2192 `unknown`.\n *\n * Two consumers now: attribution (packed into the opaque\n * `SLAYZONE_AGENT_HOOK_CONTEXT` blob so the server can log which release channel\n * a hook actually came from \u2014 the shared `~/.slayzone/hooks/notify.sh` is NOT\n * release-channel-scoped, so this makes a cross-channel clobber visible in\n * Diagnostics instead of silent), and control flow: {@link getSupervisedRoot}'s\n * default `channel` param reads this to fold `beta`/`stable`/`unknown` onto the\n * same `stable` bucket while keeping `dev` separate.\n */\nexport function getSlayzoneReleaseChannel(): string {\n const raw = process.env.SLAYZONE_RELEASE_CHANNEL?.trim()\n return raw ? raw : 'unknown'\n}\n\n/** A supervised (desktop-app-spawned) process's role \u2014 the sidecar acting as\n * the local hub, or the co-located local computer. */\nexport type SlayzoneSupervisedRole = 'hub' | 'computer'\n\n/**\n * Channel-scoped root for the desktop app's supervised sidecar/local-computer \u2014\n * `~/.slayzone/<dev|stable>/<hub|computer>`. Two buckets, not three: `beta` folds\n * into `stable` (they already share one DB file today via `getDbName`'s\n * packaged-only boolean, and can't even run concurrently \u2014 the sidecar's fixed\n * port only has `prod`/`dev`/`test` buckets \u2014 so a separate `beta` bucket here\n * would buy no isolation that exists today). No empty/default case either:\n * `stable` is always spelled out, so it can never collide with a standalone\n * root someone names `hub` or `computer` directly under `~/.slayzone`.\n *\n * CALLER RESTRICTION: only the desktop app's own sidecar/local-computer spawn\n * code may call this. Hook installers and standalone hub/computer keep resolving\n * their own root via {@link getSlayzoneHomeDir} directly \u2014 misusing this\n * function there would silently break the \"hooks stay unscoped\" invariant\n * (`~/.slayzone/hooks/notify.sh` must stay outside any channel/role subfolder).\n */\n/**\n * The DESKTOP CLIENT's own root \u2014 `~/.slayzone/<dev|stable>/client`.\n *\n * Deliberately NOT a `SlayzoneSupervisedRole`: the client is the *supervisor*, not\n * a supervised process, and `getSupervisedRoot`'s caller restriction should stay\n * true. Same channel bucketing (beta folds into stable), same anchor.\n *\n * Exists because client state was living in the HUB's root. `boot-config.json` \u2014\n * the file that decides whether a local hub runs at all \u2014 and `hub-tokens.json`\n * (safeStorage bearer tokens) both sat under `getSupervisedRoot('hub')`. In remote\n * mode that directory exists for no other reason, and any future \"reset the local\n * hub\" would take the user's remote-hub registry and their credentials with it.\n *\n * Channel stays in the DIRECTORY here, unlike `cli-state.ts` which puts it in the\n * filename. That module refuses to depend on anyone else's layout because it is\n * invoked where `SLAYZONE_ROOT` may or may not be set; the desktop app owns this\n * layout and resolves it once, so a second competing channel rule would only add\n * a way to disagree with itself.\n */\nexport function getClientRoot(channel: string = getSlayzoneReleaseChannel()): string {\n const bucket = channel === 'dev' ? 'dev' : 'stable'\n return path.join(getSlayzoneHomeDir(), bucket, 'client')\n}\n\nexport function getSupervisedRoot(\n role: SlayzoneSupervisedRole,\n channel: string = getSlayzoneReleaseChannel()\n): string {\n const bucket = channel === 'dev' ? 'dev' : 'stable'\n return path.join(getSlayzoneHomeDir(), bucket, role)\n}\n\n/**\n * The MACHINE-WIDE SlayZone dir \u2014 `$HOME/.slayzone`, deliberately ignoring\n * `SLAYZONE_ROOT`.\n *\n * NOT the same question as {@link getSlayzoneHomeDir}, which answers \"where does\n * THIS PROCESS keep its state\" and correctly follows `SLAYZONE_ROOT` (a\n * standalone hub/computer anchors to its launch dir; the desktop app's supervised\n * roles are channel-scoped). This one answers \"where do the files SHARED BY THE\n * WHOLE MACHINE live\", and those must not move per process.\n *\n * The two coincide for the desktop app, which is why one resolver served both\n * for so long. They diverge for a computer \u2014 and the divergence is not cosmetic:\n * `notify.sh`'s path gets written INTO `~/.claude/settings.json`, which is one\n * file per machine that holds exactly one path. A root-scoped answer means two\n * computers with different roots each write their own path there and the last boot\n * wins, and a computer whose root was temporary leaves a path that no longer\n * exists. Anchoring on `$HOME` makes every writer compute the SAME path with the\n * SAME content, so concurrent installers converge instead of fighting.\n *\n * `SLAYZONE_MACHINE_DIR` redirects it so a test can exercise a real install\n * without touching the developer's actual `~/.slayzone` \u2014 the same escape hatch\n * `getClaudeSettingsPath()` and its siblings already provide for the files they\n * own. Env-manifest scope `infra`: a spawned terminal must never inherit it.\n */\nexport function getMachineSlayzoneDir(): string {\n if (process.env.SLAYZONE_MACHINE_DIR) return process.env.SLAYZONE_MACHINE_DIR\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.slayzone')\n}\n\n/** `$HOME/.slayzone/hooks` \u2014 where the shared `notify.sh` lives. Machine-wide;\n * see {@link getMachineSlayzoneDir} for why this must not follow SLAYZONE_ROOT. */\nexport function getHooksDir(): string {\n return path.join(getMachineSlayzoneDir(), 'hooks')\n}\n\n/** `$HOME/.slayzone/bin` \u2014 machine-wide shims (today only the legacy `codex`\n * wrapper, which the installers remove). Same anchoring rule as the hooks dir. */\nexport function getSlayzoneBinDir(): string {\n return path.join(getMachineSlayzoneDir(), 'bin')\n}\n\n/**\n * Absolute path to the user's Claude Code settings.json. Honours\n * `SLAYZONE_CLAUDE_SETTINGS_PATH` so tests can redirect without overriding HOME.\n */\nexport function getClaudeSettingsPath(): string {\n if (process.env.SLAYZONE_CLAUDE_SETTINGS_PATH) return process.env.SLAYZONE_CLAUDE_SETTINGS_PATH\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.claude', 'settings.json')\n}\n\n/**\n * Absolute path to the user's Gemini CLI settings.json (v0.13.0+). Honours\n * `SLAYZONE_GEMINI_SETTINGS_PATH` for tests.\n */\nexport function getGeminiSettingsPath(): string {\n if (process.env.SLAYZONE_GEMINI_SETTINGS_PATH) return process.env.SLAYZONE_GEMINI_SETTINGS_PATH\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.gemini', 'settings.json')\n}\n\n/**\n * Absolute path to the user's Codex CLI hooks.json (hooks system, stable\n * 0.129+). Honours `SLAYZONE_CODEX_HOOKS_PATH` for tests.\n */\nexport function getCodexHooksPath(): string {\n if (process.env.SLAYZONE_CODEX_HOOKS_PATH) return process.env.SLAYZONE_CODEX_HOOKS_PATH\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.codex', 'hooks.json')\n}\n\n/**\n * Absolute path to the user-global Antigravity CLI (`agy`) hooks file.\n * Confirmed against the real CLI: `agy` loads hooks from\n * `~/.gemini/config/hooks.json` (its customization dir is the Gemini dir).\n * Honours `SLAYZONE_ANTIGRAVITY_HOOKS_PATH` for tests.\n */\nexport function getAntigravityHooksPath(): string {\n if (process.env.SLAYZONE_ANTIGRAVITY_HOOKS_PATH)\n return process.env.SLAYZONE_ANTIGRAVITY_HOOKS_PATH\n const home = process.env.HOME ?? process.env.USERPROFILE ?? os.homedir()\n return path.join(home, '.gemini', 'config', 'hooks.json')\n}\n\n/**\n * Absolute path to the SlayZone-managed OpenCode plugin file. OpenCode loads\n * `*.js` from `${XDG_CONFIG_HOME:-~/.config}/opencode/plugin/`. Honours\n * `SLAYZONE_OPENCODE_PLUGIN_PATH` so tests can redirect without overriding HOME.\n */\nexport function getOpencodePluginPath(): string {\n if (process.env.SLAYZONE_OPENCODE_PLUGIN_PATH) return process.env.SLAYZONE_OPENCODE_PLUGIN_PATH\n const configHome =\n process.env.XDG_CONFIG_HOME ||\n path.join(process.env.HOME ?? process.env.USERPROFILE ?? os.homedir(), '.config')\n return path.join(configHome, 'opencode', 'plugin', 'slayzone-notify.js')\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n", "// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\\\]|^)\\\\$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\n\n// Do not use ternary expression here, since \"istanbul ignore next\" is buggy\nlet TMP_KEY_IGNORE = 'node-ignore'\n/* istanbul ignore else */\nif (typeof Symbol !== 'undefined') {\n TMP_KEY_IGNORE = Symbol.for('node-ignore')\n}\nconst KEY_IGNORE = TMP_KEY_IGNORE\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n [\n // remove BOM\n // TODO:\n // Other similar zero-width characters?\n /^\\uFEFF/,\n () => EMPTY\n ],\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /((?:\\\\\\\\)*?)(\\\\?\\s+)$/,\n (_, m1, m2) => m1 + (\n m2.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n )\n ],\n\n // replace (\\ ) with ' '\n // (\\ ) -> ' '\n // (\\\\ ) -> '\\\\ '\n // (\\\\\\ ) -> '\\\\ '\n [\n /(\\\\+?)\\s/g,\n (_, m1) => {\n const {length} = m1\n return m1.slice(0, length - length % 2) + SPACE\n }\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // normal intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule,\n // coz trailing single wildcard will be handed by [trailing wildcard]\n /(^|[^\\\\]+)(\\\\\\*)+(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1, p2) => {\n // 1.\n // > An asterisk \"*\" matches anything except a slash.\n // 2.\n // > Other consecutive asterisks are considered regular asterisks\n // > and will match according to the previous rules.\n const unescaped = p2.replace(/\\\\\\*/g, '[^\\\\/]*')\n return p1 + unescaped\n }\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, ignoreCase) => {\n let source = regexCache[pattern]\n\n if (!source) {\n source = REPLACERS.reduce(\n (prev, [matcher, replacer]) =>\n prev.replace(matcher, replacer.bind(pattern)),\n pattern\n )\n regexCache[pattern] = source\n }\n\n return ignoreCase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignoreCase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, ignoreCase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true,\n ignoreCase = ignorecase,\n allowRelativePaths = false\n } = {}) {\n define(this, KEY_IGNORE, true)\n\n this._rules = []\n this._ignoreCase = ignoreCase\n this._allowRelativePaths = allowRelativePaths\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignoreCase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(\n path,\n originalPath,\n this._allowRelativePaths\n ? RETURN_FALSE\n : throwError\n )\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n", "import fs from 'fs/promises'\nimport path from 'path'\nimport crypto from 'crypto'\n\n/**\n * Write `content` to `filePath` atomically (temp file + rename), but only if\n * the existing file's bytes differ. Returns true if a write happened, false on no-op.\n *\n * - Creates parent dirs as needed.\n * - Applies `mode` on POSIX (silently ignored on win32 \u2014 chmod is a no-op there).\n * - If the target is a symlink, follows it once and writes through (does not\n * replace the link itself).\n * - Atomic via `fs.rename` (POSIX): no reader ever sees a torn file.\n *\n * NOT safe for read-modify-write. This sees only the FINAL bytes, so it cannot\n * tell that the caller computed them from a baseline another writer has since\n * replaced \u2014 the rename then silently discards that writer's work. Fine for\n * content derived from nothing but its inputs (a bundled script written verbatim);\n * for anything MERGED into existing file contents, use {@link updateFileAtomically},\n * which owns the whole cycle and can re-run the merge.\n */\nexport async function writeFileIfChanged(\n filePath: string,\n content: string | Buffer,\n mode?: number\n): Promise<boolean> {\n const target = await resolveTarget(filePath)\n const buf = Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf8')\n\n const existing = await safeReadFile(target)\n if (existing && existing.equals(buf)) return false\n\n await fs.mkdir(path.dirname(target), { recursive: true })\n const tmp = `${target}.tmp.${crypto.randomBytes(6).toString('hex')}`\n await fs.writeFile(tmp, buf)\n if (mode != null && process.platform !== 'win32') {\n await fs.chmod(tmp, mode)\n }\n await fs.rename(tmp, target)\n return true\n}\n\n/**\n * Merge new content into `filePath` atomically, re-running the merge if the file\n * changed underneath us. Returns true if a write happened.\n *\n * WHY THIS EXISTS, AND WHY `writeFileIfChanged` IS NOT ENOUGH.\n * `writeFileIfChanged` only ever sees the FINAL bytes, so a caller doing the\n * usual read \u2192 merge \u2192 write has already computed those bytes from a baseline\n * that another process may have replaced in the meantime. The rename is atomic,\n * so no reader sees a torn file \u2014 but the LOST UPDATE is invisible: the second\n * writer's rename silently discards the first writer's merge.\n *\n * That was accidentally harmless while exactly one process type (the desktop app)\n * ever wrote these files: identical version + identical inputs produce identical\n * bytes, so even a race converged. It stops being harmless as soon as a second\n * installer exists on the same machine (a standalone computer), because the two can\n * be on DIFFERENT builds \u2014 and then the stale one's write is not equal, it is a\n * downgrade. Crucially that includes a version GATE: an installer that reads the\n * on-disk version, decides \"mine is newer\", and writes, has evaluated its own gate\n * against a stale read. This is the shape of the incident that stripped\n * `slaySessionId` from `notify.sh` and broke warm-pool session tracking.\n *\n * The fix is to make the whole cycle one primitive so the baseline the merge saw\n * is the baseline that gets replaced:\n *\n * 1. read current bytes (the BASELINE, handed to `merge`)\n * 2. `merge(baseline)` \u2192 new bytes, or `null` to decline (a gate saying \"mine is\n * not newer\" \u2014 declining is a real outcome, not an error)\n * 3. re-read immediately before the rename; if the bytes are no longer the\n * baseline, someone else committed first \u2014 discard our temp file and re-run\n * the merge against the fresh state\n *\n * Step 3 is what makes a gate sound: on a retry the merge re-evaluates against\n * what is ACTUALLY on disk, so a stale writer that would have downgraded now sees\n * the newer version and declines. The fresher content wins regardless of which\n * writer finishes first.\n *\n * TWO MECHANISMS, ON PURPOSE. The cycle runs under an exclusive lock file, and\n * still re-checks the bytes before renaming. The lock is what actually prevents a\n * lost update between cooperating writers \u2014 a bare re-check cannot, because both\n * writers can re-read before either renames, and then both believe they are\n * uncontended. The re-check is not therefore redundant: it is the only thing that\n * catches a writer which does NOT take the lock, and during a rollout that writer\n * definitely exists (an older, already-installed build). Lock for the peers we\n * know about, verify for the ones we do not.\n */\nexport async function updateFileAtomically(\n filePath: string,\n merge: (current: Buffer | null) => Promise<string | Buffer | null> | string | Buffer | null,\n opts: { mode?: number; retries?: number } = {}\n): Promise<boolean> {\n const { mode, retries = 5 } = opts\n const target = await resolveTarget(filePath)\n await fs.mkdir(path.dirname(target), { recursive: true })\n\n const release = await acquireLock(`${target}.lock`)\n try {\n for (let attempt = 0; ; attempt++) {\n const baseline = await safeReadFile(target)\n const merged = await merge(baseline)\n\n // `null` = the caller's gate declined. Not a failure, and NOT an empty write.\n if (merged == null) return false\n\n const buf = Buffer.isBuffer(merged) ? merged : Buffer.from(merged, 'utf8')\n if (baseline && baseline.equals(buf)) return false\n\n const tmp = `${target}.tmp.${crypto.randomBytes(6).toString('hex')}`\n await fs.writeFile(tmp, buf)\n if (mode != null && process.platform !== 'win32') {\n await fs.chmod(tmp, mode)\n }\n\n // Still the file `merge` was handed? Only an unlocked writer can trip this.\n if (sameBytes(baseline, await safeReadFile(target))) {\n await fs.rename(tmp, target)\n return true\n }\n\n // Someone committed first. Drop our temp file rather than leave it to\n // accumulate in the user's ~/.claude, and re-merge against their result.\n await fs.rm(tmp, { force: true })\n if (attempt >= retries) {\n throw new Error(\n `[fs-utils] updateFileAtomically: ${target} kept changing underneath ` +\n `${retries + 1} merge attempts \u2014 giving up rather than writing a stale merge`\n )\n }\n await sleep(2 ** attempt + Math.floor(Math.random() * 5))\n }\n } finally {\n await release()\n }\n}\n\n/** How long before a lock is presumed abandoned by a process that died holding it. */\nconst LOCK_STALE_MS = 10_000\n/** Cap on waiting for a peer. Bounded because this runs on app boot and agent\n * spawn \u2014 a hook install may fail loudly, but it must never hang either. */\nconst LOCK_TIMEOUT_MS = 5_000\n\n/**\n * Take an exclusive lock via `open(\u2026, 'wx')` \u2014 O_CREAT|O_EXCL, atomic create-\n * if-absent, so exactly one caller wins even across processes.\n *\n * A crashed holder would otherwise wedge every future install, so a lock older\n * than {@link LOCK_STALE_MS} is stolen. Two callers can in principle steal the\n * same stale lock; that returns the pair to the unlocked behaviour the byte\n * re-check already covers, which is why stealing is safe to keep simple.\n */\nasync function acquireLock(lockPath: string): Promise<() => Promise<void>> {\n const deadline = Date.now() + LOCK_TIMEOUT_MS\n for (;;) {\n try {\n const handle = await fs.open(lockPath, 'wx')\n await handle.writeFile(`${process.pid} ${new Date().toISOString()}\\n`)\n await handle.close()\n return async () => {\n await fs.rm(lockPath, { force: true })\n }\n } catch (err: unknown) {\n if (!isCode(err, 'EEXIST')) throw err\n const age = await lockAgeMs(lockPath)\n if (age === null) continue // holder released between our open and our stat\n if (age > LOCK_STALE_MS) {\n await fs.rm(lockPath, { force: true })\n continue\n }\n if (Date.now() > deadline) {\n throw new Error(`[fs-utils] timed out after ${LOCK_TIMEOUT_MS}ms waiting for ${lockPath}`)\n }\n await sleep(5 + Math.floor(Math.random() * 10))\n }\n }\n}\n\nasync function lockAgeMs(lockPath: string): Promise<number | null> {\n try {\n return Date.now() - (await fs.stat(lockPath)).mtimeMs\n } catch (err: unknown) {\n if (isCode(err, 'ENOENT')) return null\n throw err\n }\n}\n\nfunction sameBytes(a: Buffer | null, b: Buffer | null): boolean {\n if (a === null || b === null) return a === b\n return a.equals(b)\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nasync function safeReadFile(p: string): Promise<Buffer | null> {\n try {\n return await fs.readFile(p)\n } catch (err: unknown) {\n if (isENOENT(err)) return null\n throw err\n }\n}\n\nasync function resolveTarget(p: string): Promise<string> {\n try {\n const stat = await fs.lstat(p)\n if (stat.isSymbolicLink()) return await fs.realpath(p)\n } catch (err: unknown) {\n if (!isENOENT(err)) throw err\n }\n return p\n}\n\nfunction isENOENT(err: unknown): boolean {\n return isCode(err, 'ENOENT')\n}\n\nfunction isCode(err: unknown, code: string): boolean {\n return typeof err === 'object' && err != null && (err as { code?: string }).code === code\n}\n", "import path from 'path'\nimport { getHooksDir } from '../dirs'\nimport { updateFileAtomically } from '../fs-utils'\n\nexport interface InstallNotifyScriptOpts {\n /**\n * The `notify.sh` body to install. REQUIRED, and deliberately not defaulted\n * here: the content is inlined by the CALLER's bundler (the desktop app via\n * Vite `?raw`, the standalone computer via esbuild's `text` loader), so this\n * module stays free of any bundler-specific import syntax and can be shared by\n * both. A runtime file read is not an option \u2014 `@slayzone/hooks` is private\n * and never published, and the computer ships as one self-contained bundle.\n */\n source: string\n /** Override target path. Defaults to `~/.slayzone/hooks/notify.sh`. */\n targetPath?: string\n}\n\n/**\n * Parse the `SLAYZONE_NOTIFY_VERSION=N` marker from a notify-script body.\n * The marker is a shell comment (`# SLAYZONE_NOTIFY_VERSION=3`) so it is inert\n * when the script runs. Absent/malformed \u2192 0: a legacy unversioned script\n * (the real clobber victim) is the oldest possible, so any versioned script\n * upgrades it.\n */\nexport function parseNotifyVersion(script: string): number {\n const m = /SLAYZONE_NOTIFY_VERSION=(\\d+)/.exec(script)\n if (!m) return 0\n const n = Number.parseInt(m[1]!, 10)\n return Number.isFinite(n) ? n : 0\n}\n\n/**\n * Write the agent lifecycle notify script to `~/.slayzone/hooks/notify.sh`\n * with mode 0755.\n *\n * VERSION GATE \u2014 the prod and dev release channels share ONE on-disk\n * notify.sh (the path is `~/.slayzone/hooks/notify.sh` for both, since\n * `getSlayzoneHomeDir()` is not release-channel-scoped). The script is\n * backward-compatible (an older server ignores newer envelope fields like\n * `slaySessionId`), so a NEWER script is always safe for an OLDER app to run \u2014\n * but an OLDER app must never DOWNGRADE a newer script. That downgrade is what\n * stripped `slaySessionId`, making warm-pool sessions invisible (no task\n * resolution \u2192 no running-spinner, no unread flag).\n *\n * So: write only when the incoming version is >= the on-disk version. Highest\n * version wins regardless of release channel or boot order. Below equality it still\n * gets byte-level idempotency (equal-version content tweaks in dev still land; a\n * genuine no-op stays a no-op).\n *\n * The gate runs INSIDE `updateFileAtomically`'s merge, which is what makes it\n * sound. A gate is only as good as the read it judges: comparing versions, then\n * writing in a separate step, decides \"mine is newer\" against a snapshot a peer\n * may already have replaced \u2014 so the downgrade this function exists to prevent\n * could still happen through the gap. Now the comparison and the replacement are\n * one guarded cycle, and a peer that commits first forces the gate to be\n * re-evaluated against what is actually on disk. This matters more than it used\n * to: the desktop app is no longer the only installer \u2014 a standalone computer\n * installs the same shared script on the same machine.\n *\n * Returns the absolute target path so the agent hook installers can wire it.\n */\nexport async function installNotifyScript(\n opts: InstallNotifyScriptOpts\n): Promise<{ path: string; changed: boolean }> {\n const target = opts.targetPath ?? path.join(getHooksDir(), 'notify.sh')\n const source = opts.source\n const incomingV = parseNotifyVersion(source)\n\n const changed = await updateFileAtomically(\n target,\n (current) => {\n if (current === null) return source\n // Strict downgrade \u2192 decline: preserve the newer on-disk script untouched.\n if (incomingV < parseNotifyVersion(current.toString('utf8'))) return null\n return source\n },\n { mode: 0o755 }\n )\n return { path: target, changed }\n}\n", "/**\n * Path formatting for agent hook `command` strings.\n *\n * Agent CLIs (Claude Code, Gemini CLI) run hook `command` entries through a\n * POSIX shell \u2014 bash, which on Windows means Git Bash. A raw Windows path like\n * `C:\\Users\\Jane\\.slayzone\\hooks\\notify.sh` is mangled by bash: the backslashes\n * are eaten as escape characters, yielding `C:UsersJane.slayzonehooksnotify.sh`\n * and a \"No such file or directory\" error every hook invocation (issue #88).\n *\n * The fix: store the hook command as a forward-slash path, POSIX-quoted when it\n * contains characters the shell would otherwise interpret. Git Bash accepts\n * mixed `C:/Users/...` paths, and macOS/Linux paths are unaffected.\n */\n\n/** Convert Windows backslashes to forward slashes. No-op on POSIX paths. */\nexport function toPosixPath(p: string): string {\n return p.replace(/\\\\/g, '/')\n}\n\n/**\n * Format an absolute path for use as a hook `command` value.\n *\n * Always forward-slashed. POSIX-single-quoted ONLY when the path contains\n * whitespace or shell-special characters \u2014 quoting is POSIX unconditionally\n * because the hook always runs under bash, even on Windows (so this is NOT\n * `quoteForShell`, which is cmd.exe-style on Windows).\n *\n * Quote-only-when-needed keeps the common macOS/Linux path byte-identical to\n * the pre-fix value, so existing users get no settings.json churn \u2014 only\n * Windows paths and paths with spaces (both currently broken) change.\n */\nexport function formatHookCommand(absPath: string): string {\n const posix = toPosixPath(absPath)\n if (!/[\\s'\"\\\\$`&|;<>()*?]/.test(posix)) return posix\n return `'${posix.replace(/'/g, `'\"'\"'`)}'`\n}\n", "import { getClaudeSettingsPath } from '../dirs'\nimport { updateFileAtomically } from '../fs-utils'\nimport { formatHookCommand } from './hook-paths'\n\nconst MARKER_KEY = '_slayzoneManaged'\n\n/**\n * Claude Code hook event names we install on. Matches the 9 events documented\n * in Claude Code 2.x. Each maps to one entry in `settings.hooks[event]`.\n */\nexport const CLAUDE_HOOK_EVENTS = [\n 'SessionStart',\n 'SessionEnd',\n 'UserPromptSubmit',\n 'PreToolUse',\n 'PostToolUse',\n 'Stop',\n 'SubagentStop',\n 'Notification',\n 'PreCompact'\n] as const\n\nconst TOOL_MATCHED_EVENTS = new Set<string>(['PreToolUse', 'PostToolUse', 'Notification'])\n\ninterface ClaudeHookCommand {\n type: 'command'\n command: string\n [MARKER_KEY]?: boolean\n}\n\ninterface ClaudeHookEntry {\n matcher?: string\n hooks: ClaudeHookCommand[]\n}\n\ntype ClaudeSettings = {\n hooks?: Record<string, ClaudeHookEntry[]>\n [key: string]: unknown\n}\n\nexport interface InstallClaudeHooksOpts {\n /** Absolute path to the notify script. Forwarded into the hook command. */\n scriptPath: string\n /** Override target settings.json path. Defaults to `getClaudeSettingsPath()`. */\n settingsPath?: string\n /** Override list of hook events. Defaults to `CLAUDE_HOOK_EVENTS`. */\n events?: readonly string[]\n}\n\nexport interface InstallClaudeHooksResult {\n installed: boolean\n eventsAdded: string[]\n reason?: string\n}\n\n/**\n * Merge SlayZone hook entries into `~/.claude/settings.json` (atomic, idempotent).\n *\n * Behavior:\n * - Missing file \u2192 starts from `{}`, mkdir parent.\n * - Malformed JSON \u2192 aborts (does NOT overwrite user data). Returns `installed: false`.\n * - For each event in `events`: replaces any existing SlayZone-managed entry,\n * preserves all other user-defined entries.\n * - SlayZone-managed entries are identified by either:\n * a) inner hook command containing `notify.sh`, OR\n * b) inner hook carries `_slayzoneManaged: true` marker.\n * This handles users who hand-edit or relocate the script.\n * - The read, the merge and the write are ONE guarded cycle\n * (`updateFileAtomically`). This file is shared with the user and with any other\n * SlayZone process on the machine \u2014 a standalone computer installs the same hooks\n * \u2014 so computing the merge from a snapshot and writing it back separately would\n * silently drop whatever a peer committed in between. On contention the merge is\n * re-run against the peer's result instead.\n */\nexport async function installClaudeHooks(\n opts: InstallClaudeHooksOpts\n): Promise<InstallClaudeHooksResult> {\n const target = opts.settingsPath ?? getClaudeSettingsPath()\n const events = opts.events ?? CLAUDE_HOOK_EVENTS\n\n // Set by the merge below; a decline (`null`) leaves the refusal reason in place.\n let result: InstallClaudeHooksResult = { installed: false, eventsAdded: [], reason: 'unwritten' }\n\n await updateFileAtomically(target, (current) => {\n let settings: ClaudeSettings\n if (current === null) {\n settings = {}\n } else {\n let parsed: unknown\n try {\n parsed = JSON.parse(current.toString('utf8'))\n } catch {\n result = {\n installed: false,\n eventsAdded: [],\n reason: 'settings.json is not valid JSON \u2014 refusing to overwrite'\n }\n return null\n }\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n result = {\n installed: false,\n eventsAdded: [],\n reason: 'settings.json is not a JSON object'\n }\n return null\n }\n settings = parsed as ClaudeSettings\n }\n\n const hooks = (settings.hooks ??= {})\n const added: string[] = []\n\n for (const event of events) {\n const list = (hooks[event] ??= [])\n const filtered = list\n .map(stripManagedFromEntry)\n .filter((entry): entry is ClaudeHookEntry => entry !== null && entry.hooks.length > 0)\n const managedEntry = buildManagedEntry(event, opts.scriptPath)\n filtered.push(managedEntry)\n hooks[event] = filtered\n added.push(event)\n }\n\n result = { installed: true, eventsAdded: added }\n return JSON.stringify(settings, null, 2) + '\\n'\n })\n\n return result\n}\n\nfunction buildManagedEntry(event: string, scriptPath: string): ClaudeHookEntry {\n const entry: ClaudeHookEntry = {\n hooks: [\n {\n type: 'command',\n command: formatHookCommand(scriptPath),\n [MARKER_KEY]: true\n }\n ]\n }\n if (TOOL_MATCHED_EVENTS.has(event)) entry.matcher = '*'\n return entry\n}\n\n/**\n * Returns the entry with any SlayZone-managed inner hooks removed.\n * Returns null if the entry's `hooks` array is missing or malformed.\n */\nfunction stripManagedFromEntry(entry: unknown): ClaudeHookEntry | null {\n if (entry == null || typeof entry !== 'object') return null\n const e = entry as Partial<ClaudeHookEntry>\n if (!Array.isArray(e.hooks)) return null\n const innerHooks = e.hooks.filter((h) => !isManagedSlayzoneHook(h))\n return { ...e, hooks: innerHooks } as ClaudeHookEntry\n}\n\n/**\n * Predicate: does this inner-hook entry belong to SlayZone? Matches by marker\n * first (canonical), falls back to script path substring (handles legacy /\n * hand-edited installs).\n */\nexport function isManagedSlayzoneHook(hook: unknown): boolean {\n if (hook == null || typeof hook !== 'object') return false\n const h = hook as ClaudeHookCommand\n if (h[MARKER_KEY] === true) return true\n const cmd = typeof h.command === 'string' ? h.command : ''\n // Deliberately narrow: only a path under a `slayzone` dir. This settings file\n // is SHARED with other tools, and `<something>/hooks/notify.sh` is not a\n // SlayZone-specific shape \u2014 Superset registers\n // `\"$SUPERSET_HOME_DIR/hooks/notify.sh\"`, which a broader pattern matches and\n // this installer then DELETES as if it were ours. That is not hypothetical: a\n // wider regex shipped briefly and stripped a user's Superset hooks from every\n // event SlayZone installs. Recognising our own orphans is not worth being able\n // to destroy someone else's config, and the `_slayzoneManaged` marker above\n // already identifies everything we have ever written.\n return cmd.includes('.slayzone/hooks/notify.sh') || cmd.includes('/slayzone/hooks/notify.sh')\n}\n", "import { execFile } from 'node:child_process'\nimport { promisify } from 'node:util'\nimport { getGeminiSettingsPath } from '../dirs'\nimport { updateFileAtomically } from '../fs-utils'\nimport { formatHookCommand } from './hook-paths'\n\nconst execFileAsync = promisify(execFile)\n\nconst MARKER_KEY = '_slayzoneManaged'\n\n/**\n * Gemini CLI hook event names (v0.13.0+). Each maps to one entry in\n * `settings.hooks[event]`. We register only the lifecycle events SlayZone\n * surfaces today; BeforeTool is intentionally omitted (would map to\n * permission-request but adds noise without a UI surface yet).\n */\nexport const GEMINI_HOOK_EVENTS = [\n 'SessionStart',\n 'SessionEnd',\n 'BeforeAgent',\n 'AfterAgent',\n 'AfterTool'\n] as const\n\nconst TOOL_MATCHED_EVENTS = new Set<string>(['AfterTool'])\n\ninterface GeminiHookCommand {\n type: 'command'\n command: string\n [MARKER_KEY]?: boolean\n}\n\ninterface GeminiHookEntry {\n matcher?: string\n sequential?: boolean\n hooks: GeminiHookCommand[]\n}\n\ntype GeminiSettings = {\n hooks?: Record<string, GeminiHookEntry[]>\n [key: string]: unknown\n}\n\nexport interface InstallGeminiHooksOpts {\n /** Absolute path to the notify script. Forwarded into the hook command. */\n scriptPath: string\n /** Override target settings.json path. Defaults to `getGeminiSettingsPath()`. */\n settingsPath?: string\n /** Override list of hook events. Defaults to `GEMINI_HOOK_EVENTS`. */\n events?: readonly string[]\n /**\n * Skip the `gemini --version` probe. Tests pass `true` so the installer\n * runs against a tmp dir without needing the binary on PATH.\n */\n skipBinaryProbe?: boolean\n}\n\nexport interface InstallGeminiHooksResult {\n installed: boolean\n eventsAdded: string[]\n reason?: string\n}\n\n/**\n * Probe for the `gemini` binary. We skip install entirely when absent \u2014\n * unlike Claude (default for many SlayZone users), Gemini is opt-in, so\n * writing `~/.gemini/settings.json` for users who don't have it would\n * pollute their home dir.\n */\nasync function isGeminiInstalled(): Promise<boolean> {\n try {\n await execFileAsync('gemini', ['--version'], { timeout: 2000 })\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Merge SlayZone hook entries into `~/.gemini/settings.json` (atomic, idempotent).\n *\n * Behavior:\n * - `gemini` binary missing \u2192 skip install (no file written, no parent mkdir).\n * - Missing file \u2192 starts from `{}`, mkdir parent.\n * - Malformed JSON \u2192 aborts (does NOT overwrite user data).\n * - For each event: replaces any existing SlayZone-managed entry,\n * preserves user-defined entries.\n * - SlayZone-managed entries identified by `_slayzoneManaged: true` marker\n * or substring match on `notify.sh`.\n * - `AfterTool` gets `matcher: '*'`; lifecycle events have no matcher.\n * - Read+merge+write is one guarded cycle via `updateFileAtomically`.\n */\nexport async function installGeminiHooks(\n opts: InstallGeminiHooksOpts\n): Promise<InstallGeminiHooksResult> {\n // E2E specs assert the file is written; the test computer doesn't have\n // `gemini` on PATH, so the probe would otherwise short-circuit. Same env\n // flag that opts the boot installer back in under PLAYWRIGHT.\n const skipProbe = opts.skipBinaryProbe || process.env.SLAYZONE_E2E_INSTALL_HOOKS === '1'\n if (!skipProbe) {\n const present = await isGeminiInstalled()\n if (!present) {\n return { installed: false, eventsAdded: [], reason: 'gemini binary not on PATH' }\n }\n }\n\n const target = opts.settingsPath ?? getGeminiSettingsPath()\n const events = opts.events ?? GEMINI_HOOK_EVENTS\n\n // Read + merge + write as ONE guarded cycle \u2014 see installClaudeHooks for why a\n // separate read and write silently drops a concurrent peer's entries.\n let result: InstallGeminiHooksResult = { installed: false, eventsAdded: [], reason: 'unwritten' }\n\n await updateFileAtomically(target, (current) => {\n let settings: GeminiSettings\n if (current === null) {\n settings = {}\n } else {\n let parsed: unknown\n try {\n parsed = JSON.parse(current.toString('utf8'))\n } catch {\n result = {\n installed: false,\n eventsAdded: [],\n reason: 'settings.json is not valid JSON \u2014 refusing to overwrite'\n }\n return null\n }\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n result = { installed: false, eventsAdded: [], reason: 'settings.json is not a JSON object' }\n return null\n }\n settings = parsed as GeminiSettings\n }\n\n const hooks = (settings.hooks ??= {})\n const added: string[] = []\n\n for (const event of events) {\n const list = (hooks[event] ??= [])\n const filtered = list\n .map(stripManagedFromEntry)\n .filter((entry): entry is GeminiHookEntry => entry !== null && entry.hooks.length > 0)\n const managedEntry = buildManagedEntry(event, opts.scriptPath)\n filtered.push(managedEntry)\n hooks[event] = filtered\n added.push(event)\n }\n\n result = { installed: true, eventsAdded: added }\n return JSON.stringify(settings, null, 2) + '\\n'\n })\n\n return result\n}\n\nfunction buildManagedEntry(event: string, scriptPath: string): GeminiHookEntry {\n const entry: GeminiHookEntry = {\n hooks: [\n {\n type: 'command',\n command: formatHookCommand(scriptPath),\n [MARKER_KEY]: true\n }\n ]\n }\n if (TOOL_MATCHED_EVENTS.has(event)) entry.matcher = '*'\n return entry\n}\n\nfunction stripManagedFromEntry(entry: unknown): GeminiHookEntry | null {\n if (entry == null || typeof entry !== 'object') return null\n const e = entry as Partial<GeminiHookEntry>\n if (!Array.isArray(e.hooks)) return null\n const innerHooks = e.hooks.filter((h) => !isManagedSlayzoneHook(h))\n return { ...e, hooks: innerHooks } as GeminiHookEntry\n}\n\nexport function isManagedSlayzoneHook(hook: unknown): boolean {\n if (hook == null || typeof hook !== 'object') return false\n const h = hook as GeminiHookCommand\n if (h[MARKER_KEY] === true) return true\n const cmd = typeof h.command === 'string' ? h.command : ''\n // Deliberately narrow: only a path under a `slayzone` dir. This settings file\n // is SHARED with other tools, and `<something>/hooks/notify.sh` is not a\n // SlayZone-specific shape \u2014 Superset registers\n // `\"$SUPERSET_HOME_DIR/hooks/notify.sh\"`, which a broader pattern matches and\n // this installer then DELETES as if it were ours. That is not hypothetical: a\n // wider regex shipped briefly and stripped a user's Superset hooks from every\n // event SlayZone installs. Recognising our own orphans is not worth being able\n // to destroy someone else's config, and the `_slayzoneManaged` marker above\n // already identifies everything we have ever written.\n return cmd.includes('.slayzone/hooks/notify.sh') || cmd.includes('/slayzone/hooks/notify.sh')\n}\n", "import fs from 'fs/promises'\nimport path from 'path'\nimport { exec } from 'child_process'\nimport { promisify } from 'util'\nimport { getCodexHooksPath, getSlayzoneBinDir } from '../dirs'\nimport { updateFileAtomically } from '../fs-utils'\nimport { formatHookCommand } from './hook-paths'\n\nconst execP = promisify(exec)\n\nconst MARKER_KEY = '_slayzoneManaged'\n\n/**\n * Codex CLI hook events (hooks system, stable + default-enabled from 0.129).\n * Each maps to one entry in `hooks.json`'s `hooks[event]` array. These are the\n * standard event names \u2014 the server's `mapEventType()` already aliases them.\n */\nexport const CODEX_HOOK_EVENTS = [\n 'SessionStart',\n 'UserPromptSubmit',\n 'PreToolUse',\n 'PostToolUse',\n 'Stop',\n 'PermissionRequest'\n] as const\n\n// Codex matches tool-scoped events against `tool_name`; `.*` = every tool.\n// Lifecycle events take no matcher (fire unconditionally).\nconst TOOL_MATCHED_EVENTS = new Set<string>(['PreToolUse', 'PostToolUse'])\n\n// Codex `hooks` subsystem is stable + default-enabled from 0.129. Below that,\n// hooks.json may be ignored.\nconst MIN_CODEX_VERSION = { major: 0, minor: 129 }\n\ninterface CodexHookCommand {\n type: 'command'\n command: string\n [MARKER_KEY]?: boolean\n}\n\ninterface CodexHookEntry {\n matcher?: string\n hooks: CodexHookCommand[]\n}\n\ntype CodexHooksFile = {\n hooks?: Record<string, CodexHookEntry[]>\n [key: string]: unknown\n}\n\nexport interface InstallCodexHooksOpts {\n /** Absolute path to the notify script. Forwarded into the hook command. */\n scriptPath: string\n /** Override target hooks.json path. Defaults to `getCodexHooksPath()`. */\n hooksPath?: string\n /** Override list of hook events. Defaults to `CODEX_HOOK_EVENTS`. */\n events?: readonly string[]\n /**\n * Skip the `codex --version` probe. Tests pass `true` so the installer runs\n * against a tmp dir without needing the binary on PATH.\n */\n skipVersionProbe?: boolean\n}\n\nexport interface InstallCodexHooksResult {\n installed: boolean\n eventsAdded: string[]\n reason?: string\n}\n\n/**\n * Merge SlayZone hook entries into `~/.codex/hooks.json` (atomic, idempotent).\n *\n * Replaces the legacy `~/.slayzone/bin/codex` bash wrapper: Codex's first-class\n * hooks system covers every lifecycle event the wrapper synthesized, and a\n * declarative config file works on Windows where an extensionless bash shim\n * cannot.\n *\n * Behavior (mirrors `installClaudeHooks`):\n * - `codex` binary missing \u2192 skip install (no file written). Opt-in like Gemini.\n * - Missing file \u2192 starts from `{}`, mkdir parent.\n * - Malformed JSON \u2192 aborts (does NOT overwrite user data).\n * - For each event: replaces any existing SlayZone-managed entry, preserves\n * user-defined entries. Managed entries carry `_slayzoneManaged: true`.\n * - Read+merge+write is one guarded cycle via `updateFileAtomically`.\n */\nexport async function installCodexHooks(\n opts: InstallCodexHooksOpts\n): Promise<InstallCodexHooksResult> {\n // E2E specs assert the file is written; the computer has no `codex` on PATH.\n const skipProbe = opts.skipVersionProbe || process.env.SLAYZONE_E2E_INSTALL_HOOKS === '1'\n if (!skipProbe) {\n const probed = await probeCodexVersion()\n if (!probed) {\n return { installed: false, eventsAdded: [], reason: 'codex binary not on PATH' }\n }\n if (!isAtLeast(probed, MIN_CODEX_VERSION)) {\n console.warn(\n `[agent-hooks] codex ${probed.raw} detected; hooks system is stable in ` +\n `\u2265${MIN_CODEX_VERSION.major}.${MIN_CODEX_VERSION.minor}. Lifecycle events may not fire.`\n )\n }\n }\n\n const target = opts.hooksPath ?? getCodexHooksPath()\n const events = opts.events ?? CODEX_HOOK_EVENTS\n\n // Read + merge + write as ONE guarded cycle \u2014 see installClaudeHooks for why a\n // separate read and write silently drops a concurrent peer's entries.\n let result: InstallCodexHooksResult = { installed: false, eventsAdded: [], reason: 'unwritten' }\n\n await updateFileAtomically(target, (current) => {\n let config: CodexHooksFile\n if (current === null) {\n config = {}\n } else {\n let parsed: unknown\n try {\n parsed = JSON.parse(current.toString('utf8'))\n } catch {\n result = {\n installed: false,\n eventsAdded: [],\n reason: 'hooks.json is not valid JSON \u2014 refusing to overwrite'\n }\n return null\n }\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n result = { installed: false, eventsAdded: [], reason: 'hooks.json is not a JSON object' }\n return null\n }\n config = parsed as CodexHooksFile\n }\n\n const hooks = (config.hooks ??= {})\n const added: string[] = []\n\n for (const event of events) {\n const list = (hooks[event] ??= [])\n const filtered = list\n .map(stripManagedFromEntry)\n .filter((entry): entry is CodexHookEntry => entry !== null && entry.hooks.length > 0)\n filtered.push(buildManagedEntry(event, opts.scriptPath))\n hooks[event] = filtered\n added.push(event)\n }\n\n result = { installed: true, eventsAdded: added }\n return JSON.stringify(config, null, 2) + '\\n'\n })\n\n return result\n}\n\nfunction buildManagedEntry(event: string, scriptPath: string): CodexHookEntry {\n const entry: CodexHookEntry = {\n hooks: [\n {\n type: 'command',\n // Explicit `bash` invocation: notify.sh is a bash script and needs\n // bash (Git Bash on Windows) regardless. Making it explicit removes any\n // dependency on which shell Codex uses to run the command string.\n command: `bash ${formatHookCommand(scriptPath)}`,\n [MARKER_KEY]: true\n }\n ]\n }\n if (TOOL_MATCHED_EVENTS.has(event)) entry.matcher = '.*'\n return entry\n}\n\n/**\n * Returns the entry with any SlayZone-managed inner hooks removed.\n * Returns null if the entry's `hooks` array is missing or malformed.\n */\nfunction stripManagedFromEntry(entry: unknown): CodexHookEntry | null {\n if (entry == null || typeof entry !== 'object') return null\n const e = entry as Partial<CodexHookEntry>\n if (!Array.isArray(e.hooks)) return null\n const innerHooks = e.hooks.filter((h) => !isManagedSlayzoneHook(h))\n return { ...e, hooks: innerHooks } as CodexHookEntry\n}\n\n/**\n * Predicate: does this inner-hook entry belong to SlayZone? Matches by marker\n * first (canonical), falls back to script path substring (hand-edited installs).\n */\nexport function isManagedSlayzoneHook(hook: unknown): boolean {\n if (hook == null || typeof hook !== 'object') return false\n const h = hook as CodexHookCommand\n if (h[MARKER_KEY] === true) return true\n const cmd = typeof h.command === 'string' ? h.command : ''\n // Deliberately narrow: only a path under a `slayzone` dir. This settings file\n // is SHARED with other tools, and `<something>/hooks/notify.sh` is not a\n // SlayZone-specific shape \u2014 Superset registers\n // `\"$SUPERSET_HOME_DIR/hooks/notify.sh\"`, which a broader pattern matches and\n // this installer then DELETES as if it were ours. That is not hypothetical: a\n // wider regex shipped briefly and stripped a user's Superset hooks from every\n // event SlayZone installs. Recognising our own orphans is not worth being able\n // to destroy someone else's config, and the `_slayzoneManaged` marker above\n // already identifies everything we have ever written.\n return cmd.includes('.slayzone/hooks/notify.sh') || cmd.includes('/slayzone/hooks/notify.sh')\n}\n\n/**\n * Remove the legacy `~/.slayzone/bin/codex` bash wrapper from prior installs.\n * Identified by the wrapper's header marker so we never delete a user file.\n * Idempotent \u2014 returns false when nothing was removed.\n */\nexport async function uninstallCodexWrapper(opts: { wrapperPath?: string } = {}): Promise<boolean> {\n const target = opts.wrapperPath ?? path.join(getSlayzoneBinDir(), 'codex')\n try {\n const content = await fs.readFile(target, 'utf8')\n if (!content.includes('slayzone codex wrapper')) return false\n await fs.unlink(target)\n return true\n } catch (err: unknown) {\n if (isENOENT(err)) return false\n throw err\n }\n}\n\ninterface ParsedVersion {\n major: number\n minor: number\n raw: string\n}\n\nasync function probeCodexVersion(): Promise<ParsedVersion | null> {\n try {\n // Strip ~/.slayzone/bin so a stale wrapper (pre-uninstall) doesn't answer.\n const { stdout } = await execP('codex --version', {\n timeout: 3000,\n env: { ...process.env, PATH: stripSlayzoneBin(process.env.PATH ?? '') }\n })\n return parseCodexVersion(stdout.trim())\n } catch {\n return null\n }\n}\n\nfunction stripSlayzoneBin(pathVar: string): string {\n const sep = process.platform === 'win32' ? ';' : ':'\n const ours = getSlayzoneBinDir()\n return pathVar\n .split(sep)\n .filter((p) => p !== ours)\n .join(sep)\n}\n\n/** Parses \"codex 0.131.0\" / \"0.129.0-alpha\" / \"codex-cli 1.2.3\". Null on unparseable. */\nexport function parseCodexVersion(raw: string): ParsedVersion | null {\n const match = raw.match(/(\\d+)\\.(\\d+)(?:\\.(\\d+))?/)\n if (!match) return null\n return { major: Number(match[1]), minor: Number(match[2]), raw }\n}\n\nfunction isAtLeast(v: ParsedVersion, min: { major: number; minor: number }): boolean {\n if (v.major !== min.major) return v.major > min.major\n return v.minor >= min.minor\n}\n\nfunction isENOENT(err: unknown): boolean {\n return typeof err === 'object' && err != null && (err as { code?: string }).code === 'ENOENT'\n}\n", "import { execFile } from 'node:child_process'\nimport { promisify } from 'node:util'\nimport { getAntigravityHooksPath } from '../dirs'\nimport { updateFileAtomically } from '../fs-utils'\nimport { formatHookCommand } from './hook-paths'\n\nconst execFileAsync = promisify(execFile)\n\n/**\n * Top-level named-hook key SlayZone owns in the Antigravity hooks.json.\n * Antigravity's schema is `{ \"<hook-name>\": { \"<Event>\": [...] } }` \u2014 SlayZone\n * claims this one name, so install = overwrite this key, leave all others intact.\n */\nconst SLAYZONE_HOOK_NAME = 'slayzone-notify'\n\n/**\n * Antigravity (`agy`) hook events SlayZone registers. `agy` does NOT put the\n * event name in the payload, so each handler command is suffixed with the\n * event name as an argv arg (notify.sh reads `$1`).\n *\n * Chosen so notify.sh's fixed `{}` stdout is a SAFE response for every one:\n * PreInvocation `{}` \u2192 no injected steps\n * PostToolUse `{}` \u2192 expected empty output\n * Stop `{}` \u2192 no `decision` \u2192 stop allowed (not \"continue\")\n * `PreToolUse` is intentionally omitted \u2014 its `{}` output (no `decision`) risks\n * gating every tool call.\n */\nexport const ANTIGRAVITY_HOOK_EVENTS = ['PreInvocation', 'PostToolUse', 'Stop'] as const\n\n/** Events whose handler entries take a tool-name `matcher` (regex). */\nconst TOOL_MATCHED_EVENTS = new Set<string>(['PostToolUse'])\n\ninterface AntigravityHookHandler {\n type: 'command'\n command: string\n}\n\ninterface AntigravityHookEntry {\n matcher?: string\n hooks: AntigravityHookHandler[]\n}\n\n/** One named hook: optional `enabled` flag + per-event handler arrays. */\ntype AntigravityNamedHook = {\n enabled?: boolean\n [event: string]: unknown\n}\n\ntype AntigravityHooksFile = Record<string, AntigravityNamedHook>\n\nexport interface InstallAntigravityHooksOpts {\n /** Absolute path to the notify script. Forwarded into the hook command. */\n scriptPath: string\n /** Override target hooks.json path. Defaults to `getAntigravityHooksPath()`. */\n hooksPath?: string\n /** Override list of hook events. Defaults to `ANTIGRAVITY_HOOK_EVENTS`. */\n events?: readonly string[]\n /**\n * Skip the `agy --version` probe. Tests pass `true` so the installer runs\n * against a tmp dir without needing the binary on PATH.\n */\n skipBinaryProbe?: boolean\n}\n\nexport interface InstallAntigravityHooksResult {\n installed: boolean\n eventsAdded: string[]\n reason?: string\n}\n\n/**\n * Probe for the `agy` binary (the Antigravity CLI). We skip install when absent\n * \u2014 like Gemini, Antigravity is opt-in, so writing into `~/.gemini/config/` for\n * users who don't have it would pollute their home dir.\n */\nasync function isAntigravityInstalled(): Promise<boolean> {\n try {\n await execFileAsync('agy', ['--version'], { timeout: 2000 })\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Write SlayZone's notify hook into the Antigravity (`agy`) hooks.json\n * (`~/.gemini/config/hooks.json`) \u2014 atomic, idempotent.\n *\n * Behavior:\n * - `agy` binary missing \u2192 skip install (no file written, no mkdir).\n * - Missing file \u2192 starts from `{}`, mkdir parent.\n * - Malformed JSON \u2192 aborts (does NOT overwrite user data).\n * - Overwrites the whole `slayzone-notify` named-hook key; every OTHER named\n * hook in the file is preserved untouched. Antigravity's named-hook schema\n * makes a dedicated key SlayZone's namespace \u2014 no per-entry markers needed.\n * - Read+merge+write is one guarded cycle via `updateFileAtomically`.\n */\nexport async function installAntigravityHooks(\n opts: InstallAntigravityHooksOpts\n): Promise<InstallAntigravityHooksResult> {\n // E2E specs assert the file is written; the test computer doesn't have `agy`\n // on PATH, so the probe would otherwise short-circuit.\n const skipProbe = opts.skipBinaryProbe || process.env.SLAYZONE_E2E_INSTALL_HOOKS === '1'\n if (!skipProbe) {\n const present = await isAntigravityInstalled()\n if (!present) {\n return { installed: false, eventsAdded: [], reason: 'agy binary not on PATH' }\n }\n }\n\n const target = opts.hooksPath ?? getAntigravityHooksPath()\n const events = opts.events ?? ANTIGRAVITY_HOOK_EVENTS\n\n // Read + merge + write as ONE guarded cycle \u2014 see installClaudeHooks for why a\n // separate read and write silently drops a concurrent peer's entries.\n let result: InstallAntigravityHooksResult = {\n installed: false,\n eventsAdded: [],\n reason: 'unwritten'\n }\n\n await updateFileAtomically(target, (current) => {\n let hooksFile: AntigravityHooksFile\n if (current === null) {\n hooksFile = {}\n } else {\n let parsed: unknown\n try {\n parsed = JSON.parse(current.toString('utf8'))\n } catch {\n result = {\n installed: false,\n eventsAdded: [],\n reason: 'hooks.json is not valid JSON \u2014 refusing to overwrite'\n }\n return null\n }\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n result = { installed: false, eventsAdded: [], reason: 'hooks.json is not a JSON object' }\n return null\n }\n hooksFile = parsed as AntigravityHooksFile\n }\n\n // SlayZone owns the `slayzone-notify` key entirely \u2014 rebuild it from scratch.\n // Other named hooks in the file are left exactly as they were.\n const named: AntigravityNamedHook = {}\n const added: string[] = []\n for (const event of events) {\n named[event] = [buildEntry(event, opts.scriptPath)]\n added.push(event)\n }\n hooksFile[SLAYZONE_HOOK_NAME] = named\n\n result = { installed: true, eventsAdded: added }\n return JSON.stringify(hooksFile, null, 2) + '\\n'\n })\n\n return result\n}\n\nfunction buildEntry(event: string, scriptPath: string): AntigravityHookEntry {\n // Antigravity omits the event name from the hook payload \u2014 pass it as an argv\n // arg so notify.sh ($1) can resolve it. Event names are plain identifiers\n // (no shell metacharacters), so appending unquoted is safe.\n const entry: AntigravityHookEntry = {\n hooks: [{ type: 'command', command: `${formatHookCommand(scriptPath)} ${event}` }]\n }\n if (TOOL_MATCHED_EVENTS.has(event)) entry.matcher = '*'\n return entry\n}\n", "import { getOpencodePluginPath } from '../dirs'\nimport { writeFileIfChanged } from '../fs-utils'\nimport { toPosixPath } from './hook-paths'\n\nconst NOTIFY_PATH_PLACEHOLDER = '{{NOTIFY_PATH}}'\n\nexport interface InstallOpencodePluginOpts {\n /**\n * Absolute path to the notify script (returned by installNotifyScript).\n * Substituted into the plugin's `{{NOTIFY_PATH}}` placeholder.\n */\n notifyPath: string\n /** The plugin body to install. REQUIRED \u2014 inlined by the caller's bundler; see\n * `InstallNotifyScriptOpts.source` for why this module owns no bundler syntax. */\n source: string\n /** Override target path. Defaults to `getOpencodePluginPath()`. */\n targetPath?: string\n}\n\nexport interface InstallOpencodePluginResult {\n path: string\n changed: boolean\n}\n\n/**\n * Write the OpenCode JS plugin to `${XDG_CONFIG_HOME:-~/.config}/opencode/plugin/slayzone-notify.js`\n * with mode 0644 (loaded by OpenCode runtime as ESM; not executed directly).\n * Idempotent: re-runs are no-ops when the substituted content is unchanged.\n *\n * The `{{NOTIFY_PATH}}` placeholder in the bundled source is replaced with the\n * absolute path to `~/.slayzone/hooks/notify.sh` so the plugin can shell out\n * without env-var indirection (plugin runs inside OpenCode's process where\n * SLAYZONE_AGENT_HOOK_URL is set, but the notify path resolves at install time).\n */\nexport async function installOpencodePlugin(\n opts: InstallOpencodePluginOpts\n): Promise<InstallOpencodePluginResult> {\n const target = opts.targetPath ?? getOpencodePluginPath()\n const rawSource = opts.source\n // Forward-slash the path: the plugin substitutes it into a JS string literal\n // and then shells out `bash <path>` \u2014 backslashes would break both the JS\n // literal and bash's path parsing on Windows.\n const content = rawSource.split(NOTIFY_PATH_PLACEHOLDER).join(toPosixPath(opts.notifyPath))\n const changed = await writeFileIfChanged(target, content, 0o644)\n return { path: target, changed }\n}\n", "/**\n * Agent lifecycle hook installers \u2014 shared by EVERY process that can spawn an\n * agent, which since the hub/computer split means the desktop app AND a standalone\n * computer.\n *\n * WHY THIS IS NOT IN THE APP ANYMORE. These lived under\n * `apps/app/src/main/agent-hooks/`, called from exactly one place. A computer on a\n * box where the desktop app never runs therefore installed nothing: no\n * `~/.slayzone/hooks/notify.sh`, no `~/.claude/settings.json` entry, so no hook\n * ever fired and every agent it spawned showed no running state and no unread\n * marker. Hook-driven status is most of what the terminal UI is, so a remote\n * computer was silently missing it.\n *\n * NO BUNDLER SYNTAX LIVES HERE. The two installers that ship a file body take\n * that body as a required `source` parameter instead of importing it. The app\n * inlines it with Vite (`?raw`), the computer with esbuild (`text` loader) \u2014 one\n * shared implementation, each composition root supplying content the way its own\n * build understands. A runtime read would be simpler but cannot work: the\n * `@slayzone/hooks` package is private and never published, and the computer ships\n * as a single self-contained bundle.\n *\n * MACHINE-WIDE, NEVER ROLE- OR CHANNEL-SCOPED. Every path here resolves through\n * `getMachineSlayzoneDir()` / the `get*SettingsPath()` helpers, i.e. `$HOME`-\n * anchored `~/.slayzone` and `~/.claude` \u2014 deliberately NOT `getSupervisedRoot()`\n * and NOT `getSlayzoneHomeDir()`, which follows `SLAYZONE_ROOT`. The files being\n * written belong to OTHER tools whose own config is one file per machine, so\n * scoping ours by release channel would just move the collision into their\n * config instead of removing it. Concurrency between installers is handled in\n * the write primitive (`updateFileAtomically`), not by giving each writer its\n * own directory.\n *\n * @module platform/agent-hooks\n */\nexport { installNotifyScript, parseNotifyVersion } from './notify-script-installer'\nexport type { InstallNotifyScriptOpts } from './notify-script-installer'\nexport { installClaudeHooks, CLAUDE_HOOK_EVENTS } from './claude-hook-installer'\nexport type { InstallClaudeHooksOpts, InstallClaudeHooksResult } from './claude-hook-installer'\nexport { installGeminiHooks, GEMINI_HOOK_EVENTS } from './gemini-hook-installer'\nexport type { InstallGeminiHooksOpts, InstallGeminiHooksResult } from './gemini-hook-installer'\nexport { installCodexHooks, uninstallCodexWrapper, CODEX_HOOK_EVENTS } from './codex-hook-installer'\nexport type { InstallCodexHooksOpts, InstallCodexHooksResult } from './codex-hook-installer'\nexport { installAntigravityHooks, ANTIGRAVITY_HOOK_EVENTS } from './antigravity-hook-installer'\nexport type {\n InstallAntigravityHooksOpts,\n InstallAntigravityHooksResult\n} from './antigravity-hook-installer'\nexport { installOpencodePlugin } from './opencode-plugin-installer'\nexport type {\n InstallOpencodePluginOpts,\n InstallOpencodePluginResult\n} from './opencode-plugin-installer'\nexport { formatHookCommand, toPosixPath } from './hook-paths'\n", "#!/bin/sh\n# SlayZone agent lifecycle hook \u2014 BENIGN DUMB FORWARDER.\n#\n# SLAYZONE_NOTIFY_VERSION=4\n# ^ Bump on EVERY change to this file. The installer (notify-script-installer.ts)\n# refuses to overwrite an on-disk script with a strictly-lower version, so a\n# stale/older release channel can never downgrade a newer script on the\n# shared ~/.slayzone/hooks/notify.sh. Newer is always backward-compatible.\n#\n# WHY THIS FILE IS LOGIC-FREE (the sustainable fix):\n# ~/.slayzone/hooks/notify.sh is a SINGLE file shared by every release channel\n# (getSlayzoneHomeDir() is NOT release-channel-scoped), and agents find it via\n# the shared ~/.claude/settings.json pointer \u2014 so it CANNOT be\n# release-channel-scoped. A shared file must therefore be BENIGN: it must\n# contain no field-picking logic, so it does not matter which release channel's\n# copy wins the last write. The previous version cherry-picked named fields\n# (taskId, slaySessionId, session_id, hook_event_name, \u2026) to forward; when an\n# OLDER release channel's copy won, its field list was missing `slaySessionId`,\n# so warm-pool sessions became invisible (no task resolution \u2192 no running\n# spinner, no unread dot). This version forwards THREE opaque channels and lets\n# the SERVER do all field extraction:\n# - ctx : $SLAYZONE_AGENT_HOOK_CONTEXT \u2014 an opaque JSON blob the app packs at\n# spawn with every identity field (taskId/slaySessionId/projectId/\n# agentId/releaseChannel). Forwarded VERBATIM; never parsed here.\n# v4 renamed it from $SLAYZONE_HOOK_CONTEXT (pairs with\n# $SLAYZONE_AGENT_HOOK_URL); the old name is still read as a FALLBACK\n# because this file is shared newest-wins across release channels, so\n# an OLDER channel's app spawns agents that only set the old name.\n# Dropping the fallback before every channel ships the new name would\n# reproduce the v2\u2192v3 clobber (empty ctx \u2192 no task resolution \u2192 no\n# running spinner, no unread dot).\n# - raw : the hook payload piped on stdin (Claude/Codex/Gemini/Antigravity).\n# - arg : argv $1 \u2014 Antigravity passes the EVENT NAME here (its payload omits\n# it); the OpenCode plugin passes the whole JSON payload here (no\n# stdin). Forwarded opaquely as a JSON string; the server decides.\n# Adding a new identity field later touches ONLY the app (writes ctx) and the\n# server (reads ctx) \u2014 NEVER this script. That is the whole point.\n#\n# Installed by the app at ~/.slayzone/hooks/notify.sh (mode 0755).\n# Invoked by the host agent (e.g. Claude Code, Codex) via its hooks config.\n#\n# Required env (injected at PTY/chat spawn by buildMcpEnv):\n# SLAYZONE_AGENT_HOOK_URL - target URL, e.g. http://127.0.0.1:PORT/api/agent-hook\n# (a remote runner overlays its OWN loopback URL)\n# SLAYZONE_AGENT_ID - claude-code | codex | gemini | antigravity | opencode\n# Optional:\n# SLAYZONE_AGENT_HOOK_CONTEXT - opaque identity blob (see above); sent as `ctx`\n# SLAYZONE_HOOK_CONTEXT - retired pre-v4 name; read only as a fallback\n#\n# Contract: ALWAYS exit 0. Hook failures must NOT bubble into the agent TUI\n# (Claude renders red error walls otherwise). Silent on any failure.\n\nset -e\n\n# Bail silently when not configured (e.g. agent run outside SlayZone).\n[ -z \"$SLAYZONE_AGENT_HOOK_URL\" ] && exit 0\n[ -z \"$SLAYZONE_AGENT_ID\" ] && exit 0\n\n# Gemini blocks waiting for a JSON response on stdout; empty {} = no-op.\n# Claude/Codex/Mastra/Droid discard our stdout, so this is universal.\n# Emit before payload read so it fires even if downstream POST fails.\nprintf '{}\\n'\n\n# The three opaque channels. NO grep/parse/named-field extraction here.\n# ARG = argv $1 verbatim (may be an event name, a JSON payload, or empty).\n# RAW = stdin verbatim (the hook payload, or empty).\nARG=\"${1:-}\"\n# Read stdin ONLY when argv $1 is NOT already the JSON payload. This is\n# load-bearing, not an optimization: the OpenCode plugin invokes us as\n# `bash notify.sh '<json>'` with NO stdin write, and inside a SlayZone PTY the\n# child inherits the terminal's stdin \u2014 which never sends EOF. An unconditional\n# `cat` would block FOREVER there, hanging the plugin's awaited exec (dark\n# badges \u2014 the exact failure this script exists to prevent). Every stdin-driven\n# agent (Claude/Codex/Gemini/Antigravity) writes its payload then CLOSES stdin,\n# so `cat` returns promptly for them. Mirrors the guard the pre-v2 script had.\ncase \"$ARG\" in\n '{'*) RAW=\"\" ;;\n *) RAW=$(cat 2>/dev/null || true) ;;\nesac\n\n# JSON-encode an arbitrary string into a quoted JSON string literal. This is the\n# ONLY logic left, and it is GENERIC string-escaping \u2014 NOT per-field naming, so\n# it cannot rot the way a field list does. Escapes backslash, double-quote, and\n# the whitespace control chars that occur in real hook data (\\n \\r \\t). Other\n# C0 control bytes (\\x00-\\x1f) are not escaped \u2014 they never appear in an event\n# name or a JSON-stringified payload, the only two things that reach argv $1.\n# POSIX awk; falls back to a bare empty string on any failure.\njson_encode_string() {\n awk 'BEGIN {\n s = ARGV[1]\n out = \"\\\"\"\n n = length(s)\n for (i = 1; i <= n; i++) {\n c = substr(s, i, 1)\n if (c == \"\\\\\") out = out \"\\\\\\\\\"\n else if (c == \"\\\"\") out = out \"\\\\\\\"\"\n else if (c == \"\\n\") out = out \"\\\\n\"\n else if (c == \"\\r\") out = out \"\\\\r\"\n else if (c == \"\\t\") out = out \"\\\\t\"\n else out = out c\n }\n print out \"\\\"\"\n exit\n }' \"$1\" 2>/dev/null || printf '\"\"'\n}\n\n# ctx: forwarded VERBATIM (already valid JSON from the app), or `{}` when unset.\n# New name wins; the retired pre-v4 name is the fallback for an older release\n# channel's app spawning against this newer shared script (see header). Still NO\n# parsing \u2014 a name choice, not field-picking logic.\nCTX=\"${SLAYZONE_AGENT_HOOK_CONTEXT:-$SLAYZONE_HOOK_CONTEXT}\"\n[ -z \"$CTX\" ] && CTX='{}'\n\n# raw: the stdin payload verbatim if it is present AND looks like JSON (starts\n# with '{'); otherwise JSON `null`. The server treats a null raw as \"no stdin\".\ncase \"$RAW\" in\n '{'*) RAW_FIELD=\"$RAW\" ;;\n *) RAW_FIELD=\"null\" ;;\nesac\n\n# arg: argv $1 as a JSON string (or null when empty). Opaque \u2014 the server decides\n# whether it is an event name (Antigravity) or a JSON payload (OpenCode plugin).\nif [ -n \"$ARG\" ]; then\n ARG_FIELD=$(json_encode_string \"$ARG\")\nelse\n ARG_FIELD=\"null\"\nfi\n\nAGENT_ID_FIELD=$(json_encode_string \"$SLAYZONE_AGENT_ID\")\n\nENVELOPE=\"{\\\"ctx\\\":$CTX,\\\"raw\\\":$RAW_FIELD,\\\"arg\\\":$ARG_FIELD,\\\"agentId\\\":$AGENT_ID_FIELD}\"\n\n# Fire-and-forget. Errors swallowed; never block the agent.\n# curl is the primary path \u2014 present on macOS, most Linux, and bundled with\n# Git for Windows (whose bash runs this script). wget is a fallback for minimal\n# environments; if neither exists the POST is skipped silently. NO auth header:\n# the target is always loopback (local sidecar, or the runner's own loopback),\n# so no per-agent bearer is ever attached.\nif command -v curl >/dev/null 2>&1; then\n curl -s \\\n --connect-timeout 2 \\\n --max-time 5 \\\n -X POST \\\n -H 'Content-Type: application/json' \\\n --data-binary \"$ENVELOPE\" \\\n \"$SLAYZONE_AGENT_HOOK_URL\" \\\n >/dev/null 2>&1 || true\nelif command -v wget >/dev/null 2>&1; then\n wget -q -O /dev/null \\\n --timeout=5 \\\n --header='Content-Type: application/json' \\\n --post-data=\"$ENVELOPE\" \\\n \"$SLAYZONE_AGENT_HOOK_URL\" \\\n >/dev/null 2>&1 || true\nfi\n\nexit 0\n", "// SlayZone opencode plugin v1\n//\n// Forwards OpenCode SDK session lifecycle events to the SlayZone agent-hook\n// notify script over a local shell exec. Plugin is loaded by OpenCode from\n// ${XDG_CONFIG_HOME:-~/.config}/opencode/plugin/slayzone-notify.js\n//\n// The {{NOTIFY_PATH}} placeholder is substituted by the SlayZone installer\n// (packages/apps/app/src/main/agent-hooks/opencode-plugin-installer.ts) at\n// install time with the absolute path to `~/.slayzone/hooks/notify.sh`.\n//\n// Behavior:\n// - No-op when SLAYZONE_TASK_ID is unset (plugin only fires inside SlayZone PTYs).\n// - Subagent (child session) events are suppressed \u2014 oh-my-opencode + similar\n// tools spawn many child sessions and would otherwise flap Start/Stop.\n// - On client.session.list() error, sessions are assumed CHILD (safer to\n// suppress than emit a false-positive Start/Stop).\n// - Handles both modern (session.status w/ nested type) and legacy\n// (session.busy / session.idle) event shapes for forward compat.\n// - Singleton guard prevents double-load if OpenCode re-imports the plugin.\n\nexport const SlayzoneNotifyPlugin = async ({ $, client }) => {\n if (globalThis.__slayzoneOpencodePluginV1) return {}\n globalThis.__slayzoneOpencodePluginV1 = true\n if (!process?.env?.SLAYZONE_TASK_ID) return {}\n\n const notifyPath = '{{NOTIFY_PATH}}'\n let currentState = 'idle' // 'idle' | 'busy'\n let rootSessionID = null // first non-child session we see\n let stopSent = false // dedup Stop emits\n const childSessionCache = new Map() // sessionID -> isChild bool\n\n const notify = async (eventName) => {\n const payload = JSON.stringify({ hook_event_name: eventName })\n try {\n await $`bash ${notifyPath} ${payload}`\n } catch {\n // Hook failures must never bubble into the OpenCode TUI.\n }\n }\n\n const isChildSession = async (sessionID) => {\n if (!sessionID) return true\n if (!client?.session?.list) return true\n if (childSessionCache.has(sessionID)) return childSessionCache.get(sessionID)\n try {\n const sessions = await client.session.list()\n const session = sessions.data?.find((s) => s.id === sessionID)\n const isChild = !!session?.parentID\n childSessionCache.set(sessionID, isChild)\n return isChild\n } catch {\n // On error, assume CHILD \u2014 safer than emitting a false-positive Start/Stop.\n return true\n }\n }\n\n const handleBusy = async (sessionID) => {\n if (!rootSessionID) rootSessionID = sessionID\n if (sessionID !== rootSessionID) return\n if (currentState === 'idle') {\n currentState = 'busy'\n stopSent = false\n await notify('Start')\n }\n }\n\n const handleStop = async (sessionID) => {\n if (rootSessionID && sessionID !== rootSessionID) return\n if (currentState === 'busy' && !stopSent) {\n currentState = 'idle'\n stopSent = true\n await notify('Stop')\n rootSessionID = null // reset for next session\n }\n }\n\n return {\n event: async ({ event }) => {\n const sessionID = event.properties?.sessionID ?? event.properties?.info?.id ?? null\n\n if (event.type === 'session.created') {\n const isChild = Boolean(event.properties?.info?.parentID)\n if (sessionID) childSessionCache.set(sessionID, isChild)\n if (!isChild) await notify('SessionStart')\n return\n }\n\n if (event.type === 'session.deleted') {\n const cached = sessionID ? childSessionCache.get(sessionID) : undefined\n const isChild = cached !== undefined ? cached : await isChildSession(sessionID)\n if (!isChild) await notify('SessionEnd')\n if (sessionID) childSessionCache.delete(sessionID)\n return\n }\n\n if (await isChildSession(sessionID)) return\n\n if (event.type === 'session.status') {\n const status = event.properties?.status\n if (status?.type === 'busy') await handleBusy(sessionID)\n else if (status?.type === 'idle') await handleStop(sessionID)\n }\n // Backwards-compat: some OpenCode versions emit busy/idle as top-level events.\n if (event.type === 'session.busy') await handleBusy(sessionID)\n if (event.type === 'session.idle') await handleStop(sessionID)\n if (event.type === 'session.error') await handleStop(sessionID)\n },\n 'permission.ask': async (_permission, output) => {\n if (output.status === 'ask') await notify('PermissionRequest')\n }\n }\n}\n", "/**\n * Install the agent lifecycle hooks this machine needs, at computer boot.\n *\n * WHY A COMPUTER DOES THIS AT ALL. Agent status \u2014 the running spinner, the unread\n * marker, turn boundaries \u2014 is driven entirely by hook events: the agent runs\n * `~/.slayzone/hooks/notify.sh`, which POSTs to whoever spawned it. The installers\n * used to live inside the desktop app and were called from exactly one place, so\n * a computer on a box where the app never runs installed nothing at all: no\n * notify.sh, no `~/.claude/settings.json` entry, therefore no hook, therefore\n * every agent it spawned looked permanently idle. The computer spawns agents, so\n * the computer has to install their hooks.\n *\n * MACHINE-WIDE PATHS, NOT `--root`. Everything here lands in `$HOME` \u2014\n * `~/.slayzone/hooks/`, `~/.claude/settings.json`, `~/.codex/hooks.json`, \u2026 \u2014\n * never under the computer's own `--root`, and that is enforced by resolving\n * through `getMachineSlayzoneDir()` rather than `getSlayzoneHomeDir()` (which\n * follows `SLAYZONE_ROOT` and would drag the hooks dir along with it). `--root`\n * can point anywhere and there can be several on one box, but the files being\n * written belong to OTHER tools that read exactly one path per machine \u2014 and\n * `~/.claude/settings.json` stores the notify.sh PATH, so a root-scoped answer\n * would have each computer write its own path and the last boot win.\n *\n * Because every writer now computes the same path and the same bytes, concurrent\n * installers converge rather than fight; the lock in `updateFileAtomically` keeps\n * the file itself consistent while they do.\n *\n * BEFORE ANY PTY. Called before the computer accepts work: an agent that starts\n * against a missing or half-written hook file produces exactly the \"stuck\n * running\" state this exists to prevent.\n *\n * BEST-EFFORT. A failure here degrades status reporting; it must never stop a\n * computer from coming up and doing work. Logged, never thrown.\n */\nimport {\n installAntigravityHooks,\n installClaudeHooks,\n installCodexHooks,\n installGeminiHooks,\n installNotifyScript,\n installOpencodePlugin,\n uninstallCodexWrapper\n} from '@slayzone/platform/agent-hooks'\n// The `?raw` suffix is resolved at build time by the esbuild plugin in build.mjs\n// (Vite's spelling, so this file reads the same as the desktop app's seam). The\n// shared installers take these as parameters and own no bundler syntax.\n// @ts-expect-error -- ?raw is a build feature, not a typed module.\nimport notifyScriptRaw from '@slayzone/hooks/notify.sh?raw'\n// @ts-expect-error -- ?raw is a build feature, not a typed module.\nimport opencodePluginRaw from '@slayzone/hooks/opencode-plugin.js?raw'\n\nconst asString = (v: unknown): string => (typeof v === 'string' ? v : String(v))\n\nexport async function installAgentHooks(\n log: (message: string, meta?: Record<string, unknown>) => void\n): Promise<void> {\n try {\n const { path: scriptPath } = await installNotifyScript({\n source: asString(notifyScriptRaw)\n })\n await installClaudeHooks({ scriptPath })\n await installCodexHooks({ scriptPath })\n // Legacy ~/.slayzone/bin/codex bash wrapper from older installs.\n await uninstallCodexWrapper()\n await installGeminiHooks({ scriptPath })\n await installAntigravityHooks({ scriptPath })\n await installOpencodePlugin({\n notifyPath: scriptPath,\n source: asString(opencodePluginRaw)\n })\n log('agent hooks installed', { scriptPath })\n } catch (err) {\n log('agent hook install failed (non-fatal \u2014 agent status may not update)', {\n error: err instanceof Error ? err.message : String(err)\n })\n }\n}\n", "/**\n * slayzone-computer CLI entrypoint.\n *\n * SLAYZONE_HUB_ADDRESS=hub:8443 \\\n * SLAYZONE_HUB_JOIN_TOKEN=... \\\n * slayzone-computer\n *\n * SLAYZONE_HUB_ADDRESS carries the hub AUTHORITY only (host[:port]); the dial\n * scheme (ws/wss) is derived from the host (loopback \u2192 ws, else wss), and\n * `/computers` is appended.\n *\n * On an interactive terminal a fresh computer (no join token AND no stored\n * credentials) is prompted for its join token + path-jail + name, then offered\n * to persist them to <ROOT>/computer.config.json \u2014 see `maybeInteractiveSetup`. Piped /\n * supervised / SLAYZONE_NONINTERACTIVE runs skip that and behave exactly as\n * before (fail-fast usage error when the token is missing).\n *\n * See `config.ts` for the full set of SLAYZONE_* variables and the\n * <ROOT>/computer.config.json file.\n */\n\nimport { hostname } from 'node:os'\nimport { delimiter } from 'node:path'\nimport { canPrompt, runInteractiveConfig } from '@slayzone/platform/config-prompt'\nimport {\n getComputerConfigFilePath,\n loadComputerConfigFile\n} from '@slayzone/platform/slayzone-config'\nimport { hubUrlFromAddr } from '@slayzone/platform/hub-addr'\nimport { COMPUTER_EXIT_NEEDS_RE_ENROLLMENT } from '@slayzone/computer-transport/shared'\nimport { createFileCredentialStore, hubHostFromUrl } from '@slayzone/computer-transport/client'\nimport { ENV_VARS, loadComputerConfig } from './config'\nimport { startComputer } from './main'\n\n/**\n * First-run interactive setup for a STANDALONE computer. Runs ONLY when\n * {@link canPrompt} and the computer has no usable way to reach a hub yet:\n * - no join token (env / computer.config.json), AND\n * - no stored credentials for an already-known hub URL.\n * In every other case (token present, already enrolled, non-interactive) this\n * is a no-op and the boot is byte-identical to before.\n *\n * Prompts the join token (embeds hub URL + cert pin), the filesystem path-jail\n * (default: the launch dir), and an optional display name (default: hostname \u2014\n * left unset unless the user types a custom one, so it resolves live). On a\n * `[Y/n]`-confirm the values persist to <ROOT>/computer.config.json so later boots\n * need no prompt. The join token is also seeded into `process.env` (the resolver\n * reads it via ENV_VARS.joinToken); the name + path-jail have NO env channel, so\n * this returns them to `main` to layer over the config even on a declined save.\n */\nasync function maybeInteractiveSetup(): Promise<{\n name?: string\n allowedRoots?: string[]\n}> {\n if (!canPrompt()) return {}\n\n const cfg = loadComputerConfigFile()\n // A join token is self-sufficient (first contact) \u2192 nothing to ask.\n if ((process.env[ENV_VARS.joinToken] ?? cfg.joinToken) !== undefined) return {}\n\n // Already enrolled? A stored credential for the known hub host means we can\n // reconnect without a token. Skip the prompt in that case. The env channel\n // carries authority only, so compose it into a url (scheme from the host) before\n // deriving the credential-store host key; computer.config.json still carries a full url.\n const envAddress = process.env[ENV_VARS.hubAddress]\n const hubUrl =\n envAddress !== undefined ? hubUrlFromAddr(envAddress, 'ws', '/computers') : cfg.hubUrl\n if (hubUrl !== undefined) {\n try {\n // Creds derive from the ROOT anchor (`<ROOT>/computer.state.json`) \u2014 no override knob.\n const store = createFileCredentialStore(hubHostFromUrl(hubUrl))\n if (await store.load()) return {}\n } catch {\n // Unreadable url/creds \u2192 fall through to prompting.\n }\n }\n\n const defaultRoot = process.env.SLAYZONE_ROOT ?? process.cwd()\n const result = await runInteractiveConfig({\n title: 'Computer setup \u2014 values to save to computer.config.json:',\n configPath: getComputerConfigFilePath(),\n fields: [\n {\n configKey: 'joinToken',\n envKey: ENV_VARS.joinToken,\n label: 'Hub join token (from `POST /api/computers/join-token` on the hub)'\n },\n {\n // envKey is inert \u2014 the resolver has no env channel for the path-jail\n // (like `computerName` below). A saved value reaches computer.config.json (re-read\n // below); a declined-save value is threaded into loadComputerConfig via the\n // returned allowedRoots.\n configKey: 'allowedRoots',\n envKey: 'SLAYZONE_COMPUTER_ALLOWED_ROOTS',\n label: 'Filesystem roots the computer may access (comma-separated)',\n default: defaultRoot,\n transform: (raw) => {\n const roots = raw\n .split(',')\n .map((r) => r.trim())\n .filter((r) => r.length > 0)\n return roots.length > 0 ? { config: roots, env: roots.join(delimiter) } : null\n }\n },\n {\n // No default \u2192 an empty answer is SKIPPED (not persisted), so the computer\n // name resolves to the live hostname each boot instead of a pinned value.\n // envKey is inert here \u2014 the resolver has no env channel for the name; a\n // saved value reaches computer.config.json (re-read below), a declined-save value\n // is threaded into loadComputerConfig via the returned name.\n configKey: 'computerName',\n envKey: 'SLAYZONE_COMPUTER_NAME',\n label: 'Computer display name',\n hint: `default: ${hostname()}`\n }\n ]\n })\n\n // Return the prompted name + path-jail (saved or this-run-only) so main can\n // layer them over the shared config even when the user declines persisting.\n const collectedName = result.collected.find((c) => c.field.configKey === 'computerName')\n const collectedRoots = result.collected.find((c) => c.field.configKey === 'allowedRoots')\n const out: { name?: string; allowedRoots?: string[] } = {}\n if (typeof collectedName?.config === 'string') out.name = collectedName.config\n if (Array.isArray(collectedRoots?.config)) out.allowedRoots = collectedRoots.config as string[]\n return out\n}\n\nasync function main(): Promise<void> {\n // ROOT anchoring (standalone only): a bare `slayzone-computer` anchors its\n // computer.config.json + credential store to the launch dir. Seed BEFORE loadComputerConfig\n // (which reads <ROOT>/computer.config.json via getSlayzoneHomeDir). Skipped when\n // supervised \u2014 the Electron host supplies the computer's env in full. Operator\n // env still wins (explicit SLAYZONE_ROOT respected).\n if (process.env.SLAYZONE_SUPERVISED !== '1' && !process.env.SLAYZONE_ROOT) {\n process.env.SLAYZONE_ROOT = process.cwd()\n }\n\n // Interactive first-run setup (TTY only) \u2014 may seed the join token into env +\n // write computer.config.json before the resolver below reads them. No-op when\n // non-interactive / enrolled. Returns the prompted display name + path-jail (if\n // any) so a declined-save still applies them this boot (neither has an env\n // channel).\n const prompted = await maybeInteractiveSetup()\n\n let config\n try {\n config =\n prompted.name !== undefined || prompted.allowedRoots !== undefined\n ? loadComputerConfig(process.env, {\n ...loadComputerConfigFile(),\n ...(prompted.name !== undefined ? { computerName: prompted.name } : {}),\n ...(prompted.allowedRoots !== undefined ? { allowedRoots: prompted.allowedRoots } : {})\n })\n : loadComputerConfig()\n } catch (err) {\n process.stderr.write(`slayzone-computer: ${err instanceof Error ? err.message : String(err)}\\n`)\n process.stderr.write(\n `usage: ${ENV_VARS.hubAddress}=<hub-host[:port]> [${ENV_VARS.joinToken}=<token>] slayzone-computer\\n`\n )\n process.exitCode = 1\n return\n }\n\n // FS path-jail default: if the operator declared no allowedRoots (computer.config.json),\n // scope the computer to its own ROOT (the launch dir / SLAYZONE_ROOT). This is a\n // narrow, locally-owned default \u2014 NOT the whole home dir, and NEVER hub-pushed.\n // An operator widens it by listing project dirs under `allowedRoots` in\n // <ROOT>/computer.config.json. loadComputerConfig stays hermetic; the default is applied\n // here where SLAYZONE_ROOT is resolved.\n if (config.allowedRoots.length === 0 && process.env.SLAYZONE_ROOT) {\n config.allowedRoots = [process.env.SLAYZONE_ROOT]\n }\n\n const log = (message: string, meta?: Record<string, unknown>): void => {\n const suffix = meta && Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : ''\n process.stdout.write(`[computer] ${message}${suffix}\\n`)\n }\n\n // Agent lifecycle hooks, BEFORE accepting any work. This computer spawns agents,\n // and their status (running spinner, unread marker) is reported only through\n // these hooks \u2014 a box that never runs the desktop app would otherwise have none\n // installed, and every agent here would look permanently idle. Awaited so no pty\n // can start against a half-written hook file; best-effort inside, so a failure\n // degrades status reporting without stopping the computer.\n //\n // Skipped when SUPERVISED: the Electron host installs the very same files from\n // the very same shared installers during its own boot, so doing it again here\n // would be two writers racing for no gain.\n if (process.env.SLAYZONE_SUPERVISED !== '1') {\n const { installAgentHooks } = await import('./agent-hooks')\n await installAgentHooks(log)\n }\n\n const handle = startComputer(config, {\n log,\n onShutdown: () => {\n process.exitCode = 0\n }\n })\n\n // The dialer gives up on fatal auth errors (bad join token, missing creds);\n // exit non-zero so supervisors notice instead of idling forever.\n //\n // Exit code 78 (EX_CONFIG, sysexits.h) is reserved for \"the hub no longer\n // recognizes this computer\". A supervisor cannot fix that by restarting \u2014 only an\n // operator re-enrolling can \u2014 so it needs to distinguish that from a crash, and\n // an exit code is a far sturdier channel for that than matching a log line.\n handle.dialer.events.on('error', ({ fatal, reason }) => {\n if (reason === 'needs-re-enrollment') {\n process.exitCode = COMPUTER_EXIT_NEEDS_RE_ENROLLMENT\n return\n }\n if (fatal) process.exitCode = 1\n })\n\n let stopping = false\n const gracefulStop = (signal: string): void => {\n if (stopping) return\n stopping = true\n log(`received ${signal}, stopping`)\n void handle.stop().then(() => {\n process.exitCode ??= 0\n })\n }\n process.on('SIGINT', () => gracefulStop('SIGINT'))\n process.on('SIGTERM', () => gracefulStop('SIGTERM'))\n}\n\nvoid main()\n", "/**\n * Interactive first-run setup for the STANDALONE hub + computer bins.\n *\n * When a standalone `slayzone-hub` / `slayzone-computer` boots on an interactive\n * terminal and a required (computer) or recommended (hub) value is missing, the\n * bin prompts for it, prints a summary, and \u2014 after a `[Y/n]` confirmation \u2014\n * persists it to whichever config file the caller names (`hub.config.json` or\n * `computer.config.json`) via {@link updateJsonFile}. Values collected this run\n * are also seeded into `process.env` so the bin's EXISTING config-resolution\n * path (which reads env) picks them up unchanged \u2014 the prompt is just an\n * interactive env producer sitting at the very top of the pipeline.\n *\n * NEVER interactive when: stdin is not a TTY (CI, pipes, the install-handshake\n * test's piped stdio), the Electron host supervises the bin\n * (`SLAYZONE_SUPERVISED=1`), or the operator opts out (`SLAYZONE_NONINTERACTIVE=1`).\n * In every non-interactive case the caller skips this module entirely and the\n * boot stays byte-identical to today (auto-gen / fail-fast).\n *\n * Lives in @slayzone/platform and is exposed on the lean `./config-prompt`\n * SUBPATH so the computer bundle can import it WITHOUT pulling the platform barrel\n * (which references better-sqlite3). It depends only on `./slayzone-config` +\n * node builtins.\n *\n * @module platform/config-prompt\n */\n\nimport { createInterface } from 'node:readline/promises'\nimport { stdin, stdout } from 'node:process'\nimport { updateJsonFile } from './slayzone-config'\n\n/**\n * Minimal line-based console IO. The default implementation wraps\n * `node:readline/promises` over stdin/stdout; tests inject a scripted fake.\n */\nexport interface PromptIO {\n /** Print `question`, read one line, resolve to it (raw, untrimmed). */\n ask(question: string): Promise<string>\n /** Write a line of informational output (summary, headings). */\n write(text: string): void\n /** Release the underlying stream (readline interface). */\n close(): void\n}\n\n/** Real stdin/stdout IO backed by readline/promises. */\nexport function createStdioPromptIO(): PromptIO {\n const rl = createInterface({ input: stdin, output: stdout })\n return {\n ask: (question) => rl.question(question),\n write: (text) => stdout.write(`${text}\\n`),\n close: () => rl.close()\n }\n}\n\n/**\n * True only when it is SAFE to block on interactive prompts: stdin is a TTY AND\n * the bin is neither supervised by the Electron host nor opted out via\n * `SLAYZONE_NONINTERACTIVE=1`. Callers gate ALL prompting on this \u2014 a false\n * return means \"resolve config exactly as before, no questions asked\".\n */\nexport function canPrompt(): boolean {\n return (\n Boolean(stdin.isTTY) &&\n process.env.SLAYZONE_SUPERVISED !== '1' &&\n process.env.SLAYZONE_NONINTERACTIVE !== '1'\n )\n}\n\n/**\n * Ask a yes/no question. `[Y/n]` when `defaultYes` (Enter = yes), `[y/N]`\n * otherwise (Enter = no). Only a leading y/yes (case-insensitive) is truthy.\n */\nexport async function confirm(\n io: PromptIO,\n question: string,\n { defaultYes = true }: { defaultYes?: boolean } = {}\n): Promise<boolean> {\n const raw = (await io.ask(`${question} ${defaultYes ? '[Y/n]' : '[y/N]'} `)).trim().toLowerCase()\n if (raw === '') return defaultYes\n return raw === 'y' || raw === 'yes'\n}\n\n/**\n * One promptable config value. The caller decides a field is MISSING (reads\n * env/config/credential-store itself) and hands only missing fields here.\n */\nexport interface PromptField {\n /** Key written into the target config file when persisted. */\n configKey: string\n /** `process.env` key seeded for THIS run so the normal resolver sees it. */\n envKey: string\n /** One-line question text (no trailing punctuation \u2014 the framer adds it). */\n label: string\n /** Applied when the user enters nothing \u2192 the field IS collected with it. */\n default?: string\n /** Extra hint shown in parens (e.g. the live hostname); NOT auto-applied. */\n hint?: string\n /**\n * Map the entered/defaulted string to its persisted + env representations\n * (e.g. a roots list \u2192 `string[]` for config, delimiter-joined for env).\n * Defaults to identity (string for both). Return `null` to drop the value.\n */\n transform?: (raw: string) => { config: unknown; env: string } | null\n}\n\n/** A field the user actually provided a value for. */\nexport interface CollectedField {\n field: PromptField\n config: unknown\n env: string\n}\n\nexport interface RunInteractiveConfigOptions {\n /** Missing fields to prompt for, in ask order. */\n fields: PromptField[]\n /** IO override (tests). Defaults to real stdin/stdout; owned + closed here. */\n io?: PromptIO\n /** Target config file path \u2014 `hub.config.json` or `computer.config.json` depending on the caller. Required: there's no single-file default anymore. */\n configPath: string\n /** Heading printed above the write summary. */\n title?: string\n}\n\nexport interface RunInteractiveConfigResult {\n /** Values the user supplied (empty \u21D2 nothing to do, no confirm was shown). */\n collected: CollectedField[]\n /** Whether the collected values were persisted to the target config file. */\n saved: boolean\n}\n\n/**\n * Prompt each missing field, seed the accepted values into `process.env` for\n * this run, then (if any were collected) show a summary and persist to the\n * target config file on a `[Y/n]`-confirm. Declining the save keeps the values\n * live for this boot only. Callers MUST gate on {@link canPrompt} first \u2014 this\n * function does not re-check (so tests can drive it with an injected IO).\n *\n * `process.env` is seeded regardless of the save answer, so the bin's existing\n * env-first resolver consumes the values either way.\n */\nexport async function runInteractiveConfig(\n opts: RunInteractiveConfigOptions\n): Promise<RunInteractiveConfigResult> {\n const configPath = opts.configPath\n const ownIo = opts.io === undefined\n const io = opts.io ?? createStdioPromptIO()\n\n try {\n const collected: CollectedField[] = []\n for (const field of opts.fields) {\n const hint = field.hint ? ` (${field.hint})` : ''\n const def = field.default !== undefined ? ` [${field.default}]` : ''\n const raw = (await io.ask(`${field.label}${hint}${def}: `)).trim()\n\n // Empty + no default \u21D2 the user declined this field: skip (don't collect,\n // don't seed, don't persist) so downstream keeps its own default/throw.\n const value = raw === '' ? field.default : raw\n if (value === undefined || value === '') continue\n\n const mapped = field.transform ? field.transform(value) : { config: value, env: value }\n if (mapped === null) continue\n collected.push({ field, config: mapped.config, env: mapped.env })\n }\n\n if (collected.length === 0) return { collected, saved: false }\n\n // Seed env now so this run uses the values whether or not they're persisted.\n for (const { field, env } of collected) process.env[field.envKey] = env\n\n io.write('')\n io.write(opts.title ?? 'Configuration to save:')\n for (const { field, config } of collected) {\n io.write(\n ` ${field.configKey}: ${Array.isArray(config) ? config.join(', ') : String(config)}`\n )\n }\n io.write('')\n\n const saved = await confirm(io, `Save to ${configPath}?`, { defaultYes: true })\n if (saved) {\n const patch: Record<string, unknown> = {}\n for (const { field, config } of collected) patch[field.configKey] = config\n updateJsonFile(patch, configPath)\n io.write(`Saved ${configPath}`)\n } else {\n io.write('Not saved \u2014 using these values for this run only.')\n }\n return { collected, saved }\n } finally {\n if (ownIo) io.close()\n }\n}\n", "/**\n * Per-role SlayZone config/state files at the root of a hub or computer install.\n * Each role's own settings split into two files by write frequency:\n *\n * `<ROOT>/hub.config.json` \u2014 operator-set: listenAddress, publicAddress, hubName,\n * and the per-hub switches (requireLogin, enablePassword,\n * enableSso, ssoTenantId, ssoClientId, enableProcesses,\n * enableIntegrations \u2014 booleans; secrets are env only)\n * `<ROOT>/hub.state.json` \u2014 system-generated: computerTransportSecret (the hub-auth\n * secret; auto-generated on first boot, never typed in)\n * `<ROOT>/computer.config.json` \u2014 operator-set: joinToken, computerName, hubUrl,\n * allowedRoots, pinnedCertSha256\n *\n * (Computer credentials \u2014 `computer.state.json`, system-generated, rewritten on every\n * reconnect/rotation \u2014 are a separate concern owned entirely by\n * `@slayzone/computer-transport`'s `credential-store.ts`, not this module. That\n * package deliberately doesn't depend on `@slayzone/platform` to keep the computer\n * bundle lean, so it isn't re-modeled here.)\n *\n * Symmetric naming on purpose: no bare `hub.json`/`computer.json` anywhere, so\n * there's never a question of which file in the pair a plain name would mean \u2014\n * and no collision with the CLI's own unrelated `cli-hub-target.json` (which\n * hub-config.ts in the CLI package owns; not this module's concern either).\n *\n * Legacy fallback: these used to be one shared `<ROOT>/config.json` file, hub and\n * computer keys mixed together. If a role's new file is absent but a sibling\n * `config.json` exists, the relevant keys are coerced from it instead \u2014 read-only,\n * indefinite, never auto-upgraded (no write ever targets `config.json`). Without\n * this, every existing standalone deployment would lose its hub-auth secret or\n * join credentials the moment it upgrades.\n *\n * Precedence everywhere: env var > file > generated/default. The file is the\n * BASE \u2014 env can still override it (e.g. CI). Only keys that are actually set\n * are persisted.\n *\n * SUPERVISED mode (Electron host, `SLAYZONE_SUPERVISED=1`) must NOT touch any of\n * these files at all \u2014 the callers gate reads/writes on `!SUPERVISED`. Nothing in\n * this module reads `SLAYZONE_SUPERVISED`; it is a pure file reader/writer.\n *\n * Home dir honors `SLAYZONE_ROOT` (see getSlayzoneHomeDir) for E2E/test\n * sandboxing, so a test can redirect every file here to a temp dir.\n *\n * This module lives in @slayzone/platform (where getSlayzoneHomeDir lives) and\n * is exposed as the `@slayzone/platform/slayzone-config` SUBPATH so the computer\n * bundle can import it WITHOUT pulling the platform barrel (which references\n * better-sqlite3 types + the shell/cli-install graph). It depends only on\n * `./dirs` + node builtins, so esbuild bundles just this leaf \u2192 the computer stays\n * lean (no better-sqlite3).\n *\n * @module platform/slayzone-config\n */\n\nimport { randomBytes } from 'node:crypto'\nimport { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs'\nimport { basename, dirname, join } from 'node:path'\nimport { getSlayzoneHomeDir } from './dirs'\n\n// Re-exported on this lean subpath so the computer bundle can resolve the ROOT\n// anchor without importing the platform barrel (which pulls better-sqlite3).\nexport { getSlayzoneHomeDir } from './dirs'\n\n/** `<ROOT>/hub.config.json` \u2014 operator-set hub keys. Every key optional, a fresh install has no file. */\nexport interface HubConfig {\n /** The address the hub LISTENS on for ALL transport \u2014 `host[:port]`, no scheme. */\n listenAddress?: string\n /** How OTHER machines reach the hub, `host[:port]`, no scheme. Set it whenever the hub is reachable off-box (rule B3). */\n publicAddress?: string\n /** Operator-facing hub name. Defaults to the ROOT directory's basename when unset. */\n hubName?: string\n /** Every client must sign in. Default off (the desktop app's hub). */\n requireLogin?: boolean\n /** Email + password sign-in. Default on. */\n enablePassword?: boolean\n /** Entra OIDC sign-in. Default off; needs `ssoTenantId`, `ssoClientId` and the env-only client secret. */\n enableSso?: boolean\n /** Entra tenant id. */\n ssoTenantId?: string\n /** Entra app registration (client) id. */\n ssoClientId?: string\n /** Hub-local processes + automation commands. Default on. */\n enableProcesses?: boolean\n /** Linear / GitHub connect + sync. Default on. */\n enableIntegrations?: boolean\n}\n\n/** The boolean switch keys of {@link HubConfig}, in file order. */\nexport const HUB_CONFIG_SWITCH_KEYS = [\n 'requireLogin',\n 'enablePassword',\n 'enableSso',\n 'enableProcesses',\n 'enableIntegrations'\n] as const satisfies ReadonlyArray<keyof HubConfig>\n\n/** Old `hub.config.json` keys that no longer mean anything \u2014 boot refuses them (rule B5). */\nconst RENAMED_HUB_CONFIG_KEYS: Record<string, string> = {\n address: 'listenAddress',\n port: 'listenAddress (host:port)',\n publicUrl: 'publicAddress (host[:port], no scheme)'\n}\n\n/** A problem found in a `hub.config.json` that must stop a hub from booting. */\nexport interface HubConfigProblem {\n /** The offending key. */\n key: string\n /** Human-readable, names the key and what to do. */\n message: string\n}\n\n/** `<ROOT>/hub.state.json` \u2014 system-generated hub state. */\nexport interface HubState {\n /** HMAC secret backing hub-auth (session/cookie signer + computer enroll/api-key credentials). Auto-generated + persisted on first standalone boot if absent. */\n computerTransportSecret?: string\n}\n\n/** `<ROOT>/computer.config.json` \u2014 operator-set computer keys. Every key optional, a fresh install has no file. */\nexport interface ComputerConfig {\n /** First-contact join token for a standalone computer. */\n joinToken?: string\n /** Human-readable computer name. */\n computerName?: string\n /** Full `ws(s)://\u2026/computers` endpoint a standalone computer dials. */\n hubUrl?: string\n /** Additional hubs this computer serves. See computer/config.ts. */\n hubUrls?: string[]\n /** Filesystem roots the computer may operate under. Locally-declared, never pushed from the hub. Defaults to `[<ROOT>]` when absent. */\n allowedRoots?: string[]\n /** sha256 pin of the hub TLS leaf cert (lowercase hex). Normally the join token carries the pin instead. */\n pinnedCertSha256?: string\n}\n\n/** The dev fallback secret hard-coded in composition.ts. Standalone boots MUST\n * resolve to something OTHER than this (env / file / generated). Exported so\n * callers + tests can assert against it. */\nexport const DEV_HUB_AUTH_SECRET = 'slayzone-dev-computer-secret'\n\n/**\n * Name of the co-located (\"local\") auto-spawned computer \u2014 re-exported so every\n * existing importer of this subpath keeps working.\n */\nexport { DEFAULT_LOCAL_COMPUTER_NAME } from './computer-identity'\n\n/** Name reported by the desktop app's supervised sidecar. Fixed rather than\n * ROOT-derived: the app's ROOT is a platform state dir whose basename is\n * meaningless to an operator, and `slay hub ls` needs one predictable label for\n * \"the hub inside the app\". */\nexport const SUPERVISED_HUB_NAME = 'app'\n\n/**\n * Resolve this hub's operator-facing name: `SLAYZONE_HUB_NAME` env >\n * `hub.config.json`'s `hubName` > `basename(ROOT)` \u2014 or the fixed\n * {@link SUPERVISED_HUB_NAME} when supervised.\n *\n * A blank/whitespace env value counts as UNSET, so a stray `SLAYZONE_HUB_NAME=`\n * cannot produce a nameless hub that `slay hub stop` could never address.\n *\n * Reads the config file only when it needs to (env unset, not supervised), so a\n * supervised boot still never touches it.\n */\nexport function resolveHubName(): string {\n const fromEnv = process.env.SLAYZONE_HUB_NAME?.trim()\n if (fromEnv) return fromEnv\n if (process.env.SLAYZONE_SUPERVISED === '1') return SUPERVISED_HUB_NAME\n const fromFile = loadHubConfigFile().hubName?.trim()\n if (fromFile) return fromFile\n // basename('/') is '' on posix \u2014 fall back rather than return a nameless hub.\n return basename(getSlayzoneHomeDir()) || 'hub'\n}\n\nexport function getHubConfigFilePath(): string {\n return join(getSlayzoneHomeDir(), 'hub.config.json')\n}\n\nexport function getHubStateFilePath(): string {\n return join(getSlayzoneHomeDir(), 'hub.state.json')\n}\n\nexport function getComputerConfigFilePath(): string {\n return join(getSlayzoneHomeDir(), 'computer.config.json')\n}\n\n/** The legacy shared file's path, for the read-only fallback \u2014 never written to by this module. */\nfunction legacyConfigFilePathFor(newFilePath: string): string {\n return join(dirname(newFilePath), 'config.json')\n}\n\nfunction coerceHubConfig(raw: Record<string, unknown>): HubConfig {\n const cfg: HubConfig = {}\n if (typeof raw.listenAddress === 'string' && raw.listenAddress.length > 0)\n cfg.listenAddress = raw.listenAddress\n if (typeof raw.publicAddress === 'string' && raw.publicAddress.length > 0)\n cfg.publicAddress = raw.publicAddress\n if (typeof raw.hubName === 'string' && raw.hubName.trim().length > 0)\n cfg.hubName = raw.hubName.trim()\n // Booleans only: a near-miss (\"true\", 1) is reported by diagnoseHubConfig and\n // refuses boot \u2014 it must never read as unset, because a switch that silently\n // fell back to its default would fail open.\n for (const key of HUB_CONFIG_SWITCH_KEYS) {\n if (typeof raw[key] === 'boolean') cfg[key] = raw[key]\n }\n if (typeof raw.ssoTenantId === 'string' && raw.ssoTenantId.trim().length > 0)\n cfg.ssoTenantId = raw.ssoTenantId.trim()\n if (typeof raw.ssoClientId === 'string' && raw.ssoClientId.trim().length > 0)\n cfg.ssoClientId = raw.ssoClientId.trim()\n // `mode` (the retired SLAYZONE_MODE key) is deliberately NOT read: it is ignored.\n return cfg\n}\n\n/**\n * Everything in a raw `hub.config.json` that must refuse boot:\n * - the renamed keys `address`, `port`, `publicUrl` (rule B5) \u2014 honoring them\n * silently would leave the hub listening somewhere the operator did not intend,\n * - a switch key holding anything but a boolean (rule B4).\n * `mode` is not a problem; it is ignored.\n */\nexport function diagnoseHubConfig(raw: Record<string, unknown>): HubConfigProblem[] {\n const problems: HubConfigProblem[] = []\n for (const [oldKey, newKey] of Object.entries(RENAMED_HUB_CONFIG_KEYS)) {\n if (raw[oldKey] !== undefined) {\n problems.push({\n key: oldKey,\n message: `'${oldKey}' was renamed to '${newKey}'`\n })\n }\n }\n for (const key of HUB_CONFIG_SWITCH_KEYS) {\n if (raw[key] !== undefined && typeof raw[key] !== 'boolean') {\n problems.push({\n key,\n message: `'${key}' must be true or false, got ${JSON.stringify(raw[key])}`\n })\n }\n }\n return problems\n}\n\nfunction coerceHubState(raw: Record<string, unknown>): HubState {\n const state: HubState = {}\n if (typeof raw.computerTransportSecret === 'string' && raw.computerTransportSecret.length > 0)\n state.computerTransportSecret = raw.computerTransportSecret\n return state\n}\n\nfunction coerceComputerConfig(raw: Record<string, unknown>): ComputerConfig {\n const cfg: ComputerConfig = {}\n if (typeof raw.joinToken === 'string' && raw.joinToken.length > 0) cfg.joinToken = raw.joinToken\n if (typeof raw.computerName === 'string' && raw.computerName.length > 0)\n cfg.computerName = raw.computerName\n if (typeof raw.hubUrl === 'string' && raw.hubUrl.length > 0) cfg.hubUrl = raw.hubUrl\n if (Array.isArray(raw.allowedRoots)) {\n const roots = raw.allowedRoots.filter((r): r is string => typeof r === 'string' && r.length > 0)\n if (roots.length > 0) cfg.allowedRoots = roots\n }\n if (typeof raw.pinnedCertSha256 === 'string' && raw.pinnedCertSha256.length > 0)\n cfg.pinnedCertSha256 = raw.pinnedCertSha256\n return cfg\n}\n\n/** Read + parse a JSON file. A missing/corrupt/non-object file resolves to `null` (never throws) \u2014 the caller decides the empty-result shape. */\nexport function readJsonObject(path: string): Record<string, unknown> | null {\n let raw: string\n try {\n raw = readFileSync(path, 'utf8')\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return null\n process.stderr.write(\n `[slayzone-config] cannot read ${path}: ${err instanceof Error ? err.message : String(err)} \u2014 using empty config\\n`\n )\n return null\n }\n let parsed: unknown\n try {\n parsed = JSON.parse(raw)\n } catch (err) {\n process.stderr.write(\n `[slayzone-config] ${path} is not valid JSON: ${err instanceof Error ? err.message : String(err)} \u2014 using empty config\\n`\n )\n return null\n }\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n process.stderr.write(`[slayzone-config] ${path} is not a JSON object \u2014 using empty config\\n`)\n return null\n }\n return parsed as Record<string, unknown>\n}\n\n/**\n * Atomically write a JSON object. Creates the parent dir 0700 and writes the\n * file 0600 (tmp-sibling + rename, so a crash never leaves a half-written\n * file). Shared by all three file kinds below \u2014 don't fork this four ways.\n *\n * WINDOWS CAVEAT: the mode (0700/0600) is a POSIX permission bitmask and is a\n * no-op on Windows \u2014 NTFS ACLs are not touched. The atomic tmp+rename still holds.\n */\nexport function writeJsonAtomic(path: string, data: unknown): void {\n const dir = dirname(path)\n mkdirSync(dir, { recursive: true, mode: 0o700 })\n const tmpPath = `${path}.tmp-${process.pid}-${Date.now()}`\n writeFileSync(tmpPath, `${JSON.stringify(data, null, 2)}\\n`, { mode: 0o600 })\n try {\n renameSync(tmpPath, path)\n } catch (err) {\n rmSync(tmpPath, { force: true })\n throw err\n }\n}\n\n/** The raw object backing the hub config: the new file, else the legacy shared `config.json`. */\nfunction readHubConfigRaw(path: string): Record<string, unknown> | null {\n return readJsonObject(path) ?? readJsonObject(legacyConfigFilePathFor(path))\n}\n\n/**\n * Load `hub.config.json`. Falls back to coercing hub keys out of a sibling\n * legacy `config.json` when the new file is absent (see module doc).\n */\nexport function loadHubConfigFile(path: string = getHubConfigFilePath()): HubConfig {\n const raw = readHubConfigRaw(path)\n return raw ? coerceHubConfig(raw) : {}\n}\n\n/**\n * The problems in the hub config that must refuse boot (see {@link diagnoseHubConfig}),\n * read from the same file {@link loadHubConfigFile} reads. Empty when there is no file.\n */\nexport function loadHubConfigProblems(path: string = getHubConfigFilePath()): HubConfigProblem[] {\n const raw = readHubConfigRaw(path)\n return raw ? diagnoseHubConfig(raw) : []\n}\n\nexport function saveHubConfigFile(cfg: HubConfig, path: string = getHubConfigFilePath()): void {\n writeJsonAtomic(path, cfg)\n}\n\n/**\n * Merge `patch` over the on-disk `hub.config.json` and persist (atomic, 0600).\n * Reads the current file first so a focused single-key update never clobbers\n * other keys. Undefined patch values are ignored (they don't erase existing keys).\n */\nexport function updateHubConfigFile(\n patch: Partial<HubConfig>,\n path: string = getHubConfigFilePath()\n): HubConfig {\n const current = readJsonObject(path)\n const merged: HubConfig = current ? coerceHubConfig(current) : {}\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) (merged as Record<string, unknown>)[k] = v\n }\n saveHubConfigFile(merged, path)\n return merged\n}\n\n/** Load `hub.state.json`. Falls back to a sibling legacy `config.json`'s `computerTransportSecret` when absent. */\nexport function loadHubStateFile(path: string = getHubStateFilePath()): HubState {\n const raw = readJsonObject(path)\n if (raw) return coerceHubState(raw)\n const legacy = readJsonObject(legacyConfigFilePathFor(path))\n return legacy ? coerceHubState(legacy) : {}\n}\n\nexport function saveHubStateFile(state: HubState, path: string = getHubStateFilePath()): void {\n writeJsonAtomic(path, state)\n}\n\n/**\n * Load `computer.config.json`. Falls back to coercing computer keys out of a\n * sibling legacy `config.json` when the new file is absent (see module doc).\n */\nexport function loadComputerConfigFile(path: string = getComputerConfigFilePath()): ComputerConfig {\n const raw = readJsonObject(path)\n if (raw) return coerceComputerConfig(raw)\n const legacy = readJsonObject(legacyConfigFilePathFor(path))\n return legacy ? coerceComputerConfig(legacy) : {}\n}\n\nexport function saveComputerConfigFile(\n cfg: ComputerConfig,\n path: string = getComputerConfigFilePath()\n): void {\n writeJsonAtomic(path, cfg)\n}\n\n/**\n * Merge `patch` over the on-disk `computer.config.json` and persist (atomic, 0600).\n */\nexport function updateComputerConfigFile(\n patch: Partial<ComputerConfig>,\n path: string = getComputerConfigFilePath()\n): ComputerConfig {\n const current = readJsonObject(path)\n const merged: ComputerConfig = current ? coerceComputerConfig(current) : {}\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) (merged as Record<string, unknown>)[k] = v\n }\n saveComputerConfigFile(merged, path)\n return merged\n}\n\n/**\n * Resolve the hub-auth secret for a STANDALONE boot: `hub.state.json`'s\n * `computerTransportSecret` if present (including via the legacy `config.json`\n * fallback), else generate a fresh 256-bit hex secret and PERSIST it into\n * `hub.state.json` (0600) so it is stable across reboots. Never returns the\n * shared dev constant. The caller layers env on top (env > this).\n *\n * Idempotent + stable: a second call reads back the persisted secret and\n * returns the identical value (no re-generation).\n *\n * CONCURRENCY: two hubs booting at once against a FRESH `hub.state.json` must\n * NOT generate two different secrets (the loser's minted tokens would be\n * unverifiable). Closed with an atomic create-if-absent (`wx` flag): only ONE\n * process can create the file, and every other boot re-reads the winner's\n * secret. The rare residual case (a `hub.state.json` that pre-exists WITHOUT a\n * secret, hit by two boots simultaneously \u2014 not a real shape, since this file\n * only ever holds this one key) falls through to a read-modify-write merge.\n */\nexport function ensureHubAuthSecret(path: string = getHubStateFilePath()): string {\n const existing = loadHubStateFile(path)\n if (existing.computerTransportSecret) return existing.computerTransportSecret\n\n const candidate = randomBytes(32).toString('hex')\n const merged: HubState = { ...existing, computerTransportSecret: candidate }\n\n mkdirSync(dirname(path), { recursive: true, mode: 0o700 })\n try {\n writeFileSync(path, `${JSON.stringify(merged, null, 2)}\\n`, { flag: 'wx', mode: 0o600 })\n return candidate\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') throw err\n }\n\n // The file exists now \u2014 either a concurrent boot just created it (re-read \u2192\n // its secret, convergence) or a hand-authored partial file pre-existed\n // without a secret (re-read has none \u2192 merge candidate in).\n const afterRace = readJsonObject(path)\n const afterRaceState = afterRace ? coerceHubState(afterRace) : {}\n if (afterRaceState.computerTransportSecret) return afterRaceState.computerTransportSecret\n const finalState = updateHubStateFile({ computerTransportSecret: candidate }, path)\n return finalState.computerTransportSecret ?? candidate\n}\n\nfunction updateHubStateFile(\n patch: Partial<HubState>,\n path: string = getHubStateFilePath()\n): HubState {\n const current = readJsonObject(path)\n const merged: HubState = current ? coerceHubState(current) : {}\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) (merged as Record<string, unknown>)[k] = v\n }\n saveHubStateFile(merged, path)\n return merged\n}\n\n/**\n * Generic merge-and-persist for a flat JSON object at an arbitrary path \u2014\n * used by `config-prompt.ts`, which doesn't know at write time whether it's\n * writing `hub.config.json` or `computer.config.json` (the caller already\n * decided which fields/path to pass; this just merges + writes atomically,\n * with no role-specific coercion). Not for use outside that one caller \u2014\n * prefer the typed `update*File` functions above when the shape is known.\n */\nexport function updateJsonFile(patch: Record<string, unknown>, path: string): void {\n const current = readJsonObject(path) ?? {}\n const merged: Record<string, unknown> = { ...current }\n for (const [k, v] of Object.entries(patch)) {\n if (v !== undefined) merged[k] = v\n }\n writeJsonAtomic(path, merged)\n}\n", "/**\n * Computer identity constants \u2014 a LEAF module with no imports at all.\n *\n * Why it is its own file rather than a section of `slayzone-config.ts`: that\n * module reaches for `node:fs` / `node:path` to resolve ROOT, which makes it\n * unimportable from renderer code (rollup externalizes the node built-ins and\n * the build fails on the first re-exported symbol). The Computers settings table\n * needs to know which row is the app's own computer, so the identity has to be\n * readable from the browser bundle as well as from the computer and the hub.\n *\n * `slayzone-config.ts` re-exports everything here, so existing importers are\n * unaffected \u2014 there is exactly one definition, three audiences.\n */\n\n/**\n * Enroll name of the co-located computer the desktop app supervises.\n *\n * Load-bearing in two places that must NOT diverge:\n * - the supervised computer (computer `config.ts`) defaults its enroll `name` to\n * this when `SLAYZONE_SUPERVISED=1`, and\n * - the sidecar composition passes it as `localComputerName` to the computer-auth\n * adapters (which treat an enroll for THIS name as the local computer \u2192 gets a\n * deterministic id + UPSERT + duplicate collapse).\n *\n * If those two disagree the dedup silently disables (every local enroll takes the\n * remote fresh-uuid path \u2192 an orphan per boot), so both derive this const. A\n * standalone computer renames via the config.json `computerName` key instead.\n */\nexport const DEFAULT_LOCAL_COMPUTER_NAME = 'local-computer'\n", "/**\n * The hub-address grammar: parse, validate and compose hub addresses.\n *\n * AN ADDRESS IS ALWAYS `host[:port]` \u2014 no scheme, no path. Three env vars use it:\n * - `SLAYZONE_HUB_LISTEN_ADDRESS` the hub BINDS it \u2192 {@link parseHubAddress}\n * - `SLAYZONE_HUB_PUBLIC_ADDRESS` how others reach the hub \u2192 {@link hubUrlFromAddr}\n * - `SLAYZONE_HUB_ADDRESS` computer / `slay` CONNECT to it \u2192 {@link hubUrlFromAddr}\n * The hub-side name used to be `SLAYZONE_HUB_ADDRESS` too; it was renamed so one\n * variable never means \"where I listen\" in one process and \"where I dial\" in\n * another. `sanitizeSpawnEnv` still strips all of them at every terminal-spawn\n * boundary.\n *\n * WHY NO SCHEME IN THE ENV CHANNEL: the dial-side consumers need different\n * schemes (the computer `ws(s)://\u2026/computers`, the CLI `http(s)://\u2026`), so a stored\n * scheme meant one of them was always reading the wrong shape \u2014 the retired\n * `SLAYZONE_HUB_URL` bug (a computer-hosted `slay` inheriting a `ws://` url and\n * hard-exiting). Every reader now DERIVES the scheme from the host itself\n * ({@link hubUrlFromAddr}, rule A1): a loopback host is plaintext (`http`/`ws`),\n * any other host is secure (`https`/`wss`) \u2014 the hub never terminates TLS, the\n * front end in front of a reachable hub does. That makes a scheme/reader mismatch\n * unrepresentable rather than merely unlikely, with no mode flag to forget.\n *\n * PORT GRAMMAR: a bare host means \"port unspecified\". Bind side \u2192 the hub walks\n * its port block (`port === undefined`); an explicit `:0` asks the OS for a free\n * port. Dial side \u2192 the scheme's default port stays implicit (the normal\n * published-DNS / reverse-proxy shape for a reachable hub).\n *\n * Lean leaf (node builtins only) so the computer bundle can import it via\n * `@slayzone/platform/hub-addr` WITHOUT the platform barrel.\n *\n * @module platform/hub-addr\n */\n\n/**\n * Host literals that name THIS machine. Single source of truth for both readers\n * of a hub address that care: the bind side (warn when binding wider than\n * loopback) and the CLI (a non-loopback address must not be mistaken for the\n * local app's port). Matched against {@link HubBindAddress.host}, so IPv6 is\n * UNBRACKETED here.\n */\nexport const LOOPBACK_HOSTS: ReadonlySet<string> = new Set(['127.0.0.1', 'localhost', '::1'])\n\n/**\n * True when a SOCKET PEER ADDRESS names this machine.\n *\n * Distinct from {@link LOOPBACK_HOSTS} on purpose, and the distinction is\n * load-bearing:\n * - `LOOPBACK_HOSTS` matches a CONFIGURED HOST STRING \u2014 a value a human typed\n * into `SLAYZONE_HUB_LISTEN_ADDRESS` or a config file \u2014 so it accepts `'localhost'`.\n * - This matches `req.socket.remoteAddress`, which the kernel fills in. A\n * socket address is an IP, never a hostname, so `'localhost'` here would only\n * ever be a bug or a spoof attempt and is deliberately NOT accepted.\n *\n * Covers the three forms node reports: IPv6 loopback, the IPv4-mapped-IPv6 form,\n * and all of `127.0.0.0/8` (the whole block is loopback, not just `127.0.0.1`).\n *\n * Fails CLOSED: an absent or unparseable address is not loopback. Callers grant\n * access on a `true` here, so \"unknown\" must never mean \"trusted\".\n *\n * Consolidates three previously-duplicated copies (hub `rest-auth`, the\n * computers join-token route, and the hub users route), each of which had drifted\n * its own docstring while claiming to be the same predicate.\n */\nexport function isLoopbackPeer(addr: string | undefined | null): boolean {\n if (!addr) return false\n if (addr === '::1') return true\n // Node reports an IPv4 peer on a dual-stack socket as `::ffff:127.0.0.1`.\n const bare = addr.startsWith('::ffff:') ? addr.slice('::ffff:'.length) : addr\n return bare === '127.0.0.1' || bare.startsWith('127.')\n}\n\n/**\n * True when the HOST of an authority (`host` or `host:port`, no scheme) names this\n * machine \u2014 `127.0.0.1`, `localhost` or `::1` ({@link LOOPBACK_HOSTS}).\n *\n * Fails CLOSED: an unparseable authority is not loopback, so the scheme rule below\n * picks the secure scheme for it rather than plaintext.\n */\nexport function isLoopbackAuthority(addr: string): boolean {\n try {\n const host = new URL(`http://${addr}`).hostname.replace(/^\\[|\\]$/g, '')\n return LOOPBACK_HOSTS.has(host)\n } catch {\n return false\n }\n}\n\n/**\n * Build a hub URL from an authority (`host` or `host:port`, NO scheme, NO path).\n *\n * THE SCHEME RULE (A1), the same everywhere a hub is dialled \u2014 hub, computer and\n * `slay`: a loopback host (127.0.0.1, localhost, ::1) \u2192 `http` / `ws`; any other\n * host \u2192 `https` / `wss`. Nothing carries a scheme and nothing can disagree about\n * one.\n *\n * @param addr the hub authority \u2014 `host[:port]`. Used verbatim; a host-only value\n * keeps the scheme's default port implicit (the normal published-DNS /\n * reverse proxy shape for a reachable hub).\n * @param kind `'ws'` for the computer transport (ws/wss) or `'http'` for the CLI\n * REST base (http/https).\n * @param path optional path to append (e.g. `'/computers'`). Empty by default.\n * @returns `<scheme>://<addr><path>`\n */\nexport function hubUrlFromAddr(addr: string, kind: 'ws' | 'http', path = ''): string {\n const secure = !isLoopbackAuthority(addr)\n const scheme = kind === 'ws' ? (secure ? 'wss' : 'ws') : secure ? 'https' : 'http'\n return `${scheme}://${addr}${path}`\n}\n\n/**\n * True when `addr` is a bare hub AUTHORITY \u2014 `host` or `host:port`, with NO\n * scheme (`://`), NO path (`/`), no userinfo and no whitespace.\n *\n * This is the env-channel guard: it is what keeps a scheme or a path from\n * sneaking into any hub address env var (`SLAYZONE_HUB_ADDRESS`, `_LISTEN_ADDRESS`,\n * `_PUBLIC_ADDRESS`) \u2014 carrying authority only is the entire point. Verifies by composing a throwaway URL\n * whose `host` must round-trip back to the input \u2014 which also rejects embedded\n * userinfo and stray characters, and (unlike a plain URL parse) catches a\n * double-scheme like `http://http://x`.\n *\n * IPv6 must be given in URL-authority form (bracketed): `[::1]` / `[::1]:8080`.\n */\nexport function isBareAuthority(addr: string): boolean {\n if (addr === '' || /[/\\s]/.test(addr) || addr.includes('://')) return false\n try {\n const u = new URL(`http://${addr}`)\n // `host` preserves an explicit port; everything else must be empty.\n return (\n u.host === addr &&\n u.pathname === '/' &&\n u.search === '' &&\n u.hash === '' &&\n u.username === '' &&\n u.password === ''\n )\n } catch {\n return false\n }\n}\n\n/**\n * True when a `ws(s)://\u2026/computers` URL names THIS machine \u2014 so a join token\n * carrying it is only usable by a computer on the SAME box.\n *\n * WHY THIS EXISTS: a hub with no public address derives its computer URL as\n * `ws://<loopback>:<hubPort>/computers` (see the hub's `deriveComputerHubUrl`).\n * That is right for the co-located computer the desktop app\n * auto-enrolls, and useless for any other machine \u2014 an off-box computer handed such\n * a token dials its own loopback and silently never connects. Minting cannot\n * refuse (the loopback case is legitimate and common), so the surfaces that hand a\n * token to a human \u2014 the UI's mint dialog, `slay computer mint`, `slay computer\n * create` \u2014 use this to SAY so.\n *\n * Reuses {@link LOOPBACK_HOSTS}, the single source of truth for \"names this\n * machine\", so this predicate can never drift from the bind-side checks.\n *\n * A wildcard bind (`0.0.0.0` / `::`) is deliberately NOT loopback: such a token is\n * broken for every computer including a local one, so reporting it as a\n * same-machine URL would send the operator to the wrong fix.\n *\n * Returns false for anything unparseable \u2014 never claim loopback without knowing.\n */\nexport function isLoopbackComputerUrl(url: string): boolean {\n let host: string\n try {\n // `hostname` never carries the port, but DOES keep IPv6 brackets \u2014 strip them\n // to match LOOPBACK_HOSTS, which holds unbracketed literals (same convention\n // as parseHubAddress).\n host = new URL(url).hostname.replace(/^\\[|\\]$/g, '')\n } catch {\n return false\n }\n // The whole 127.0.0.0/8 block is loopback, not just 127.0.0.1 \u2014 a hub bound to\n // e.g. 127.0.0.53 is every bit as unreachable from another machine.\n return LOOPBACK_HOSTS.has(host) || host.startsWith('127.')\n}\n\n/** A hub address split for the BIND side. `port === undefined` = OS-assigned. */\nexport interface HubBindAddress {\n /** Bare host literal, IPv6 UNBRACKETED (what `server.listen(host)` wants). */\n host: string\n /** Explicit port, or undefined when the address named no port. `0` = OS-assigned. */\n port: number | undefined\n}\n\n/**\n * Parse a hub address into `{host, port}` for the BIND side (the hub itself).\n *\n * Returns null for anything that is not a bare authority with a valid port, so a\n * caller falls back to its own default rather than binding something the operator\n * never asked for. IPv6 comes back UNBRACKETED: node's `listen(host)` wants the\n * bare literal, while the URL authority form requires the brackets.\n *\n * @param addr the raw env value (surrounding whitespace is trimmed); `undefined`\n * or empty resolves to null.\n */\nexport function parseHubAddress(addr: string | undefined): HubBindAddress | null {\n const trimmed = addr?.trim()\n if (!trimmed || !isBareAuthority(trimmed)) return null\n const u = new URL(`http://${trimmed}`)\n // `u.port` is '' when the authority named no port \u2192 OS-assigned. The URL parser\n // already rejected an out-of-range or non-numeric port (isBareAuthority's\n // round-trip fails, since `host` would not match the input).\n const port = u.port === '' ? undefined : Number(u.port)\n // hostname drops IPv6 brackets; unlike `host` it never carries the port.\n return { host: u.hostname.replace(/^\\[|\\]$/g, ''), port }\n}\n\n/**\n * Refuse to bind a supervised hub anywhere but loopback (rule B9).\n *\n * `SLAYZONE_SUPERVISED=1` means \"the desktop app started me\": no prompts, no\n * config file, and login off. That is only safe on this machine's loopback \u2014 the\n * flag is just an env var, so without this a stray one would expose a hub meant\n * for one user on a real interface. The desktop app already binds loopback; this\n * makes that non-regressible.\n */\nexport function assertLoopbackBind(host: string): void {\n if (!LOOPBACK_HOSTS.has(host)) {\n throw new Error(\n `[slayzone] SLAYZONE_SUPERVISED=1 marks a hub started by the desktop app, so it ` +\n `must listen on loopback \u2014 got '${host}'. Unset SLAYZONE_SUPERVISED for a hub ` +\n `that other machines should reach.`\n )\n }\n}\n", "/**\n * DuplexRpc \u2014 generalized duplex JSON-RPC 2.0 endpoint for the computer protocol.\n *\n * Both peers (hub gateway and computer dialer) instantiate one of these over a\n * shared transport. Responsibility is *only* JSON-RPC framing \u2014 request-id\n * correlation, timeout bookkeeping, peer-request dispatch. It has no knowledge\n * of computer semantics (enroll, heartbeats, pty); that lives in the gateway and\n * dialer. The split keeps this class unit-testable against canned NDJSON.\n *\n * Transport contract: `write(line)` sends exactly one JSON document with no\n * trailing newline \u2014 the transport owns framing (newline-delimited on byte\n * streams, one message per frame on WebSocket). Inbound, feed one document per\n * `handleLine()` call; `LineDecoder` below helps chunked byte-stream\n * transports.\n *\n * Wire notes:\n * - Outbound requests/notifications/responses all carry `jsonrpc:\"2.0\"`.\n * - Inbound responses are correlated purely by `id` (`jsonrpc` optional).\n * - Inbound peer requests carry both `method` and `id`.\n * - Inbound notifications carry `method` and no `id`.\n * - A response for an unknown/expired id is silently ignored (a reply racing\n * its own timeout is expected, not a protocol error).\n *\n * @module computer/shared/rpc\n */\n\nexport type JsonRpcId = string | number\n\nexport interface JsonRpcErrorShape {\n code: number\n message: string\n data?: unknown\n}\n\n/** Error thrown/rejected when the peer replies with a JSON-RPC `error` object. */\nexport class RpcError extends Error {\n readonly code: number\n readonly data: unknown\n constructor(code: number, message: string, data?: unknown) {\n super(message)\n this.name = 'RpcError'\n this.code = code\n this.data = data\n }\n static fromShape(err: JsonRpcErrorShape): RpcError {\n return new RpcError(err.code, err.message, err.data)\n }\n}\n\n/** Rejection for a request that received no reply within its timeout. */\nexport class RpcTimeoutError extends Error {\n readonly method: string\n readonly timeoutMs: number\n constructor(method: string, timeoutMs: number, label: string) {\n super(`${label} request '${method}' timed out after ${timeoutMs}ms`)\n this.name = 'RpcTimeoutError'\n this.method = method\n this.timeoutMs = timeoutMs\n }\n}\n\n/** Rejection for requests in flight when the endpoint is disposed. */\nexport class RpcDisposedError extends Error {\n constructor(label: string, reason?: string) {\n super(reason ? `${label} closed: ${reason}` : `${label} closed`)\n this.name = 'RpcDisposedError'\n }\n}\n\nexport interface DuplexRpcOptions {\n /** Write one framed JSON document (transport appends any newline framing). */\n write: (line: string) => void\n /**\n * Peer\u2192local request (method + id). The handler must eventually call\n * `respond(id, ...)` or `respondError(id, ...)`. When omitted, requests are\n * auto-answered with -32601 so the peer never hangs.\n */\n onPeerRequest?: (method: string, params: unknown, id: JsonRpcId) => void\n /** Peer\u2192local notification (method, no id). */\n onNotification?: (method: string, params: unknown) => void\n /** Diagnostic hook for unparseable / malformed inbound frames. */\n onParseError?: (line: string, err: unknown) => void\n /** Default per-request timeout; `<= 0` disables. Defaults to 30s. */\n defaultRequestTimeoutMs?: number\n /** Short name used in error messages (e.g. 'computer-hub'). */\n label?: string\n}\n\ninterface PendingRequest {\n resolve: (result: unknown) => void\n reject: (err: Error) => void\n timer: ReturnType<typeof setTimeout> | null\n}\n\nexport const JSON_RPC_METHOD_NOT_FOUND = -32601\nexport const JSON_RPC_INTERNAL_ERROR = -32000\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000\n\nexport class DuplexRpc {\n private readonly opts: DuplexRpcOptions\n private readonly label: string\n private nextId = 1\n private readonly pending = new Map<JsonRpcId, PendingRequest>()\n private disposed = false\n\n constructor(opts: DuplexRpcOptions) {\n this.opts = opts\n this.label = opts.label ?? 'computer-rpc'\n }\n\n get isDisposed(): boolean {\n return this.disposed\n }\n\n /** Number of in-flight outbound requests (diagnostics/tests). */\n get pendingCount(): number {\n return this.pending.size\n }\n\n /**\n * Issue a JSON-RPC request. Resolves with the `result` payload, rejects with\n * `RpcError` on a JSON-RPC error reply, `RpcTimeoutError` on timeout, or\n * `RpcDisposedError` on disposal. `timeoutMs <= 0` disables the timeout.\n */\n request<T = unknown>(method: string, params?: unknown, timeoutMs?: number): Promise<T> {\n if (this.disposed) {\n return Promise.reject(new RpcDisposedError(this.label))\n }\n const effectiveTimeout =\n timeoutMs ?? this.opts.defaultRequestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS\n const id = this.nextId++\n const envelope = JSON.stringify(\n params === undefined ? { jsonrpc: '2.0', id, method } : { jsonrpc: '2.0', id, method, params }\n )\n return new Promise<T>((resolve, reject) => {\n const timer =\n effectiveTimeout > 0\n ? setTimeout(() => {\n this.pending.delete(id)\n reject(new RpcTimeoutError(method, effectiveTimeout, this.label))\n }, effectiveTimeout)\n : null\n this.pending.set(id, {\n resolve: resolve as (r: unknown) => void,\n reject,\n timer\n })\n try {\n this.opts.write(envelope)\n } catch (err) {\n this.pending.delete(id)\n if (timer) clearTimeout(timer)\n reject(err instanceof Error ? err : new Error(String(err)))\n }\n })\n }\n\n /** Fire-and-forget JSON-RPC notification (no id, no response expected). */\n notify(method: string, params?: unknown): void {\n if (this.disposed) return\n this.opts.write(\n JSON.stringify(\n params === undefined ? { jsonrpc: '2.0', method } : { jsonrpc: '2.0', method, params }\n )\n )\n }\n\n /** Reply to a peer request with a success result. */\n respond(id: JsonRpcId, result: unknown): void {\n if (this.disposed) return\n this.opts.write(JSON.stringify({ jsonrpc: '2.0', id, result: result ?? null }))\n }\n\n /** Reply to a peer request with an error. */\n respondError(id: JsonRpcId, code: number, message: string, data?: unknown): void {\n if (this.disposed) return\n this.opts.write(\n JSON.stringify({\n jsonrpc: '2.0',\n id,\n error: data === undefined ? { code, message } : { code, message, data }\n })\n )\n }\n\n /**\n * Feed one inbound JSON document. Routes responses to pending requests, peer\n * requests to `onPeerRequest`, and notifications to `onNotification`.\n * Never throws \u2014 malformed input goes to `onParseError`.\n */\n handleLine(line: string): void {\n if (this.disposed) return\n const trimmed = line.trim()\n if (!trimmed) return\n let msg: Record<string, unknown>\n try {\n const parsed: unknown = JSON.parse(trimmed)\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n this.opts.onParseError?.(trimmed, new Error('non-object JSON-RPC message'))\n return\n }\n msg = parsed as Record<string, unknown>\n } catch (err) {\n this.opts.onParseError?.(trimmed, err)\n return\n }\n\n const rawId = msg.id\n const hasId =\n (typeof rawId === 'string' && rawId.length > 0) ||\n (typeof rawId === 'number' && Number.isFinite(rawId))\n const isResponse = hasId && ('result' in msg || 'error' in msg) && !('method' in msg)\n\n if (isResponse) {\n this.resolvePending(rawId as JsonRpcId, msg)\n return\n }\n\n if (typeof msg.method === 'string') {\n if (hasId) {\n if (this.opts.onPeerRequest) {\n this.opts.onPeerRequest(msg.method, msg.params, rawId as JsonRpcId)\n } else {\n this.respondError(\n rawId as JsonRpcId,\n JSON_RPC_METHOD_NOT_FOUND,\n `method not found: ${msg.method}`\n )\n }\n } else {\n this.opts.onNotification?.(msg.method, msg.params)\n }\n return\n }\n\n this.opts.onParseError?.(trimmed, new Error('unrecognized JSON-RPC message shape'))\n }\n\n /** Reject every pending request and stop accepting new ones. */\n dispose(reason?: string): void {\n if (this.disposed) return\n this.disposed = true\n for (const [id, pending] of this.pending) {\n if (pending.timer) clearTimeout(pending.timer)\n pending.reject(new RpcDisposedError(this.label, reason))\n this.pending.delete(id)\n }\n }\n\n private resolvePending(id: JsonRpcId, msg: Record<string, unknown>): void {\n const pending = this.pending.get(id)\n if (!pending) return // late reply after timeout/disposal \u2014 expected, not an error\n this.pending.delete(id)\n if (pending.timer) clearTimeout(pending.timer)\n if ('error' in msg && msg.error) {\n const e = msg.error as JsonRpcErrorShape\n pending.reject(\n RpcError.fromShape({\n code: typeof e.code === 'number' ? e.code : JSON_RPC_INTERNAL_ERROR,\n message: typeof e.message === 'string' ? e.message : 'unknown error',\n data: e.data\n })\n )\n } else {\n pending.resolve(msg.result)\n }\n }\n}\n\n/**\n * Incremental newline-delimited decoder for byte-stream transports. WebSocket\n * transports (one document per message) do not need it, but should still split\n * on `\\n` defensively to tolerate batched frames.\n */\nexport class LineDecoder {\n private buffer = ''\n\n /** Feed a chunk; returns every complete line accumulated so far. */\n feed(chunk: string): string[] {\n this.buffer += chunk\n const parts = this.buffer.split('\\n')\n this.buffer = parts.pop() ?? ''\n return parts.filter((p) => p.trim().length > 0)\n }\n\n /** Flush any trailing partial line (e.g. at stream end). */\n flush(): string | null {\n const rest = this.buffer.trim()\n this.buffer = ''\n return rest.length > 0 ? rest : null\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 * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 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(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 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: 5,\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 failed with \"expected number\", retry with Number(key)\n const checkNumericKey = typeof key === \"string\" &&\n regexes.number.test(key) &&\n keyResult.issues.length &&\n keyResult.issues.some((iss) => iss.code === \"invalid_type\" && iss.expected === \"number\");\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: \"\u062D\u0631\u0641\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n file: { unit: \"\u0628\u0627\u064A\u062A\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n array: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n set: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0645\u062F\u062E\u0644\",\n email: \"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n url: \"\u0631\u0627\u0628\u0637\",\n emoji: \"\u0625\u064A\u0645\u0648\u062C\u064A\",\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: \"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n date: \"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n time: \"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n duration: \"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n ipv4: \"\u0639\u0646\u0648\u0627\u0646 IPv4\",\n ipv6: \"\u0639\u0646\u0648\u0627\u0646 IPv6\",\n cidrv4: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4\",\n cidrv6: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6\",\n base64: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded\",\n base64url: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded\",\n json_string: \"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON\",\n e164: \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0645\u062F\u062E\u0644\",\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 `\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 ${issue.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[0])}`;\n 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: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"}`;\n return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${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 `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u0645\u0639\u0631\u0641${issue.keys.length > 1 ? \"\u0627\u062A\" : \"\"} \u063A\u0631\u064A\u0628${issue.keys.length > 1 ? \"\u0629\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n case \"invalid_element\":\n return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n default:\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\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\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\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\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanl\u0131\u015F se\u00E7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${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 `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.prefix}\" il\u0259 ba\u015Flamal\u0131d\u0131r`;\n if (_issue.format === \"ends_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.suffix}\" il\u0259 bitm\u0259lidir`;\n if (_issue.format === \"includes\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.includes}\" daxil olmal\u0131d\u0131r`;\n if (_issue.format === \"regex\")\n return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;\n return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanl\u0131\u015F \u0259d\u0259d: ${issue.divisor} il\u0259 b\u00F6l\u00FCn\u0259 bil\u0259n olmal\u0131d\u0131r`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan a\u00E7ar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F a\u00E7ar`;\n case \"invalid_union\":\n return \"Yanl\u0131\u015F d\u0259y\u0259r\";\n case \"invalid_element\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;\n default:\n return `Yanl\u0131\u015F d\u0259y\u0259r`;\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: \"\u0441\u0456\u043C\u0432\u0430\u043B\",\n few: \"\u0441\u0456\u043C\u0432\u0430\u043B\u044B\",\n many: \"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u044B\",\n many: \"\u0431\u0430\u0439\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0443\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0430\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0456\",\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 \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0447\u0430\u0441\",\n duration: \"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0430\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0430\u0441\",\n cidrv4: \"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64\",\n base64url: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url\",\n json_string: \"JSON \u0440\u0430\u0434\u043E\u043A\",\n e164: \"\u043D\u0443\u043C\u0430\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0443\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u043B\u0456\u043A\",\n array: \"\u043C\u0430\u0441\u0456\u045E\",\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 `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${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 `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n 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 ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${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 `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n 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}\"`;\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue.keys.length > 1 ? \"\u043A\u043B\u044E\u0447\u044B\" : \"\u043A\u043B\u044E\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue.origin}`;\n default:\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`;\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: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u043E\u0434\",\n email: \"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0436\u0438\",\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 \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n base64url: \"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n json_string: \"JSON \u043D\u0438\u0437\",\n e164: \"E.164 \u043D\u043E\u043C\u0435\u0440\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\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 `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\"}`;\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${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 `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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}\"`;\n }\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n let invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"date\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n if (_issue.format === \"time\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"duration\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue.keys.length > 1 ? \"\u0438\" : \"\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u043E\u0432\u0435\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`;\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\u00E0cters\", 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\u00E7a electr\u00F2nica\",\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\u00E7a IPv4\",\n ipv6: \"adre\u00E7a 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\u00FAmero 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\u00E0lid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus inv\u00E0lid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor inv\u00E0lid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3 inv\u00E0lida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a m\u00E0xim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingu\u00E9s ${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\u00EDnim\" : \"m\u00E9s de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingu\u00E9s ${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\u00E0lid: ha de comen\u00E7ar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format inv\u00E0lid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format inv\u00E0lid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format inv\u00E0lid: ha de coincidir amb el patr\u00F3 ${_issue.pattern}`;\n return `Format inv\u00E0lid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E0lid: ha de ser m\u00FAltiple 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\u00E0lida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E0lida\"; // Could also be \"Tipus d'uni\u00F3 inv\u00E0lid\" but \"Entrada inv\u00E0lida\" is more general\n case \"invalid_element\":\n return `Element inv\u00E0lid a ${issue.origin}`;\n default:\n return `Entrada inv\u00E0lida`;\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\u016F\", verb: \"m\u00EDt\" },\n file: { unit: \"bajt\u016F\", verb: \"m\u00EDt\" },\n array: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n set: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regul\u00E1rn\u00ED v\u00FDraz\",\n email: \"e-mailov\u00E1 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 \u010Das ve form\u00E1tu ISO\",\n date: \"datum ve form\u00E1tu ISO\",\n time: \"\u010Das ve form\u00E1tu ISO\",\n duration: \"doba trv\u00E1n\u00ED ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64\",\n base64url: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64url\",\n json_string: \"\u0159et\u011Bzec ve form\u00E1tu JSON\",\n e164: \"\u010D\u00EDslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u010D\u00EDslo\",\n string: \"\u0159et\u011Bzec\",\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\u00FD vstup: o\u010Dek\u00E1v\u00E1no instanceof ${issue.expected}, obdr\u017Eeno ${received}`;\n }\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${expected}, obdr\u017Eeno ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatn\u00E1 mo\u017Enost: o\u010Dek\u00E1v\u00E1na 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\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${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\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED za\u010D\u00EDnat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED kon\u010Dit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED odpov\u00EDdat vzoru ${_issue.pattern}`;\n return `Neplatn\u00FD form\u00E1t ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatn\u00E9 \u010D\u00EDslo: mus\u00ED b\u00FDt n\u00E1sobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nezn\u00E1m\u00E9 kl\u00ED\u010De: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatn\u00FD kl\u00ED\u010D v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatn\u00FD vstup\";\n case \"invalid_element\":\n return `Neplatn\u00E1 hodnota v ${issue.origin}`;\n default:\n return `Neplatn\u00FD 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\u00E6t\",\n date: \"ISO-dato\",\n time: \"ISO-klokkesl\u00E6t\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-omr\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\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\u00E6t\",\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\u00E6rdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af f\u00F8lgende ${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\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal v\u00E6re deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte n\u00F8gler\" : \"Ukendt n\u00F8gle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8gle 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\u00E6rdi 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\u00FCltige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ung\u00FCltige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ung\u00FCltige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ung\u00FCltige 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\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu gro\u00DF: 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\u00FCltiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ung\u00FCltiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ung\u00FCltiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ung\u00FCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ung\u00FCltig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ung\u00FCltige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schl\u00FCssel\" : \"Unbekannter Schl\u00FCssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ung\u00FCltiger Schl\u00FCssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ung\u00FCltige Eingabe\";\n case \"invalid_element\":\n return `Ung\u00FCltiger Wert in ${issue.origin}`;\n default:\n return `Ung\u00FCltige 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\u011Dio\",\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\u016Dro\",\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\u011Dis instanceof ${issue.expected}, ricevi\u011Dis ${received}`;\n }\n return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendi\u011Dis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendi\u011Dis 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\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendi\u011Dis 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\u011Dis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendi\u011Dis 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\u011Di per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas fini\u011Di 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\" : \"\"} \u015Dlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida \u015Dlosilo 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\u00F3n de correo electr\u00F3nico\",\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\u00F3n ISO\",\n ipv4: \"direcci\u00F3n IPv4\",\n ipv6: \"direcci\u00F3n 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\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"n\u00FAmero\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"n\u00FAmero grande\",\n symbol: \"s\u00EDmbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"funci\u00F3n\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeraci\u00F3n\",\n union: \"uni\u00F3n\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vac\u00EDo\",\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\u00E1lida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inv\u00E1lida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3n inv\u00E1lida: 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\u00F1o: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado peque\u00F1o: 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\u00E1lida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inv\u00E1lida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inv\u00E1lida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inv\u00E1lida: debe coincidir con el patr\u00F3n ${_issue.pattern}`;\n return `Inv\u00E1lido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: debe ser m\u00FAltiplo 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\u00E1lida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inv\u00E1lida`;\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: \"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n file: { unit: \"\u0628\u0627\u06CC\u062A\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n array: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n set: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u06CC\",\n email: \"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644\",\n url: \"URL\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\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: \"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n date: \"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648\",\n time: \"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n duration: \"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n ipv4: \"IPv4 \u0622\u062F\u0631\u0633\",\n ipv6: \"IPv6 \u0622\u062F\u0631\u0633\",\n cidrv4: \"IPv4 \u062F\u0627\u0645\u0646\u0647\",\n cidrv6: \"IPv6 \u062F\u0627\u0645\u0646\u0647\",\n base64: \"base64-encoded \u0631\u0634\u062A\u0647\",\n base64url: \"base64url-encoded \u0631\u0634\u062A\u0647\",\n json_string: \"JSON \u0631\u0634\u062A\u0647\",\n e164: \"E.164 \u0639\u062F\u062F\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u06CC\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0622\u0631\u0627\u06CC\u0647\",\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 `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n }\n 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`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${util.stringifyPrimitive(issue.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n }\n 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 ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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`;\n }\n if (_issue.format === \"ends_with\") {\n 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`;\n }\n if (_issue.format === \"includes\") {\n 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`;\n }\n if (_issue.format === \"regex\") {\n 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`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n }\n case \"not_multiple_of\":\n return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue.divisor} \u0628\u0627\u0634\u062F`;\n case \"unrecognized_keys\":\n return `\u06A9\u0644\u06CC\u062F${issue.keys.length > 1 ? \"\u0647\u0627\u06CC\" : \"\"} \u0646\u0627\u0634\u0646\u0627\u0633: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue.origin}`;\n case \"invalid_union\":\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n case \"invalid_element\":\n return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue.origin}`;\n default:\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\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\u00E4\", 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\u00E4iv\u00E4m\u00E4\u00E4r\u00E4n\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"s\u00E4\u00E4nn\u00F6llinen lauseke\",\n email: \"s\u00E4hk\u00F6postiosoite\",\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\u00E4iv\u00E4m\u00E4\u00E4r\u00E4\",\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\u00F6te: t\u00E4ytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: t\u00E4ytyy 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\u00E4ytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon t\u00E4ytyy 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\u00E4ytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon t\u00E4ytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy sis\u00E4lt\u00E4\u00E4 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen sy\u00F6te: t\u00E4ytyy vastata s\u00E4\u00E4nn\u00F6llist\u00E4 lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: t\u00E4ytyy 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\u00F6te`;\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\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\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\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\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\u00E9e invalide : instanceof ${issue.expected} attendu, ${received} re\u00E7u`;\n }\n return `Entr\u00E9e invalide : ${expected} attendu, ${received} re\u00E7u`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e 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 ?? \"\u00E9l\u00E9ment(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit \u00EAtre ${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 \u00EAtre ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne invalide : doit correspondre au mod\u00E8le ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e 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\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\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\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\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\u00E9e invalide : attendu instanceof ${issue.expected}, re\u00E7u ${received}`;\n }\n return `Entr\u00E9e invalide : attendu ${expected}, re\u00E7u ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e 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 ? \"\u2264\" : \"<\";\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 ? \"\u2265\" : \">\";\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\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne 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 \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e 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: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA\", gender: \"f\" },\n number: { label: \"\u05DE\u05E1\u05E4\u05E8\", gender: \"m\" },\n boolean: { label: \"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA\", gender: \"m\" },\n array: { label: \"\u05DE\u05E2\u05E8\u05DA\", gender: \"m\" },\n object: { label: \"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8\", gender: \"m\" },\n null: { label: \"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)\", gender: \"m\" },\n undefined: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)\", gender: \"m\" },\n symbol: { label: \"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)\", gender: \"m\" },\n function: { label: \"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4\", gender: \"f\" },\n map: { label: \"\u05DE\u05E4\u05D4 (Map)\", gender: \"f\" },\n set: { label: \"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)\", gender: \"f\" },\n file: { label: \"\u05E7\u05D5\u05D1\u05E5\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2\", gender: \"m\" },\n value: { label: \"\u05E2\u05E8\u05DA\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"\u05EA\u05D5\u05D5\u05D9\u05DD\", shortLabel: \"\u05E7\u05E6\u05E8\", longLabel: \"\u05D0\u05E8\u05D5\u05DA\" },\n file: { unit: \"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n array: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n set: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n number: { unit: \"\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" }, // no unit\n };\n // Helpers \u2014 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) => `\u05D4${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA\" : \"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n email: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC\", gender: \"f\" },\n url: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n emoji: { label: \"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9\", 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: \"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA ISO\", gender: \"m\" },\n time: { label: \"\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n duration: { label: \"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n ipv4: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4\", gender: \"f\" },\n ipv6: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6\", gender: \"f\" },\n cidrv4: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv4\", gender: \"m\" },\n cidrv6: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv6\", gender: \"m\" },\n base64: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64\", gender: \"f\" },\n 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\" },\n json_string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON\", gender: \"f\" },\n e164: { label: \"\u05DE\u05E1\u05E4\u05E8 E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n includes: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n lowercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n starts_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n uppercase: { label: \"\u05E7\u05DC\u05D8\", 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 `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${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 `\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]}`;\n }\n // For 3+ values: \"a\", \"b\" \u05D0\u05D5 \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n 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}`;\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 ?? \"\u05D0\u05E8\u05D5\u05DA\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA\" : \"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue.maximum}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`\n : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"\u05D2\u05D3\u05D5\u05DC\"} \u05DE\u05D3\u05D9: ${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 ?? \"\u05E7\u05E6\u05E8\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue.minimum}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.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\";\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`\n : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"\u05E7\u05D8\u05DF\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings \u2014 use feminine grammar + \u05D4\u05F3 \u05D4\u05D9\u05D3\u05D9\u05E2\u05D4\n if (_issue.format === \"starts_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n 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}`;\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\" ? \"\u05EA\u05E7\u05D9\u05E0\u05D4\" : \"\u05EA\u05E7\u05D9\u05DF\";\n return `${noun} \u05DC\u05D0 ${adjective}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u05DE\u05E4\u05EA\u05D7${issue.keys.length > 1 ? \"\u05D5\u05EA\" : \"\"} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue.keys.length > 1 ? \"\u05D9\u05DD\" : \"\u05D4\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`;\n }\n case \"invalid_union\":\n return \"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`;\n }\n default:\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\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\u00EDm\",\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\u0151b\u00E9lyeg\",\n date: \"ISO d\u00E1tum\",\n time: \"ISO id\u0151\",\n duration: \"ISO id\u0151intervallum\",\n ipv4: \"IPv4 c\u00EDm\",\n ipv6: \"IPv6 c\u00EDm\",\n cidrv4: \"IPv4 tartom\u00E1ny\",\n cidrv6: \"IPv6 tartom\u00E1ny\",\n base64: \"base64-k\u00F3dolt string\",\n base64url: \"base64url-k\u00F3dolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 sz\u00E1m\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"sz\u00E1m\",\n array: \"t\u00F6mb\",\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 `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k instanceof ${issue.expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C9rv\u00E9nytelen opci\u00F3: valamelyik \u00E9rt\u00E9k v\u00E1rt ${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\u00FAl nagy: ${issue.origin ?? \"\u00E9rt\u00E9k\"} m\u00E9rete t\u00FAl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `T\u00FAl nagy: a bemeneti \u00E9rt\u00E9k ${issue.origin ?? \"\u00E9rt\u00E9k\"} t\u00FAl 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\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} m\u00E9rete t\u00FAl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} t\u00FAl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.prefix}\" \u00E9rt\u00E9kkel kell kezd\u0151dnie`;\n if (_issue.format === \"ends_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.suffix}\" \u00E9rt\u00E9kkel kell v\u00E9gz\u0151dnie`;\n if (_issue.format === \"includes\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.includes}\" \u00E9rt\u00E9ket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `\u00C9rv\u00E9nytelen string: ${_issue.pattern} mint\u00E1nak kell megfelelnie`;\n return `\u00C9rv\u00E9nytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u00C9rv\u00E9nytelen sz\u00E1m: ${issue.divisor} t\u00F6bbsz\u00F6r\u00F6s\u00E9nek 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 `\u00C9rv\u00E9nytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00C9rv\u00E9nytelen bemenet\";\n case \"invalid_element\":\n return `\u00C9rv\u00E9nytelen \u00E9rt\u00E9k: ${issue.origin}`;\n default:\n return `\u00C9rv\u00E9nytelen 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 = [\"\u0561\", \"\u0565\", \"\u0568\", \"\u056B\", \"\u0578\", \"\u0578\u0582\", \"\u0585\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"\u0576\" : \"\u0568\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0576\u0577\u0561\u0576\",\n many: \"\u0576\u0577\u0561\u0576\u0576\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n file: {\n unit: {\n one: \"\u0562\u0561\u0575\u0569\",\n many: \"\u0562\u0561\u0575\u0569\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n array: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n set: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0574\u0578\u0582\u057F\u0584\",\n email: \"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565\",\n url: \"URL\",\n emoji: \"\u0567\u0574\u0578\u057B\u056B\",\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 \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574\",\n date: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E\",\n time: \"ISO \u056A\u0561\u0574\",\n duration: \"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\",\n ipv4: \"IPv4 \u0570\u0561\u057D\u0581\u0565\",\n ipv6: \"IPv6 \u0570\u0561\u057D\u0581\u0565\",\n cidrv4: \"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n cidrv6: \"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n base64: \"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n base64url: \"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n json_string: \"JSON \u057F\u0578\u0572\",\n e164: \"E.164 \u0570\u0561\u0574\u0561\u0580\",\n jwt: \"JWT\",\n template_literal: \"\u0574\u0578\u0582\u057F\u0584\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0569\u056B\u057E\",\n array: \"\u0566\u0561\u0576\u0563\u057E\u0561\u056E\",\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 `\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 ${issue.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[1])}`;\n 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 ${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 `\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(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.maximum.toString()} ${unit}`;\n }\n 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(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056C\u056B\u0576\u056B ${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 `\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(issue.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.minimum.toString()} ${unit}`;\n }\n 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(issue.origin)} \u056C\u056B\u0576\u056B ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B \"${_issue.prefix}\"-\u0578\u057E`;\n if (_issue.format === \"ends_with\")\n 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`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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`;\n return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}-\u056B`;\n case \"unrecognized_keys\":\n return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue.keys.length > 1 ? \"\u0576\u0565\u0580\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n case \"invalid_union\":\n return \"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\";\n case \"invalid_element\":\n return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n default:\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`;\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\u00F0 hafa\" },\n file: { unit: \"b\u00E6ti\", verb: \"a\u00F0 hafa\" },\n array: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n set: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefsl\u00F3\u00F0\",\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\u00EDmi\",\n date: \"ISO dagsetning\",\n time: \"ISO t\u00EDmi\",\n duration: \"ISO t\u00EDmalengd\",\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\u00F6lugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmer\",\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: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert r\u00E1\u00F0 fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00D3gilt val: m\u00E1 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\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} s\u00E9 ${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\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} s\u00E9 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 byrja \u00E1 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 enda \u00E1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `R\u00F6ng tala: ver\u00F0ur a\u00F0 vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u00D3\u00FEekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill \u00ED ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi \u00ED ${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: \"\u6587\u5B57\", verb: \"\u3067\u3042\u308B\" },\n file: { unit: \"\u30D0\u30A4\u30C8\", verb: \"\u3067\u3042\u308B\" },\n array: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n set: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u5165\u529B\u5024\",\n email: \"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\",\n url: \"URL\",\n emoji: \"\u7D75\u6587\u5B57\",\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\u65E5\u6642\",\n date: \"ISO\u65E5\u4ED8\",\n time: \"ISO\u6642\u523B\",\n duration: \"ISO\u671F\u9593\",\n ipv4: \"IPv4\u30A2\u30C9\u30EC\u30B9\",\n ipv6: \"IPv6\u30A2\u30C9\u30EC\u30B9\",\n cidrv4: \"IPv4\u7BC4\u56F2\",\n cidrv6: \"IPv6\u7BC4\u56F2\",\n base64: \"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n base64url: \"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n json_string: \"JSON\u6587\u5B57\u5217\",\n e164: \"E.164\u756A\u53F7\",\n jwt: \"JWT\",\n template_literal: \"\u5165\u529B\u5024\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5024\",\n array: \"\u914D\u5217\",\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 `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n }\n 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`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u52B9\u306A\u5165\u529B: ${util.stringifyPrimitive(issue.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;\n return `\u7121\u52B9\u306A\u9078\u629E: ${util.joinValues(issue.values, \"\u3001\")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0B\u3067\u3042\u308B\" : \"\u3088\u308A\u5C0F\u3055\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${sizing.unit ?? \"\u8981\u7D20\"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0A\u3067\u3042\u308B\" : \"\u3088\u308A\u5927\u304D\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.prefix}\"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"ends_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.suffix}\"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"includes\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.includes}\"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"regex\")\n 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`;\n return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u52B9\u306A\u6570\u5024: ${issue.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"unrecognized_keys\":\n return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue.keys.length > 1 ? \"\u7FA4\" : \"\"}: ${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;\n case \"invalid_union\":\n return \"\u7121\u52B9\u306A\u5165\u529B\";\n case \"invalid_element\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;\n default:\n return `\u7121\u52B9\u306A\u5165\u529B`;\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: \"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n file: { unit: \"\u10D1\u10D0\u10D8\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n array: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n set: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n email: \"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n url: \"URL\",\n emoji: \"\u10D4\u10DB\u10DD\u10EF\u10D8\",\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: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD\",\n date: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8\",\n time: \"\u10D3\u10E0\u10DD\",\n duration: \"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0\",\n ipv4: \"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n ipv6: \"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n cidrv4: \"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n cidrv6: \"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n base64: \"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n base64url: \"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n json_string: \"JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n e164: \"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8\",\n jwt: \"JWT\",\n template_literal: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8\",\n string: \"\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n boolean: \"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8\",\n function: \"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0\",\n array: \"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8\",\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 `\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 ${issue.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}-\u10D3\u10D0\u10DC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} \u10D8\u10E7\u10DD\u10E1 ${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 `\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 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n 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 ${issue.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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`;\n }\n if (_issue.format === \"ends_with\")\n 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`;\n if (_issue.format === \"includes\")\n 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`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;\n case \"unrecognized_keys\":\n return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue.keys.length > 1 ? \"\u10D4\u10D1\u10D8\" : \"\u10D8\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue.origin}-\u10E8\u10D8`;\n case \"invalid_union\":\n return \"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\";\n case \"invalid_element\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue.origin}-\u10E8\u10D8`;\n default:\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`;\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: \"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n file: { unit: \"\u1794\u17C3\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n array: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n set: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n email: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B\",\n url: \"URL\",\n emoji: \"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD\",\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: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO\",\n date: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO\",\n time: \"\u1798\u17C9\u17C4\u1784 ISO\",\n duration: \"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO\",\n ipv4: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n ipv6: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n cidrv4: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n cidrv6: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n base64: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64\",\n base64url: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url\",\n json_string: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON\",\n e164: \"\u179B\u17C1\u1781 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u179B\u17C1\u1781\",\n array: \"\u17A2\u17B6\u179A\u17C1 (Array)\",\n null: \"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (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 `\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 ${issue.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u1792\u17B6\u178F\u17BB\"}`;\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${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 `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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}\"`;\n }\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n case \"invalid_union\":\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n case \"invalid_element\":\n 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 ${issue.origin}`;\n default:\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\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: \"\uBB38\uC790\", verb: \"to have\" },\n file: { unit: \"\uBC14\uC774\uD2B8\", verb: \"to have\" },\n array: { unit: \"\uAC1C\", verb: \"to have\" },\n set: { unit: \"\uAC1C\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\uC785\uB825\",\n email: \"\uC774\uBA54\uC77C \uC8FC\uC18C\",\n url: \"URL\",\n emoji: \"\uC774\uBAA8\uC9C0\",\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 \uB0A0\uC9DC\uC2DC\uAC04\",\n date: \"ISO \uB0A0\uC9DC\",\n time: \"ISO \uC2DC\uAC04\",\n duration: \"ISO \uAE30\uAC04\",\n ipv4: \"IPv4 \uC8FC\uC18C\",\n ipv6: \"IPv6 \uC8FC\uC18C\",\n cidrv4: \"IPv4 \uBC94\uC704\",\n cidrv6: \"IPv6 \uBC94\uC704\",\n base64: \"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n base64url: \"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n json_string: \"JSON \uBB38\uC790\uC5F4\",\n e164: \"E.164 \uBC88\uD638\",\n jwt: \"JWT\",\n template_literal: \"\uC785\uB825\",\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 `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${util.stringifyPrimitive(issue.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C \uC635\uC158: ${util.joinValues(issue.values, \"\uB610\uB294 \")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\uC774\uD558\" : \"\uBBF8\uB9CC\";\n const suffix = adj === \"\uBBF8\uB9CC\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing)\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\uC774\uC0C1\" : \"\uCD08\uACFC\";\n const suffix = adj === \"\uC774\uC0C1\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing) {\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.prefix}\"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;\n }\n if (_issue.format === \"ends_with\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.suffix}\"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"includes\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.includes}\"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"regex\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"unrecognized_keys\":\n return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\uC798\uBABB\uB41C \uD0A4: ${issue.origin}`;\n case \"invalid_union\":\n return `\uC798\uBABB\uB41C \uC785\uB825`;\n case \"invalid_element\":\n return `\uC798\uBABB\uB41C \uAC12: ${issue.origin}`;\n default:\n return `\uC798\uBABB\uB41C \uC785\uB825`;\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\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne ilgesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti trumpesn\u0117 kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne trumpesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti ilgesn\u0117 kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"bait\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne didesnis kaip\",\n notInclusive: \"turi b\u016Bti ma\u017Eesnis kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne ma\u017Eesnis kaip\",\n notInclusive: \"turi b\u016Bti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti 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: \"\u012Fvestis\",\n email: \"el. pa\u0161to 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\u0117\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 u\u017Ekoduota eilut\u0117\",\n base64url: \"base64url u\u017Ekoduota eilut\u0117\",\n json_string: \"JSON eilut\u0117\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"\u012Fvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skai\u010Dius\",\n bigint: \"sveikasis skai\u010Dius\",\n string: \"eilut\u0117\",\n boolean: \"login\u0117 reik\u0161m\u0117\",\n undefined: \"neapibr\u0117\u017Eta reik\u0161m\u0117\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulin\u0117 reik\u0161m\u0117\",\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\u0117tasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo b\u016Bti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo b\u016Bti vienas i\u0161 ${util.joinValues(issue.values, \"|\")} pasirinkim\u0173`;\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\u0161m\u0117\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"ma\u017Eesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${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\u0161m\u0117\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne ma\u017Eesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilut\u0117 privalo prasid\u0117ti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilut\u0117 privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilut\u0117 privalo \u012Ftraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilut\u0117 privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skai\u010Dius privalo b\u016Bti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpa\u017Eint${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 \u012Fvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi klaiding\u0105 \u012Fvest\u012F`;\n }\n default:\n return \"Klaidinga \u012Fvestis\";\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: \"\u0437\u043D\u0430\u0446\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n file: { unit: \"\u0431\u0430\u0458\u0442\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n array: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n set: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u043D\u0435\u0441\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u045F\u0438\",\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 \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0443\u043C\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\",\n cidrv4: \"IPv4 \u043E\u043F\u0441\u0435\u0433\",\n cidrv6: \"IPv6 \u043E\u043F\u0441\u0435\u0433\",\n base64: \"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n base64url: \"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n json_string: \"JSON \u043D\u0438\u0437\u0430\",\n e164: \"E.164 \u0431\u0440\u043E\u0458\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u043D\u0435\u0441\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0431\u0440\u043E\u0458\",\n array: \"\u043D\u0438\u0437\u0430\",\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 `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438\"}`;\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${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 `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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}\"`;\n }\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.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\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441\";\n case \"invalid_element\":\n return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue.origin}`;\n default:\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`;\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 \u00E9\u00E9n 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: \"\u00E5 ha\" },\n file: { unit: \"bytes\", verb: \"\u00E5 ha\" },\n array: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n set: { unit: \"elementer\", verb: \"\u00E5 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\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\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 \u00E5 ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 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 \u00E5 ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til \u00E5 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\u00E5 starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: m\u00E5 ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: m\u00E5 inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: m\u00E5 matche m\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: m\u00E5 v\u00E6re et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente n\u00F8kler\" : \"Ukjent n\u00F8kkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8kkel 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\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostag\u00E2h\",\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\u00E2m\u0131\",\n date: \"ISO tarihi\",\n time: \"ISO zaman\u0131\",\n duration: \"ISO m\u00FCddeti\",\n ipv4: \"IPv4 ni\u015F\u00E2n\u0131\",\n ipv6: \"IPv6 ni\u015F\u00E2n\u0131\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-\u015Fifreli metin\",\n base64url: \"base64url-\u015Fifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 say\u0131s\u0131\",\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\u00E2sit giren: umulan instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `F\u00E2sit giren: umulan ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `F\u00E2sit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `F\u00E2sit tercih: m\u00FBteberler ${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\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmal\u0131yd\u0131.`;\n return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`;\n }\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `F\u00E2sit metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131.`;\n if (_issue.format === \"ends_with\")\n return `F\u00E2sit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `F\u00E2sit metin: \"${_issue.includes}\" ihtiv\u00E2 etmeli.`;\n if (_issue.format === \"regex\")\n return `F\u00E2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;\n return `F\u00E2sit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `F\u00E2sit say\u0131: ${issue.divisor} kat\u0131 olmal\u0131yd\u0131.`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tan\u0131namad\u0131.\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan k\u0131ymet var.`;\n default:\n return `K\u0131ymet tan\u0131namad\u0131.`;\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: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n file: { unit: \"\u0628\u0627\u06CC\u067C\u0633\", verb: \"\u0648\u0644\u0631\u064A\" },\n array: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n set: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u064A\",\n email: \"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u064A\",\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: \"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A\",\n date: \"\u0646\u06D0\u067C\u0647\",\n time: \"\u0648\u062E\u062A\",\n duration: \"\u0645\u0648\u062F\u0647\",\n ipv4: \"\u062F IPv4 \u067E\u062A\u0647\",\n ipv6: \"\u062F IPv6 \u067E\u062A\u0647\",\n cidrv4: \"\u062F IPv4 \u0633\u0627\u062D\u0647\",\n cidrv6: \"\u062F IPv6 \u0633\u0627\u062D\u0647\",\n base64: \"base64-encoded \u0645\u062A\u0646\",\n base64url: \"base64url-encoded \u0645\u062A\u0646\",\n json_string: \"JSON \u0645\u062A\u0646\",\n e164: \"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u064A\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0627\u0631\u06D0\",\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 `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n }\n 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`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${util.stringifyPrimitive(issue.values[0])} \u0648\u0627\u06CC`;\n }\n return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${util.joinValues(issue.values, \"|\")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\u0648\u0646\u0647\"} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0648\u064A`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0648\u064A`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.prefix}\" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;\n }\n if (_issue.format === \"ends_with\") {\n 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`;\n }\n if (_issue.format === \"includes\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \"${_issue.includes}\" \u0648\u0644\u0631\u064A`;\n }\n if (_issue.format === \"regex\") {\n 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`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`;\n }\n case \"not_multiple_of\":\n return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;\n case \"unrecognized_keys\":\n return `\u0646\u0627\u0633\u0645 ${issue.keys.length > 1 ? \"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647\" : \"\u06A9\u0644\u06CC\u0689\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n case \"invalid_union\":\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n case \"invalid_element\":\n return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n default:\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\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\u00F3w\", verb: \"mie\u0107\" },\n file: { unit: \"bajt\u00F3w\", verb: \"mie\u0107\" },\n array: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n set: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyra\u017Cenie\",\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\u0105g znak\u00F3w zakodowany w formacie base64\",\n base64url: \"ci\u0105g znak\u00F3w zakodowany w formacie base64url\",\n json_string: \"ci\u0105g znak\u00F3w w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wej\u015Bcie\",\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\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${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\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${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\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zaczyna\u0107 si\u0119 od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi ko\u0144czy\u0107 si\u0119 na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zawiera\u0107 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;\n return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${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\u0142owy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawid\u0142owe dane wej\u015Bciowe\";\n case \"invalid_element\":\n return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue.origin}`;\n default:\n return `Nieprawid\u0142owe dane wej\u015Bciowe`;\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\u00E3o\",\n email: \"endere\u00E7o 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\u00E7\u00E3o ISO\",\n ipv4: \"endere\u00E7o IPv4\",\n ipv6: \"endere\u00E7o 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\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmero\",\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\u00E1lido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inv\u00E1lido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Op\u00E7\u00E3o inv\u00E1lida: 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\u00E1lido: deve come\u00E7ar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inv\u00E1lido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inv\u00E1lido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inv\u00E1lido: deve corresponder ao padr\u00E3o ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inv\u00E1lido`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: deve ser m\u00FAltiplo 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\u00E1lida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido em ${issue.origin}`;\n default:\n return `Campo inv\u00E1lido`;\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: \"\u0441\u0438\u043C\u0432\u043E\u043B\",\n few: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\",\n many: \"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u0430\",\n many: \"\u0431\u0430\u0439\u0442\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0438\",\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 \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u044F\",\n duration: \"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64\",\n base64url: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url\",\n json_string: \"JSON \u0441\u0442\u0440\u043E\u043A\u0430\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0441\u0438\u0432\",\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 `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${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 `\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 ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.maximum.toString()} ${unit}`;\n }\n 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 ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 ${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 `\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 ${issue.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.minimum.toString()} ${unit}`;\n }\n 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 ${issue.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n 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}\"`;\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue.keys.length > 1 ? \"\u044B\u0435\" : \"\u044B\u0439\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0438\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`;\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\u0161tni 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 \u010Das\",\n date: \"ISO datum\",\n time: \"ISO \u010Das\",\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 \u0161tevilka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0161tevilo\",\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\u010Dakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pri\u010Dakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna mo\u017Enost: pri\u010Dakovano 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\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pri\u010Dakovano, 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\u010Dakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pri\u010Dakovano, 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\u010Deti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se kon\u010Dati 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 \u0161tevilo: mora biti ve\u010Dkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i klju\u010Di\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven klju\u010D 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\u00E5lla\" },\n set: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulj\u00E4rt 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\u00E4ng\",\n base64url: \"base64url-kodad str\u00E4ng\",\n json_string: \"JSON-str\u00E4ng\",\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\u00F6rv\u00E4ntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: f\u00F6rv\u00E4ntade 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\u00F6r stor(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `F\u00F6r stor(t): f\u00F6rv\u00E4ntat ${issue.origin ?? \"v\u00E4rdet\"} 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\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} 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\u00E4ng: m\u00E5ste b\u00F6rja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig str\u00E4ng: m\u00E5ste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig str\u00E4ng: m\u00E5ste inneh\u00E5lla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig str\u00E4ng: m\u00E5ste matcha m\u00F6nstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: m\u00E5ste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ok\u00E4nda nycklar\" : \"Ok\u00E4nd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"v\u00E4rdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt v\u00E4rde i ${issue.origin ?? \"v\u00E4rdet\"}`;\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: \"\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\" },\n 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\" },\n 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\" },\n 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\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\",\n email: \"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\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 \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n date: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF\",\n time: \"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n duration: \"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1\",\n ipv4: \"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n ipv6: \"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n cidrv4: \"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n cidrv6: \"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n base64: \"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n base64url: \"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n json_string: \"JSON \u0B9A\u0BB0\u0BAE\u0BCD\",\n e164: \"E.164 \u0B8E\u0BA3\u0BCD\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0B8E\u0BA3\u0BCD\",\n array: \"\u0B85\u0BA3\u0BBF\",\n null: \"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8\",\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 `\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 ${issue.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n 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 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.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`;\n }\n 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 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n 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 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; //\n }\n 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 ${issue.origin} ${adj}${issue.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n 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`;\n if (_issue.format === \"ends_with\")\n 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`;\n if (_issue.format === \"includes\")\n 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`;\n if (_issue.format === \"regex\")\n 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`;\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n case \"unrecognized_keys\":\n return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue.keys.length > 1 ? \"\u0B95\u0BB3\u0BCD\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;\n case \"invalid_union\":\n return \"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\";\n case \"invalid_element\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;\n default:\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`;\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: \"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n file: { unit: \"\u0E44\u0E1A\u0E15\u0E4C\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n array: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n set: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n email: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25\",\n url: \"URL\",\n emoji: \"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34\",\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: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n date: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO\",\n time: \"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n duration: \"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n ipv4: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4\",\n ipv6: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6\",\n cidrv4: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4\",\n cidrv6: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6\",\n base64: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64\",\n base64url: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL\",\n json_string: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON\",\n 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)\",\n jwt: \"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT\",\n template_literal: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\",\n array: \"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)\",\n null: \"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (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 `\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 ${issue.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19\" : \"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\"}`;\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22\" : \"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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}\"`;\n }\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;\n case \"unrecognized_keys\":\n return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n case \"invalid_union\":\n 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\";\n case \"invalid_element\":\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n default:\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`;\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\u0131\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131\" },\n array: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n set: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\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\u00FCre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aral\u0131\u011F\u0131\",\n cidrv6: \"IPv6 aral\u0131\u011F\u0131\",\n base64: \"base64 ile \u015Fifrelenmi\u015F metin\",\n base64url: \"base64url ile \u015Fifrelenmi\u015F metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 say\u0131s\u0131\",\n jwt: \"JWT\",\n template_literal: \"\u015Eablon 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\u00E7ersiz de\u011Fer: beklenen instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ge\u00E7ersiz se\u00E7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00F6\u011Fe\"}`;\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${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 `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ok k\u00FC\u00E7\u00FCk: 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\u00E7ersiz metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131`;\n if (_issue.format === \"ends_with\")\n return `Ge\u00E7ersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Ge\u00E7ersiz metin: \"${_issue.includes}\" i\u00E7ermeli`;\n if (_issue.format === \"regex\")\n return `Ge\u00E7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;\n return `Ge\u00E7ersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ge\u00E7ersiz say\u0131: ${issue.divisor} ile tam b\u00F6l\u00FCnebilmeli`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz anahtar`;\n case \"invalid_union\":\n return \"Ge\u00E7ersiz de\u011Fer\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz de\u011Fer`;\n default:\n return `Ge\u00E7ersiz de\u011Fer`;\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: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0437\u0456\",\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: \"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO\",\n date: \"\u0434\u0430\u0442\u0430 ISO\",\n time: \"\u0447\u0430\u0441 ISO\",\n duration: \"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO\",\n ipv4: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4\",\n ipv6: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6\",\n cidrv4: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4\",\n cidrv6: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6\",\n base64: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64\",\n base64url: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url\",\n json_string: \"\u0440\u044F\u0434\u043E\u043A JSON\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\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 `\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 ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n }\n 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}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n 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 ${util.stringifyPrimitive(issue.values[0])}`;\n 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 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n 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 ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\"}`;\n 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 ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} \u0431\u0443\u0434\u0435 ${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 `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} \u0431\u0443\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n 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}\"`;\n if (_issue.format === \"ends_with\")\n 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}\"`;\n if (_issue.format === \"includes\")\n 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}\"`;\n if (_issue.format === \"regex\")\n 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}`;\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n 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 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0456\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\";\n case \"invalid_element\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue.origin}`;\n default:\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`;\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: \"\u062D\u0631\u0648\u0641\", verb: \"\u06C1\u0648\u0646\u0627\" },\n file: { unit: \"\u0628\u0627\u0626\u0679\u0633\", verb: \"\u06C1\u0648\u0646\u0627\" },\n array: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n set: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0627\u0646 \u067E\u0679\",\n email: \"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n uuid: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n uuidv4: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4\",\n uuidv6: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6\",\n nanoid: \"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n guid: \"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid2: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2\",\n ulid: \"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC\",\n xid: \"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC\",\n ksuid: \"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n datetime: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645\",\n date: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E\",\n time: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A\",\n duration: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A\",\n ipv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n ipv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n cidrv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C\",\n cidrv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C\",\n base64: \"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n base64url: \"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n json_string: \"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF\",\n e164: \"\u0627\u06CC 164 \u0646\u0645\u0628\u0631\",\n jwt: \"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC\",\n template_literal: \"\u0627\u0646 \u067E\u0679\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0646\u0645\u0628\u0631\",\n array: \"\u0622\u0631\u06D2\",\n null: \"\u0646\u0644\",\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 `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n }\n 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`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${util.stringifyPrimitive(issue.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u06D2 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0627\u0635\u0631\"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u0627 ${adj}${issue.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u06D2 ${adj}${issue.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n }\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u0627 ${adj}${issue.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n 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`;\n }\n if (_issue.format === \"ends_with\")\n 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`;\n if (_issue.format === \"includes\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.includes}\" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n if (_issue.format === \"regex\")\n 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`;\n return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n case \"unrecognized_keys\":\n return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue.keys.length > 1 ? \"\u0632\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;\n case \"invalid_union\":\n return \"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679\";\n case \"invalid_element\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;\n default:\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`;\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\u2018lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo\u2018lishi kerak\" },\n array: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n set: { unit: \"element\", verb: \"bo\u2018lishi 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\u2018g\u2018ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto\u2018g\u2018ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto\u2018g\u2018ri 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\u2018g\u2018ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.includes}\" ni o\u2018z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto\u2018g\u2018ri raqam: ${issue.divisor} ning karralisi bo\u2018lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma\u2019lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto\u2018g\u2018ri`;\n case \"invalid_union\":\n return \"Noto\u2018g\u2018ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto\u2018g\u2018ri qiymat`;\n default:\n return `Noto\u2018g\u2018ri 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\u00FD t\u1EF1\", verb: \"c\u00F3\" },\n file: { unit: \"byte\", verb: \"c\u00F3\" },\n array: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n set: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0111\u1EA7u v\u00E0o\",\n email: \"\u0111\u1ECBa ch\u1EC9 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\u00E0y gi\u1EDD ISO\",\n date: \"ng\u00E0y ISO\",\n time: \"gi\u1EDD ISO\",\n duration: \"kho\u1EA3ng th\u1EDDi gian ISO\",\n ipv4: \"\u0111\u1ECBa ch\u1EC9 IPv4\",\n ipv6: \"\u0111\u1ECBa ch\u1EC9 IPv6\",\n cidrv4: \"d\u1EA3i IPv4\",\n cidrv6: \"d\u1EA3i IPv6\",\n base64: \"chu\u1ED7i m\u00E3 h\u00F3a base64\",\n base64url: \"chu\u1ED7i m\u00E3 h\u00F3a base64url\",\n json_string: \"chu\u1ED7i JSON\",\n e164: \"s\u1ED1 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0111\u1EA7u v\u00E0o\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"s\u1ED1\",\n array: \"m\u1EA3ng\",\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 `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${util.stringifyPrimitive(issue.values[0])}`;\n return `T\u00F9y ch\u1ECDn kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\u00E1c gi\u00E1 tr\u1ECB ${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\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"ph\u1EA7n t\u1EED\"}`;\n return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${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\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\u00FAc b\u1EB1ng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} kh\u00F4ng h\u1EE3p l\u1EC7`;\n }\n case \"not_multiple_of\":\n return `S\u1ED1 kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\u00E0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kh\u00F3a kh\u00F4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kh\u00F3a kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7\";\n case \"invalid_element\":\n return `Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n default:\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7`;\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: \"\u5B57\u7B26\", verb: \"\u5305\u542B\" },\n file: { unit: \"\u5B57\u8282\", verb: \"\u5305\u542B\" },\n array: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n set: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F93\u5165\",\n email: \"\u7535\u5B50\u90AE\u4EF6\",\n url: \"URL\",\n emoji: \"\u8868\u60C5\u7B26\u53F7\",\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\u65E5\u671F\u65F6\u95F4\",\n date: \"ISO\u65E5\u671F\",\n time: \"ISO\u65F6\u95F4\",\n duration: \"ISO\u65F6\u957F\",\n ipv4: \"IPv4\u5730\u5740\",\n ipv6: \"IPv6\u5730\u5740\",\n cidrv4: \"IPv4\u7F51\u6BB5\",\n cidrv6: \"IPv6\u7F51\u6BB5\",\n base64: \"base64\u7F16\u7801\u5B57\u7B26\u4E32\",\n base64url: \"base64url\u7F16\u7801\u5B57\u7B26\u4E32\",\n json_string: \"JSON\u5B57\u7B26\u4E32\",\n e164: \"E.164\u53F7\u7801\",\n jwt: \"JWT\",\n template_literal: \"\u8F93\u5165\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5B57\",\n array: \"\u6570\u7EC4\",\n null: \"\u7A7A\u503C(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 `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u4E2A\u5143\u7D20\"}`;\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${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 `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.prefix}\" \u5F00\u5934`;\n if (_issue.format === \"ends_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.suffix}\" \u7ED3\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;\n return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue.divisor} \u7684\u500D\u6570`;\n case \"unrecognized_keys\":\n return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;\n case \"invalid_union\":\n return \"\u65E0\u6548\u8F93\u5165\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;\n default:\n return `\u65E0\u6548\u8F93\u5165`;\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: \"\u5B57\u5143\", verb: \"\u64C1\u6709\" },\n file: { unit: \"\u4F4D\u5143\u7D44\", verb: \"\u64C1\u6709\" },\n array: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n set: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F38\u5165\",\n email: \"\u90F5\u4EF6\u5730\u5740\",\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 \u65E5\u671F\u6642\u9593\",\n date: \"ISO \u65E5\u671F\",\n time: \"ISO \u6642\u9593\",\n duration: \"ISO \u671F\u9593\",\n ipv4: \"IPv4 \u4F4D\u5740\",\n ipv6: \"IPv6 \u4F4D\u5740\",\n cidrv4: \"IPv4 \u7BC4\u570D\",\n cidrv6: \"IPv6 \u7BC4\u570D\",\n base64: \"base64 \u7DE8\u78BC\u5B57\u4E32\",\n base64url: \"base64url \u7DE8\u78BC\u5B57\u4E32\",\n json_string: \"JSON \u5B57\u4E32\",\n e164: \"E.164 \u6578\u503C\",\n jwt: \"JWT\",\n template_literal: \"\u8F38\u5165\",\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 `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue.expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u500B\u5143\u7D20\"}`;\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${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 `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.prefix}\" \u958B\u982D`;\n }\n if (_issue.format === \"ends_with\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.suffix}\" \u7D50\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;\n return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue.divisor} \u7684\u500D\u6578`;\n case \"unrecognized_keys\":\n return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue.keys.length > 1 ? \"\u5011\" : \"\"}\uFF1A${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;\n case \"invalid_union\":\n return \"\u7121\u6548\u7684\u8F38\u5165\u503C\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;\n default:\n return `\u7121\u6548\u7684\u8F38\u5165\u503C`;\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: \"\u00E0mi\", verb: \"n\u00ED\" },\n file: { unit: \"bytes\", verb: \"n\u00ED\" },\n array: { unit: \"nkan\", verb: \"n\u00ED\" },\n set: { unit: \"nkan\", verb: \"n\u00ED\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n email: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC \u00ECm\u1EB9\u0301l\u00EC\",\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: \"\u00E0k\u00F3k\u00F2 ISO\",\n date: \"\u1ECDj\u1ECD\u0301 ISO\",\n time: \"\u00E0k\u00F3k\u00F2 ISO\",\n duration: \"\u00E0k\u00F3k\u00F2 t\u00F3 p\u00E9 ISO\",\n ipv4: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv4\",\n ipv6: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv6\",\n cidrv4: \"\u00E0gb\u00E8gb\u00E8 IPv4\",\n cidrv6: \"\u00E0gb\u00E8gb\u00E8 IPv6\",\n base64: \"\u1ECD\u0300r\u1ECD\u0300 t\u00ED a k\u1ECD\u0301 n\u00ED base64\",\n base64url: \"\u1ECD\u0300r\u1ECD\u0300 base64url\",\n json_string: \"\u1ECD\u0300r\u1ECD\u0300 JSON\",\n e164: \"n\u1ECD\u0301mb\u00E0 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u1ECD\u0301mb\u00E0\",\n array: \"akop\u1ECD\",\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 `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi instanceof ${issue.expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C0\u1E63\u00E0y\u00E0n a\u1E63\u00EC\u1E63e: yan \u1ECD\u0300kan l\u00E1ra ${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\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${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\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\u00FA \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\u00ED p\u1EB9\u0300l\u00FA \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\u00ED \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u00E1 \u00E0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`;\n return `A\u1E63\u00EC\u1E63e: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u1ECD\u0301mb\u00E0 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \u00E8y\u00E0 p\u00EDp\u00EDn ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `B\u1ECDt\u00ECn\u00EC \u00E0\u00ECm\u1ECD\u0300: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `B\u1ECDt\u00ECn\u00EC a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n case \"invalid_element\":\n return `Iye a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n default:\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\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<schemas.$ZodTuple>,\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<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\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(\"/\")}/<root>` +\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) {\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<core.$ZodRecordKey>;\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 * Computer wire contract \u2014 zod schemas for every frame exchanged between a hub\n * and its computers over the duplex JSON-RPC channel.\n *\n * Versioning: the contract is versioned via `protocolVersion` carried in the\n * `enroll` request. A hub rejects enrollment from a computer speaking a\n * different major protocol version with `ComputerTransportErrorCodes.protocolMismatch`.\n * Reconnects (`hello`) reuse credentials minted at enroll time, so the\n * version negotiated at enrollment governs the session.\n *\n * Direction map (v1):\n * computer \u2192 hub requests: enroll, hello, heartbeat\n * computer \u2192 hub notifications: pty.data, pty.exit, proc.data, proc.exit,\n * event, fs.change\n * hub \u2192 computer requests: pty.spawn, pty.kill, pty.resize, pty.write,\n * pty.getBufferSince, git.isGitRepo,\n * git.getCurrentBranch, git.createWorktree,\n * git.removeWorktree, git.runWorktreeSetupScript,\n * git.copyIgnoredFiles, fs.* (see below),\n * proc.spawn, proc.kill, ping, computer.shutdown\n *\n * The `fs.` namespace has three groups, kept distinct on purpose:\n * - raw probes \u2014 fs.pathExists, fs.removeDir\n * - workspace browse (ABSOLUTE paths, jail-scoped) \u2014 fs.listRoots, fs.listDir,\n * fs.mkdir. Back the desktop's directory picker, which must describe the\n * computer's disk before a project root exists.\n * - file editor (ROOT-SCOPED, gitignore-aware) \u2014 fs.readDir, fs.readFile,\n * fs.writeFile, fs.createFile, fs.createDir, fs.rename, fs.delete,\n * fs.copyIn, fs.copy, fs.gitStatus, fs.searchFiles, fs.listAllFiles,\n * fs.watchStart, fs.watchStop.\n *\n * `pty.data.seq` is a per-session monotonic sequence number assigned by the\n * computer at emission and preserved end-to-end, so the hub can detect gaps and\n * request replay via `pty.getBufferSince`.\n *\n * @module computer/shared/frames\n */\n\nimport { z } from 'zod'\n\n/**\n * Computer process exit code meaning \"the hub no longer recognizes this computer\".\n *\n * 78 = EX_CONFIG (sysexits.h): a configuration problem a restart cannot fix. A\n * supervisor must NOT respawn on this \u2014 the hub has lost this computer's identity\n * (storage deleted, one of its two DBs restored without the other, or the computer\n * revoked) and only an operator enrolling it again resolves it. Lives here so the\n * computer that exits with it and the supervisor that reads it cannot disagree.\n */\nexport const COMPUTER_EXIT_NEEDS_RE_ENROLLMENT = 78\n\n/** Bump on any breaking change to the frames below. */\nexport const COMPUTER_PROTOCOL_VERSION = 2\n\n/** JSON-RPC application error codes used by the computer protocol. */\nexport const ComputerTransportErrorCodes = {\n /** Command is part of the contract but not implemented by this peer. */\n unimplemented: -32001,\n /** Join token / api key rejected, or method used before authentication. */\n unauthorized: -32002,\n /** Computer and hub speak incompatible protocol versions. */\n protocolMismatch: -32003,\n /** Addressed computer is not connected to this hub. */\n unknownComputer: -32004\n} as const\n\n// ---------------------------------------------------------------------------\n// computer \u2192 hub requests\n// ---------------------------------------------------------------------------\n\nexport const ComputerToHubMethods = {\n enroll: 'enroll',\n hello: 'hello',\n heartbeat: 'heartbeat'\n} as const\n\n/**\n * Identifies one computer PROCESS INCARNATION. Minted once at computer startup,\n * unchanged across every reconnect that process makes, and different after any\n * restart.\n *\n * This is what makes \"the socket dropped\" distinguishable from \"the computer\n * died\" without guessing: reconnecting with the SAME epoch proves the process\n * that owns the pty sessions never went away, so the hub may reattach to them.\n * A different epoch proves the opposite \u2014 everything the old process held is\n * gone, and its sessions can be reaped immediately instead of waiting out a\n * lease.\n *\n * OPTIONAL on the wire: a computer too old to send one leaves the hub unable to\n * prove either, so it falls back to the conservative pre-epoch behavior\n * (finalize on disconnect). Fail closed, never reattach on an unproven identity.\n */\nconst epochField = z.string().min(1).optional()\n\n/**\n * Which physical box this computer is on \u2014 see `computer/host-id.ts`.\n *\n * OPTIONAL on purpose: a computer too old to report one stays UNGROUPED rather\n * than being guessed onto a machine. Grouping is cosmetic, so absent must mean\n * \"unknown\", never \"same as some other box\".\n */\nconst hostIdField = z.string().min(1).optional()\n\n/** First-contact authentication: exchange a join token for credentials. */\nexport const enrollParamsSchema = z.object({\n joinToken: z.string().min(1),\n /** Human-readable computer name (e.g. hostname). */\n name: z.string().min(1),\n /** `${process.platform}-${process.arch}`, e.g. `darwin-arm64`. */\n platform: z.string().min(1),\n /** Computer app version. */\n version: z.string().min(1),\n /** Capability tags, e.g. `['pty', 'git']`. */\n capabilities: z.array(z.string()),\n protocolVersion: z.number().int().positive(),\n epoch: epochField,\n hostId: hostIdField\n})\nexport type EnrollParams = z.infer<typeof enrollParamsSchema>\n\nexport const enrollResultSchema = z.object({\n computerId: z.string().min(1),\n apiKey: z.string().min(1)\n})\nexport type EnrollResult = z.infer<typeof enrollResultSchema>\n\n/** Reconnect authentication with previously minted credentials. */\nexport const helloParamsSchema = z.object({\n apiKey: z.string().min(1),\n epoch: epochField,\n hostId: hostIdField\n})\nexport type HelloParams = z.infer<typeof helloParamsSchema>\n\nexport const helloResultSchema = z.object({\n computerId: z.string().min(1)\n})\nexport type HelloResult = z.infer<typeof helloResultSchema>\n\n/** Liveness probe; also lets the computer detect an unresponsive hub. */\nexport const heartbeatParamsSchema = z.object({\n /** Sender wall-clock ms, for skew diagnostics. */\n ts: z.number().optional()\n})\nexport type HeartbeatParams = z.infer<typeof heartbeatParamsSchema>\n\nexport const heartbeatResultSchema = z.object({\n ts: z.number()\n})\nexport type HeartbeatResult = z.infer<typeof heartbeatResultSchema>\n\n// ---------------------------------------------------------------------------\n// computer \u2192 hub notifications\n// ---------------------------------------------------------------------------\n\nexport const ComputerNotificationMethods = {\n ptyData: 'pty.data',\n ptyExit: 'pty.exit',\n procData: 'proc.data',\n procExit: 'proc.exit',\n event: 'event',\n fsChange: 'fs.change'\n} as const\n\nexport const ptyDataParamsSchema = z.object({\n sessionId: z.string().min(1),\n /** Monotonic per-session sequence number, preserved end-to-end. */\n seq: z.number().int().nonnegative(),\n data: z.string()\n})\nexport type PtyDataParams = z.infer<typeof ptyDataParamsSchema>\n\nexport const ptyExitParamsSchema = z.object({\n sessionId: z.string().min(1),\n exitCode: z.number().int().nullable(),\n signal: z.string().nullable().optional()\n})\nexport type PtyExitParams = z.infer<typeof ptyExitParamsSchema>\n\n/** Generic computer-side event (agent lifecycle, diagnostics, \u2026). */\nexport const computerEventParamsSchema = z.object({\n name: z.string().min(1),\n payload: z.unknown().optional()\n})\nexport type ComputerEventParams = z.infer<typeof computerEventParamsSchema>\n\n/**\n * `ComputerEventParams.name` for a relayed agent lifecycle hook. A computer-routed\n * pty posts its hook to the computer's OWN loopback `/api/agent-hook`, and the\n * computer forwards the raw envelope to the hub as a generic `event` with THIS\n * name. Shared wire contract: the computer emits it, the hub matches on it.\n */\nexport const AGENT_HOOK_EVENT_NAME = 'agent-hook'\n\n/**\n * Child-process output chunk (proc.spawn stream).\n *\n * SEQUENCED, like `pty.data`: `seq` is a per-session monotonic counter assigned\n * by the computer at emission, and the hub detects gaps + replays them via\n * `proc.getBufferSince`. This is not symmetry for its own sake \u2014 a chat agent's\n * stdout is an NDJSON protocol stream, so a single dropped or reordered chunk\n * desynchronizes the driver's request correlation irrecoverably (a torn line is\n * not recoverable by the reader). `stream` distinguishes stdout from stderr;\n * absent means stdout. Only the stdout stream is buffered/replayable \u2014 stderr is\n * diagnostic and delivered in arrival order.\n */\nexport const procDataParamsSchema = z.object({\n sessionId: z.string().min(1),\n /** Monotonic per-session sequence number for `stdout`. Absent on stderr. */\n seq: z.number().int().nonnegative().optional(),\n data: z.string(),\n stream: z.enum(['stdout', 'stderr']).optional()\n})\nexport type ProcDataParams = z.infer<typeof procDataParamsSchema>\n\n/** Child process exited. Mirrors `pty.exit`. */\nexport const procExitParamsSchema = z.object({\n sessionId: z.string().min(1),\n exitCode: z.number().int().nullable(),\n signal: z.string().nullable().optional()\n})\nexport type ProcExitParams = z.infer<typeof procExitParamsSchema>\n\n/**\n * A watched file changed on the computer (file-editor panel).\n *\n * Correlated by `watchId`, which the HUB mints and passes to `fs.watchStart` \u2014\n * not by `rootPath`. Two tasks can watch the same root on the same computer, and a\n * root-keyed stream could not tell their subscriptions apart on unsubscribe.\n * `relPath` is relative to the watched root, matching `FileWatchEvent` in\n * `@slayzone/file-editor/server`, which is what produces these events.\n */\nexport const fsChangeParamsSchema = z.object({\n watchId: z.string().min(1),\n type: z.enum(['changed', 'deleted']),\n relPath: z.string()\n})\nexport type FsChangeParams = z.infer<typeof fsChangeParamsSchema>\n\nexport const computerNotificationSchemas = {\n [ComputerNotificationMethods.ptyData]: ptyDataParamsSchema,\n [ComputerNotificationMethods.ptyExit]: ptyExitParamsSchema,\n [ComputerNotificationMethods.procData]: procDataParamsSchema,\n [ComputerNotificationMethods.procExit]: procExitParamsSchema,\n [ComputerNotificationMethods.event]: computerEventParamsSchema,\n [ComputerNotificationMethods.fsChange]: fsChangeParamsSchema\n} as const\nexport type ComputerNotificationMethod = keyof typeof computerNotificationSchemas\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests\n// ---------------------------------------------------------------------------\n\nexport const HubToComputerMethods = {\n ptySpawn: 'pty.spawn',\n ptyKill: 'pty.kill',\n ptyResize: 'pty.resize',\n ptyWrite: 'pty.write',\n ptyGetBufferSince: 'pty.getBufferSince',\n /** Live (non-warm) sessions the computer still holds \u2014 drives reattach. */\n ptyList: 'pty.list',\n // warm pool (pre-warmed agents live ON the computer \u2014 see server/warm-*)\n ptyWarmSpawn: 'pty.warmSpawn',\n ptyWarmAdopt: 'pty.warmAdopt',\n ptyWarmKill: 'pty.warmKill',\n ptyWarmList: 'pty.warmList',\n // git ops (routed WorktreeExecAdapters \u2014 see server/exec-proxies)\n gitIsGitRepo: 'git.isGitRepo',\n gitGetCurrentBranch: 'git.getCurrentBranch',\n gitCreateWorktree: 'git.createWorktree',\n gitRemoveWorktree: 'git.removeWorktree',\n gitRunWorktreeSetupScript: 'git.runWorktreeSetupScript',\n gitCopyIgnoredFiles: 'git.copyIgnoredFiles',\n // raw-fs ops (routed pathExists / removeArtifactDir seams)\n fsPathExists: 'fs.pathExists',\n fsRemoveDir: 'fs.removeDir',\n // workspace browse ops \u2014 ABSOLUTE paths inside the computer's allowedRoots, used\n // by the desktop's directory picker before any project/root exists.\n fsListRoots: 'fs.listRoots',\n fsListDir: 'fs.listDir',\n fsMkdir: 'fs.mkdir',\n // file-editor ops \u2014 ROOT-SCOPED (rootPath + a path relative to it), gitignore\n // aware. One-to-one with `@slayzone/file-editor/server`, which the computer\n // imports directly rather than reimplementing.\n fsReadDir: 'fs.readDir',\n fsReadFile: 'fs.readFile',\n fsWriteFile: 'fs.writeFile',\n fsCreateFile: 'fs.createFile',\n fsCreateDir: 'fs.createDir',\n fsRename: 'fs.rename',\n fsDelete: 'fs.delete',\n fsCopyIn: 'fs.copyIn',\n fsCopy: 'fs.copy',\n fsGitStatus: 'fs.gitStatus',\n fsSearchFiles: 'fs.searchFiles',\n fsListAllFiles: 'fs.listAllFiles',\n /** Whole-tree git repo discovery \u2014 one call, not one per directory. */\n fsDiscoverRepos: 'fs.discoverRepos',\n // file-editor watch lifecycle; changes stream back as `fs.change` notifications.\n fsWatchStart: 'fs.watchStart',\n fsWatchStop: 'fs.watchStop',\n // child-process ops (routed ProcessBackend + routed chat agents)\n procSpawn: 'proc.spawn',\n procKill: 'proc.kill',\n procWrite: 'proc.write',\n procGetBufferSince: 'proc.getBufferSince',\n /** Live child processes the computer still holds \u2014 drives reattach. */\n procList: 'proc.list',\n // project \u2192 path mapping. The COMPUTER owns where a project lives on its own\n // disk; the hub knows only which computer. See `project.resolvePath` below.\n projectResolvePath: 'project.resolvePath',\n projectSetPath: 'project.setPath',\n projectForgetPath: 'project.forgetPath',\n projectList: 'project.list',\n ping: 'ping',\n computerShutdown: 'computer.shutdown',\n /** Edit the computer's own path-jail (Settings \u2192 Computers). */\n computerSetAllowedRoots: 'computer.setAllowedRoots',\n /** Run `gh` on the computer (PR panel). One frame, not one per gh subcommand. */\n ghExec: 'gh.exec'\n} as const\n\n/** Reserved method namespaces for future hub \u2192 computer exec commands. */\nexport const RESERVED_HUB_METHOD_PREFIXES = ['pty.', 'fs.', 'git.', 'proc.', 'project.'] as const\n\nexport const ptySpawnParamsSchema = z\n .object({\n sessionId: z.string().min(1),\n command: z.string().min(1),\n args: z.array(z.string()).optional(),\n /**\n * Absolute cwd. Optional now: when absent the COMPUTER resolves it from\n * `projectId` against its own `project.*` mapping, because the hub cannot \u2014\n * it held one path column naming a directory on a machine it does not own.\n *\n * Still sent, and authoritative when it is, for the two cases where the path\n * is not a hub guess: a worktree the computer itself created, and an explicit\n * `task.base_dir` override.\n */\n cwd: z.string().min(1).optional(),\n /** Lets the computer resolve its own cwd when `cwd` is absent. */\n projectId: z.string().min(1).optional(),\n env: z.record(z.string(), z.string()).optional(),\n cols: z.number().int().positive().optional(),\n rows: z.number().int().positive().optional()\n })\n // Neither one means a spawn with nowhere to run. Refuse at the schema rather\n // than landing an agent in the computer's launch directory, which is the kind of\n // silent wrong-cwd this whole change exists to remove.\n .refine((p) => p.cwd !== undefined || p.projectId !== undefined, {\n message: 'pty.spawn needs either cwd or projectId'\n })\nexport type PtySpawnParams = z.infer<typeof ptySpawnParamsSchema>\n\nexport const ptySpawnResultSchema = z.object({\n pid: z.number().int()\n})\nexport type PtySpawnResult = z.infer<typeof ptySpawnResultSchema>\n\nexport const ptyKillParamsSchema = z.object({\n sessionId: z.string().min(1),\n signal: z.string().optional()\n})\nexport type PtyKillParams = z.infer<typeof ptyKillParamsSchema>\n\nexport const ptyResizeParamsSchema = z.object({\n sessionId: z.string().min(1),\n cols: z.number().int().positive(),\n rows: z.number().int().positive()\n})\nexport type PtyResizeParams = z.infer<typeof ptyResizeParamsSchema>\n\nexport const ptyWriteParamsSchema = z.object({\n sessionId: z.string().min(1),\n data: z.string()\n})\nexport type PtyWriteParams = z.infer<typeof ptyWriteParamsSchema>\n\n/** Replay buffered output with `seq > since.seq` (gap recovery on reconnect). */\nexport const ptyGetBufferSinceParamsSchema = z.object({\n sessionId: z.string().min(1),\n /**\n * Exclusive lower bound \u2014 frames with `seq > this` are replayed.\n *\n * MAY be -1, meaning \"everything, including seq 0\". The hub's gap detector\n * starts at `lastSeq = -1` (`exec-proxies.ts`) precisely so seq 0 is not eaten,\n * and it sends that value verbatim when the OPENING chunk is the one that went\n * missing. A `nonnegative()` bound here rejected exactly that request; the\n * rejection was swallowed by the caller's best-effort catch, so the session\n * silently lost its first output instead of recovering it \u2014 the very bug\n * starting at -1 exists to prevent. `procGetBufferSinceParamsSchema` already\n * allows it; these two must not drift.\n */\n seq: z.number().int()\n})\nexport type PtyGetBufferSinceParams = z.infer<typeof ptyGetBufferSinceParamsSchema>\n\nexport const ptyGetBufferSinceResultSchema = z.object({\n frames: z.array(\n z.object({\n seq: z.number().int().nonnegative(),\n data: z.string()\n })\n )\n})\nexport type PtyGetBufferSinceResult = z.infer<typeof ptyGetBufferSinceResultSchema>\n\n/**\n * Live (non-warm) sessions the computer still holds. The computer is the AUTHORITY\n * on this \u2014 the hub's own registry is only a belief about it, and after a\n * dropped connection the two can disagree in both directions.\n *\n * `seq` is the highest seq the computer has assigned, so the hub can tell whether\n * it missed anything while detached and backfill via `pty.getBufferSince`.\n * Empty on a computer holding nothing, which is a legitimate answer, NOT an error:\n * it means every session really did exit while the hub was away.\n */\nexport const ptyListResultSchema = z.object({\n sessions: z.array(\n z.object({\n sessionId: z.string().min(1),\n pid: z.number().int(),\n /** Highest assigned seq; -1 when the session has emitted nothing yet. */\n seq: z.number().int()\n })\n )\n})\nexport type PtyListResult = z.infer<typeof ptyListResultSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: warm pool\n//\n// A pre-warmed agent is an ORDINARY pty session on the computer, keyed by a\n// `warmId` instead of a real `sessionId`. Adoption REKEYS that entry rather than\n// spawning anything: the process, its pid and \u2014 critically \u2014 its RingBuffer and\n// assigned seqs all carry over untouched, so `pty.getBufferSince` stays coherent\n// across the adopt boundary. Replaying a seed into a fresh buffer instead would\n// restart seq numbering under a stream the hub is already tracking.\n//\n// The computer owns the process; the hub owns the POLICY (which projects deserve a\n// warm agent) and the `agent_sessions` rows. That split is why there is no\n// \"warm state\" frame \u2014 the hub already knows what it asked for.\n// ---------------------------------------------------------------------------\n\nexport const ptyWarmSpawnParamsSchema = z.object({\n /** Placeholder session key; becomes a real `sessionId` at adopt. */\n warmId: z.string().min(1),\n command: z.string().min(1),\n args: z.array(z.string()).optional(),\n cwd: z.string().min(1),\n env: z.record(z.string(), z.string()).optional(),\n cols: z.number().int().positive().optional(),\n rows: z.number().int().positive().optional(),\n /**\n * Written to the shell's stdin right after spawn, to `exec` the agent inside\n * it (the pre-boot). Optional: omitted \u21D2 a bare warm shell, and the caller\n * execs at adopt instead.\n */\n postSpawnCommand: z.string().optional()\n})\nexport type PtyWarmSpawnParams = z.infer<typeof ptyWarmSpawnParamsSchema>\n\nexport const ptyWarmSpawnResultSchema = z.object({\n pid: z.number().int()\n})\nexport type PtyWarmSpawnResult = z.infer<typeof ptyWarmSpawnResultSchema>\n\n/** Promote a warm session to a real one. Rekeys in place \u2014 no respawn. */\nexport const ptyWarmAdoptParamsSchema = z.object({\n warmId: z.string().min(1),\n sessionId: z.string().min(1)\n})\nexport type PtyWarmAdoptParams = z.infer<typeof ptyWarmAdoptParamsSchema>\n\nexport const ptyWarmAdoptResultSchema = z.object({\n pid: z.number().int(),\n /**\n * Everything the warm process emitted before adoption, and the seq it stopped\n * at. The hub seeds its own buffer with `data` and resumes gap detection from\n * `seq`, so the first post-adopt frame is contiguous with the pre-adopt ones.\n */\n data: z.string(),\n seq: z.number().int()\n})\nexport type PtyWarmAdoptResult = z.infer<typeof ptyWarmAdoptResultSchema>\n\nexport const ptyWarmKillParamsSchema = z.object({\n warmId: z.string().min(1)\n})\nexport type PtyWarmKillParams = z.infer<typeof ptyWarmKillParamsSchema>\n\n/**\n * Every warm session this computer still holds.\n *\n * Load-bearing on reconnect: warm agents are the computer's processes, so unlike\n * the old hub-local pool they SURVIVE a hub restart \u2014 and an unclaimed pre-booted\n * agent is a billable process with no owner. The hub reconciles against this list\n * when a computer (re)connects and kills what it no longer wants.\n */\nexport const ptyWarmListResultSchema = z.object({\n warms: z.array(\n z.object({\n warmId: z.string().min(1),\n cwd: z.string(),\n pid: z.number().int(),\n startedAt: z.number()\n })\n )\n})\nexport type PtyWarmListResult = z.infer<typeof ptyWarmListResultSchema>\n\nexport const pingParamsSchema = z.object({\n ts: z.number().optional()\n})\nexport type PingParams = z.infer<typeof pingParamsSchema>\n\nexport const pingResultSchema = z.object({\n ts: z.number()\n})\nexport type PingResult = z.infer<typeof pingResultSchema>\n\n/**\n * Replace the computer's `allowedRoots` path-jail, persisting to its\n * `computer.config.json` and applying without a restart.\n *\n * Not a privilege grant: a hub that can `pty.spawn` already runs arbitrary\n * commands on the computer, so the jail is a safety rail against a mistaken path,\n * not a security boundary against the hub. It exists so a stale project path\n * cannot make the hub delete the wrong tree \u2014 which is exactly why the operator\n * needs to be able to widen it when their projects legitimately live elsewhere.\n */\nexport const computerSetAllowedRootsParamsSchema = z.object({\n /** Absolute paths. Replaces the current set wholesale. */\n roots: z.array(z.string().min(1))\n})\nexport type ComputerSetAllowedRootsParams = z.infer<typeof computerSetAllowedRootsParamsSchema>\n\nexport const computerSetAllowedRootsResultSchema = z.object({\n /** The set actually applied, realpath-resolved and de-duplicated. */\n roots: z.array(z.string()),\n /** Requested roots that were dropped, with the reason (absent dir, relative). */\n rejected: z.array(z.object({ path: z.string(), reason: z.string() }))\n})\nexport type ComputerSetAllowedRootsResult = z.infer<typeof computerSetAllowedRootsResultSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: project \u2192 path mapping\n//\n// `projects.path` used to live on the hub: ONE column naming a directory the hub\n// cannot see, on a machine it does not own. Two computers laying the same project\n// out differently made the hub necessarily wrong about one of them, and a Windows\n// computer does not even agree on the separator.\n//\n// So the hub knows WHAT a project is (id, name) and each computer knows WHERE it\n// put that project. Every path is one the user pointed at: nothing here creates\n// a checkout, so there is no second kind to distinguish.\n// ---------------------------------------------------------------------------\n\nexport const projectResolvePathParamsSchema = z.object({\n projectId: z.string().min(1)\n})\nexport type ProjectResolvePathParams = z.infer<typeof projectResolvePathParamsSchema>\n\n/**\n * `path: null` = this computer has no checkout of that project.\n *\n * A real, actionable state \u2014 not an error. It is the honest answer the single\n * hub-side column could never give: it always had *a* path, even for a machine\n * that had never seen the project.\n */\nexport const projectResolvePathResultSchema = z.object({\n path: z.string().nullable(),\n /** False when the recorded path has since vanished from disk. */\n exists: z.boolean().optional()\n})\nexport type ProjectResolvePathResult = z.infer<typeof projectResolvePathResultSchema>\n\nexport const projectSetPathParamsSchema = z.object({\n projectId: z.string().min(1),\n /** Absolute path ON THE COMPUTER. Must resolve inside `allowedRoots`. */\n path: z.string().min(1)\n})\nexport type ProjectSetPathParams = z.infer<typeof projectSetPathParamsSchema>\n\nexport const projectSetPathResultSchema = z.object({\n /** The realpath-resolved path actually recorded. */\n path: z.string()\n})\nexport type ProjectSetPathResult = z.infer<typeof projectSetPathResultSchema>\n\nexport const projectForgetPathParamsSchema = z.object({\n projectId: z.string().min(1)\n})\nexport type ProjectForgetPathParams = z.infer<typeof projectForgetPathParamsSchema>\n\nexport const projectListParamsSchema = z.object({})\nexport type ProjectListParams = z.infer<typeof projectListParamsSchema>\n\nexport const projectListResultSchema = z.object({\n projects: z.array(\n z.object({\n projectId: z.string(),\n path: z.string(),\n exists: z.boolean()\n })\n )\n})\nexport type ProjectListResult = z.infer<typeof projectListResultSchema>\n\n/**\n * Run `gh` where the git work happens.\n *\n * ONE generic frame rather than one per subcommand. The hub already has a single\n * `spawnGh` chokepoint with eleven typed functions above it (`listOpenPrs`,\n * `createPr`, `getPrComments`, \u2026); routing the chokepoint keeps that typing and\n * its parsing on the hub while the process runs on the computer. Eleven frames\n * would be eleven chances for the schema drift this contract has already paid\n * for four times.\n *\n * Why route it at all: `gh` authenticates as whoever owns the machine it runs on.\n * On the hub the PR panel spoke as the HUB while the agent pushed as the COMPUTER \u2014\n * two identities for one repo, and only one of them had credentials.\n *\n * `args` is argv, never a shell string: a PR title or comment body is arbitrary\n * user text, and handing it to a shell would make quoting a security boundary.\n */\nexport const ghExecParamsSchema = z.object({\n args: z.array(z.string()),\n /** Repo directory. Passes the computer's allowedRoots jail. */\n cwd: z.string().min(1),\n timeoutMs: z.number().int().positive().optional(),\n /** Written to gh's stdin \u2014 used for a PR body, which can be long. */\n stdin: z.string().optional()\n})\nexport type GhExecParams = z.infer<typeof ghExecParamsSchema>\n\nexport const ghExecResultSchema = z.object({\n /** Null when the process was killed by a signal or never started. */\n status: z.number().int().nullable(),\n stdout: z.string(),\n stderr: z.string()\n})\nexport type GhExecResult = z.infer<typeof ghExecResultSchema>\n\nexport const computerShutdownParamsSchema = z.object({\n reason: z.string().optional(),\n /** Grace period before the computer may hard-exit. */\n deadlineMs: z.number().int().nonnegative().optional()\n})\nexport type ComputerShutdownParams = z.infer<typeof computerShutdownParamsSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: git ops\n//\n// Param/result shapes mirror the task-domain `WorktreeExecAdapters` seam\n// (narrowed to the arguments task ops actually pass); the hub-side routing\n// adapters in `server/exec-proxies` forward each seam method to these frames.\n// ---------------------------------------------------------------------------\n\nexport const gitIsGitRepoParamsSchema = z.object({\n path: z.string().min(1)\n})\nexport type GitIsGitRepoParams = z.infer<typeof gitIsGitRepoParamsSchema>\n\nexport const gitIsGitRepoResultSchema = z.object({\n isGitRepo: z.boolean()\n})\nexport type GitIsGitRepoResult = z.infer<typeof gitIsGitRepoResultSchema>\n\nexport const gitGetCurrentBranchParamsSchema = z.object({\n repoPath: z.string().min(1)\n})\nexport type GitGetCurrentBranchParams = z.infer<typeof gitGetCurrentBranchParamsSchema>\n\nexport const gitGetCurrentBranchResultSchema = z.object({\n branch: z.string().nullable()\n})\nexport type GitGetCurrentBranchResult = z.infer<typeof gitGetCurrentBranchResultSchema>\n\nexport const gitCreateWorktreeParamsSchema = z.object({\n repoPath: z.string().min(1),\n worktreePath: z.string().min(1),\n branch: z.string().min(1),\n sourceBranch: z.string().optional()\n})\nexport type GitCreateWorktreeParams = z.infer<typeof gitCreateWorktreeParamsSchema>\n\nexport const gitRemoveWorktreeParamsSchema = z.object({\n projectPath: z.string().min(1),\n worktreePath: z.string().min(1)\n})\nexport type GitRemoveWorktreeParams = z.infer<typeof gitRemoveWorktreeParamsSchema>\n\nexport const gitRemoveWorktreeResultSchema = z.object({\n branchDeleted: z.boolean().optional(),\n branchError: z.string().optional()\n})\nexport type GitRemoveWorktreeResult = z.infer<typeof gitRemoveWorktreeResultSchema>\n\nexport const gitRunWorktreeSetupScriptParamsSchema = z.object({\n worktreePath: z.string().min(1),\n repoPath: z.string().min(1),\n sourceBranch: z.string().nullable().optional()\n})\nexport type GitRunWorktreeSetupScriptParams = z.infer<typeof gitRunWorktreeSetupScriptParamsSchema>\n\nexport const gitRunWorktreeSetupScriptResultSchema = z.object({\n ran: z.boolean(),\n success: z.boolean().optional(),\n output: z.string().optional()\n})\nexport type GitRunWorktreeSetupScriptResult = z.infer<typeof gitRunWorktreeSetupScriptResultSchema>\n\nexport const gitCopyIgnoredFilesParamsSchema = z.object({\n repoPath: z.string().min(1),\n worktreePath: z.string().min(1),\n behavior: z.enum(['all', 'custom']),\n customPaths: z.array(z.string())\n})\nexport type GitCopyIgnoredFilesParams = z.infer<typeof gitCopyIgnoredFilesParamsSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: raw-fs ops\n// ---------------------------------------------------------------------------\n\nexport const fsPathExistsParamsSchema = z.object({\n path: z.string().min(1)\n})\nexport type FsPathExistsParams = z.infer<typeof fsPathExistsParamsSchema>\n\nexport const fsPathExistsResultSchema = z.object({\n exists: z.boolean()\n})\nexport type FsPathExistsResult = z.infer<typeof fsPathExistsResultSchema>\n\nexport const fsRemoveDirParamsSchema = z.object({\n path: z.string().min(1)\n})\nexport type FsRemoveDirParams = z.infer<typeof fsRemoveDirParamsSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: workspace browse ops\n//\n// ABSOLUTE paths, scoped to the computer's `allowedRoots`. These back the desktop's\n// directory picker, which has to answer \"what is on the machine that will run the\n// agent\" BEFORE a project (and therefore a root) exists \u2014 so unlike the editor ops\n// below they take no rootPath and return no relative paths.\n// ---------------------------------------------------------------------------\n\n/** No params: a computer's browsable roots are its configured path-jail. */\nexport const fsListRootsParamsSchema = z.object({})\nexport type FsListRootsParams = z.infer<typeof fsListRootsParamsSchema>\n\nexport const fsListRootsResultSchema = z.object({\n /** The computer's `allowedRoots`, realpath-resolved. Empty = fs access refused. */\n roots: z.array(z.string()),\n /** The computer user's home dir, for a sensible default expansion. */\n home: z.string().nullable(),\n /** `process.platform` \u2014 lets the client render paths in the computer's idiom. */\n platform: z.string(),\n /** Path separator on the computer, so the client never assumes POSIX. */\n sep: z.string()\n})\nexport type FsListRootsResult = z.infer<typeof fsListRootsResultSchema>\n\nexport const fsListDirEntrySchema = z.object({\n name: z.string(),\n /** ABSOLUTE path on the computer. */\n path: z.string(),\n type: z.enum(['directory', 'file']),\n isSymlink: z.boolean().optional(),\n /** Directory contains a `.git` entry \u2014 surfaced so the picker can mark repos. */\n isGitRepo: z.boolean().optional()\n})\nexport type FsListDirEntry = z.infer<typeof fsListDirEntrySchema>\n\nexport const fsListDirParamsSchema = z.object({\n /** Absolute dir to list. Must resolve inside an allowed root. */\n path: z.string().min(1),\n /** Omit files. The picker selects directories, so it passes true. */\n dirsOnly: z.boolean().optional(),\n /** Include dotfiles/dirs. Default false \u2014 a picker showing `.cache` is noise. */\n includeHidden: z.boolean().optional()\n})\nexport type FsListDirParams = z.infer<typeof fsListDirParamsSchema>\n\nexport const fsListDirResultSchema = z.object({\n /** The realpath-resolved directory actually listed. */\n path: z.string(),\n /** Parent dir, or null when `path` IS an allowed root (nothing above it). */\n parent: z.string().nullable(),\n entries: z.array(fsListDirEntrySchema)\n})\nexport type FsListDirResult = z.infer<typeof fsListDirResultSchema>\n\nexport const fsMkdirParamsSchema = z.object({\n /** Absolute path to create, recursively. Must land inside an allowed root. */\n path: z.string().min(1)\n})\nexport type FsMkdirParams = z.infer<typeof fsMkdirParamsSchema>\n\nexport const fsMkdirResultSchema = z.object({\n /** The created directory, realpath-resolved. */\n path: z.string()\n})\nexport type FsMkdirResult = z.infer<typeof fsMkdirResultSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: file-editor ops\n//\n// ROOT-SCOPED: every path is relative to `rootPath`, gitignore is honoured, and\n// the shapes are one-to-one with `@slayzone/file-editor/server`. The computer\n// imports that module directly, so these schemas describe ITS types \u2014 the\n// compile-time assertions in `computer/src/handlers/fs.ts` pin the two together.\n//\n// `rootPath` still passes the allowedRoots jail on the computer; `assertWithinRoot`\n// inside file-editor then contains the relative part. Two independent guards,\n// deliberately: the jail bounds the machine, the root bounds the workspace.\n// ---------------------------------------------------------------------------\n\n/** Mirrors `DirEntry` from `@slayzone/file-editor/shared`. */\nexport const fsDirEntrySchema = z.object({\n name: z.string(),\n /** Path RELATIVE to `rootPath`. */\n path: z.string(),\n type: z.enum(['file', 'directory']),\n ignored: z.boolean().optional(),\n isSymlink: z.boolean().optional()\n})\n\nexport const fsReadDirParamsSchema = z.object({\n rootPath: z.string().min(1),\n dirPath: z.string()\n})\nexport type FsReadDirParams = z.infer<typeof fsReadDirParamsSchema>\n\nexport const fsReadDirResultSchema = z.object({\n entries: z.array(fsDirEntrySchema)\n})\nexport type FsReadDirResult = z.infer<typeof fsReadDirResultSchema>\n\nexport const fsReadFileParamsSchema = z.object({\n rootPath: z.string().min(1),\n filePath: z.string().min(1),\n force: z.boolean().optional()\n})\nexport type FsReadFileParams = z.infer<typeof fsReadFileParamsSchema>\n\n/** Mirrors `ReadFileResult`. `content: null` + `tooLarge` = refused by size. */\nexport const fsReadFileResultSchema = z.object({\n content: z.string().nullable(),\n tooLarge: z.boolean().optional(),\n sizeBytes: z.number().optional()\n})\nexport type FsReadFileResult = z.infer<typeof fsReadFileResultSchema>\n\nexport const fsWriteFileParamsSchema = z.object({\n rootPath: z.string().min(1),\n filePath: z.string().min(1),\n content: z.string()\n})\nexport type FsWriteFileParams = z.infer<typeof fsWriteFileParamsSchema>\n\nexport const fsCreateFileParamsSchema = z.object({\n rootPath: z.string().min(1),\n filePath: z.string().min(1)\n})\nexport type FsCreateFileParams = z.infer<typeof fsCreateFileParamsSchema>\n\nexport const fsCreateDirParamsSchema = z.object({\n rootPath: z.string().min(1),\n dirPath: z.string().min(1)\n})\nexport type FsCreateDirParams = z.infer<typeof fsCreateDirParamsSchema>\n\nexport const fsRenameParamsSchema = z.object({\n rootPath: z.string().min(1),\n oldPath: z.string().min(1),\n newPath: z.string().min(1)\n})\nexport type FsRenameParams = z.infer<typeof fsRenameParamsSchema>\n\nexport const fsDeleteParamsSchema = z.object({\n rootPath: z.string().min(1),\n targetPath: z.string().min(1)\n})\nexport type FsDeleteParams = z.infer<typeof fsDeleteParamsSchema>\n\nexport const fsCopyInParamsSchema = z.object({\n rootPath: z.string().min(1),\n /** Absolute source ON THE COMPUTER. Also jailed \u2014 it is a second machine path. */\n absoluteSrc: z.string().min(1),\n targetDir: z.string().optional()\n})\nexport type FsCopyInParams = z.infer<typeof fsCopyInParamsSchema>\n\nexport const fsCopyInResultSchema = z.object({\n /** Path of the copy, relative to `rootPath`. */\n path: z.string()\n})\nexport type FsCopyInResult = z.infer<typeof fsCopyInResultSchema>\n\nexport const fsCopyParamsSchema = z.object({\n rootPath: z.string().min(1),\n srcPath: z.string().min(1),\n destPath: z.string().min(1)\n})\nexport type FsCopyParams = z.infer<typeof fsCopyParamsSchema>\n\nexport const fsGitStatusParamsSchema = z.object({\n rootPath: z.string().min(1)\n})\nexport type FsGitStatusParams = z.infer<typeof fsGitStatusParamsSchema>\n\n/** Mirrors `GitStatusMap`. */\nexport const fsGitStatusResultSchema = z.object({\n files: z.record(\n z.string(),\n z.enum(['modified', 'staged', 'untracked', 'added', 'deleted', 'renamed', 'conflicted'])\n ),\n isGitRepo: z.boolean()\n})\nexport type FsGitStatusResult = z.infer<typeof fsGitStatusResultSchema>\n\n/**\n * Transport-layer caps on the two whole-tree reads.\n *\n * These used to be in-process calls where returning 200k paths cost an array;\n * over the wire it is a single frame the hub must buffer, parse, and forward to\n * every subscribed client. Capping HERE rather than per-caller means one number\n * governs the wire, and `truncated` makes the cut visible instead of silently\n * presenting a partial tree as complete.\n */\nexport const FS_MAX_LIST_ALL_FILES = 50_000\nexport const FS_MAX_SEARCH_RESULTS = 2_000\n\nexport const fsListAllFilesParamsSchema = z.object({\n rootPath: z.string().min(1)\n})\nexport type FsListAllFilesParams = z.infer<typeof fsListAllFilesParamsSchema>\n\nexport const fsListAllFilesResultSchema = z.object({\n /** Paths relative to `rootPath`, capped at {@link FS_MAX_LIST_ALL_FILES}. */\n files: z.array(z.string()),\n truncated: z.boolean()\n})\nexport type FsListAllFilesResult = z.infer<typeof fsListAllFilesResultSchema>\n\nexport const fsSearchFilesParamsSchema = z.object({\n rootPath: z.string().min(1),\n query: z.string(),\n options: z\n .object({\n matchCase: z.boolean().optional(),\n regex: z.boolean().optional(),\n maxResults: z.number().int().positive().optional()\n })\n .optional()\n})\nexport type FsSearchFilesParams = z.infer<typeof fsSearchFilesParamsSchema>\n\n/** Mirrors `FileSearchResult[]`, capped at {@link FS_MAX_SEARCH_RESULTS}. */\nexport const fsSearchFilesResultSchema = z.object({\n results: z.array(\n z.object({\n path: z.string(),\n matches: z.array(z.object({ line: z.number(), col: z.number(), lineText: z.string() }))\n })\n ),\n truncated: z.boolean()\n})\nexport type FsSearchFilesResult = z.infer<typeof fsSearchFilesResultSchema>\n\nexport const fsDiscoverReposParamsSchema = z.object({\n rootPath: z.string().min(1),\n maxDepth: z.number().int().positive().optional()\n})\nexport type FsDiscoverReposParams = z.infer<typeof fsDiscoverReposParamsSchema>\n\n/** Mirrors `DiscoveredRepo[]` from `@slayzone/file-editor/server`. */\nexport const fsDiscoverReposResultSchema = z.object({\n repos: z.array(\n z.object({\n path: z.string(),\n name: z.string(),\n kind: z.enum(['project-root', 'child-repo', 'submodule']),\n parentPath: z.string().nullable(),\n hasGitmodules: z.boolean()\n })\n )\n})\nexport type FsDiscoverReposResult = z.infer<typeof fsDiscoverReposResultSchema>\n\nexport const fsWatchStartParamsSchema = z.object({\n /** HUB-minted correlation id, echoed on every `fs.change` for this watch. */\n watchId: z.string().min(1),\n rootPath: z.string().min(1)\n})\nexport type FsWatchStartParams = z.infer<typeof fsWatchStartParamsSchema>\n\nexport const fsWatchStopParamsSchema = z.object({\n watchId: z.string().min(1)\n})\nexport type FsWatchStopParams = z.infer<typeof fsWatchStopParamsSchema>\n\n/** Shared by the write/lifecycle fs ops that return nothing meaningful. */\nexport const fsOkResultSchema = z.object({ ok: z.literal(true) })\nexport type FsOkResult = z.infer<typeof fsOkResultSchema>\n\n// ---------------------------------------------------------------------------\n// hub \u2192 computer requests: child-process ops\n// ---------------------------------------------------------------------------\n\nexport const procSpawnParamsSchema = z.object({\n sessionId: z.string().min(1),\n /** Resolve cwd from this project when `cwd` is absent. See `pty.spawn`. */\n projectId: z.string().min(1).optional(),\n command: z.string().min(1),\n args: z.array(z.string()).optional(),\n /**\n * Run `command` through the COMPUTER's own login shell (its `$SHELL`) instead of\n * spawning it as a literal file+argv. Set by the process domain, whose\n * `command` is a shell string (`pnpm dev`); NOT set for an agent spawn, which\n * passes a resolved binary + argv that a shell would re-parse (splitting any\n * arg containing spaces).\n *\n * The shell is resolved computer-side deliberately: the hub's `$SHELL` is a path\n * that need not exist on the computer's machine.\n */\n shell: z.boolean().optional(),\n cwd: z.string().min(1).optional(),\n env: z.record(z.string(), z.string()).optional()\n})\nexport type ProcSpawnParams = z.infer<typeof procSpawnParamsSchema>\n\nexport const procSpawnResultSchema = z.object({\n /** `null` when the OS never assigned one (immediate spawn failure). The computer\n * reports `child.pid ?? null`, so a non-nullable int here rejected that reply \u2014\n * the hub then treated a legitimately-failed spawn as a protocol error. */\n pid: z.number().int().nullable()\n})\nexport type ProcSpawnResult = z.infer<typeof procSpawnResultSchema>\n\nexport const procKillParamsSchema = z.object({\n sessionId: z.string().min(1),\n signal: z.string().optional()\n})\nexport type ProcKillParams = z.infer<typeof procKillParamsSchema>\n\n/** Write to a routed child's stdin. Mirrors `pty.write`; this is what makes the\n * channel duplex, and it is what a JSON-RPC/NDJSON chat agent requires. */\nexport const procWriteParamsSchema = z.object({\n sessionId: z.string().min(1),\n data: z.string()\n})\nexport type ProcWriteParams = z.infer<typeof procWriteParamsSchema>\n\n/** Replay buffered stdout with `seq > since.seq` (gap recovery). Mirrors\n * `pty.getBufferSince`. */\nexport const procGetBufferSinceParamsSchema = z.object({\n sessionId: z.string().min(1),\n seq: z.number().int()\n})\nexport type ProcGetBufferSinceParams = z.infer<typeof procGetBufferSinceParamsSchema>\n\nexport const procGetBufferSinceResultSchema = z.object({\n frames: z.array(\n z.object({\n seq: z.number().int().nonnegative(),\n data: z.string()\n })\n )\n})\nexport type ProcGetBufferSinceResult = z.infer<typeof procGetBufferSinceResultSchema>\n\n/**\n * Live child processes the computer still holds. The `proc.list` twin of\n * {@link ptyListResultSchema} \u2014 same role in reattach, and the two must not\n * drift.\n */\nexport const procListResultSchema = z.object({\n sessions: z.array(\n z.object({\n sessionId: z.string().min(1),\n pid: z.number().int().optional(),\n /** Highest assigned seq; -1 when nothing has been emitted yet. */\n seq: z.number().int()\n })\n )\n})\nexport type ProcListResult = z.infer<typeof procListResultSchema>\n", "/**\n * Certificate pinning spec for the computer transport.\n *\n * A computer that dials a hub over wss may pin the hub's TLS identity instead\n * of relying on a CA chain (hubs typically present self-signed certs). The\n * pin is the **lowercase hex SHA-256 digest of the server leaf certificate in\n * DER encoding** \u2014 the same value OpenSSL prints via\n * `openssl x509 -fingerprint -sha256` (minus colons, lowercased).\n *\n * @module computer/shared/pinning\n */\n\nimport { createHash, X509Certificate } from 'node:crypto'\n\n/** 64 lowercase hex chars \u2014 sha256 of the leaf cert DER. */\nexport type CertSha256Fingerprint = string\n\nconst FINGERPRINT_RE = /^[0-9a-f]{64}$/\n\n/**\n * Normalize a user-supplied fingerprint: strips colons/whitespace, lowercases.\n * Throws if the result is not a 64-char hex string.\n */\nexport function normalizeCertSha256Fingerprint(input: string): CertSha256Fingerprint {\n const normalized = input.replace(/[:\\s]/g, '').toLowerCase()\n if (!FINGERPRINT_RE.test(normalized)) {\n throw new Error(`invalid sha256 certificate fingerprint: '${input}'`)\n }\n return normalized\n}\n\n/** Compute the pin from raw DER bytes of a certificate. */\nexport function certSha256FingerprintFromDer(der: Uint8Array): CertSha256Fingerprint {\n return createHash('sha256').update(der).digest('hex')\n}\n\n/**\n * Compute the pin from a PEM string, DER bytes, or an `X509Certificate`.\n * PEM input may contain a full chain; the first (leaf) certificate is used.\n */\nexport function certSha256Fingerprint(\n cert: string | Uint8Array | X509Certificate\n): CertSha256Fingerprint {\n if (cert instanceof X509Certificate) return certSha256FingerprintFromDer(cert.raw)\n if (typeof cert === 'string') return certSha256FingerprintFromDer(new X509Certificate(cert).raw)\n return certSha256FingerprintFromDer(cert)\n}\n\n/** Constant-shape comparison of an expected pin against a presented cert DER. */\nexport function certMatchesFingerprint(expected: string, presentedDer: Uint8Array): boolean {\n return normalizeCertSha256Fingerprint(expected) === certSha256FingerprintFromDer(presentedDer)\n}\n", "/**\n * Minimal typed event emitter used by the computer gateway and dialer. Kept\n * dependency-free on purpose \u2014 @slayzone/computer-transport only depends on ws + zod.\n *\n * @module computer/shared/events\n */\n\nexport type EventMap = Record<string, unknown>\n\nexport type Listener<T> = (payload: T) => void\n\nexport class TypedEventEmitter<E extends EventMap> {\n private readonly listeners = new Map<keyof E, Set<Listener<never>>>()\n private readonly onListenerError?: (event: keyof E, err: unknown) => void\n\n constructor(onListenerError?: (event: keyof E, err: unknown) => void) {\n this.onListenerError = onListenerError\n }\n\n /** Subscribe; returns an unsubscribe function. */\n on<K extends keyof E>(event: K, listener: Listener<E[K]>): () => void {\n let set = this.listeners.get(event)\n if (!set) {\n set = new Set()\n this.listeners.set(event, set)\n }\n set.add(listener as Listener<never>)\n return () => this.off(event, listener)\n }\n\n off<K extends keyof E>(event: K, listener: Listener<E[K]>): void {\n this.listeners.get(event)?.delete(listener as Listener<never>)\n }\n\n /** Promise for the next occurrence of `event`. */\n once<K extends keyof E>(event: K): Promise<E[K]> {\n return new Promise((resolve) => {\n const unsubscribe = this.on(event, (payload) => {\n unsubscribe()\n resolve(payload)\n })\n })\n }\n\n /** A throwing listener never breaks the emitter or its siblings. */\n emit<K extends keyof E>(event: K, payload: E[K]): void {\n const set = this.listeners.get(event)\n if (!set) return\n for (const listener of [...set]) {\n try {\n ;(listener as Listener<E[K]>)(payload)\n } catch (err) {\n this.onListenerError?.(event, err)\n }\n }\n }\n\n removeAllListeners(): void {\n this.listeners.clear()\n }\n}\n", "/**\n * Normalize a `ws` message payload (`Buffer | ArrayBuffer | Buffer[] | string`)\n * to a UTF-8 string. Typed as `unknown` so shared code carries no ws types.\n *\n * @module computer/shared/ws-data\n */\n\nexport function wsDataToText(data: unknown): string {\n if (typeof data === 'string') return data\n if (Array.isArray(data)) return Buffer.concat(data as readonly Uint8Array[]).toString('utf8')\n if (data instanceof ArrayBuffer) return Buffer.from(data).toString('utf8')\n return (data as Buffer).toString('utf8')\n}\n", "/**\n * Reconnect backoff policy for the hub dialer. Pure and injectable so the\n * schedule is unit-testable without timers.\n *\n * @module computer/client/backoff\n */\n\nexport interface BackoffOptions {\n /**\n * Delay before the first retry. Default 100ms.\n *\n * Deliberately small: the overwhelmingly common disconnect is the HUB\n * restarting, where the computer's socket closes and the hub is listening again\n * within a few hundred ms. A full second of dead time there is user-visible \u2014\n * and since computers are now the only execution path, work attempted inside that\n * window fails rather than quietly running on the hub.\n *\n * The exponential growth below still protects a hub that is genuinely down: 100ms\n * \u2192 200 \u2192 400 \u2026 so a persistent outage backs off just as before, only starting\n * from a value tuned for the common case instead of the rare one.\n */\n initialDelayMs: number\n /** Upper bound for any retry delay. Default 30s. */\n maxDelayMs: number\n /** Exponential growth factor. Default 2. */\n multiplier: number\n /** 0..1 \u2014 each delay is jittered by up to \u00B1(ratio \u00D7 delay). Default 0. */\n jitterRatio: number\n}\n\nexport const DEFAULT_BACKOFF: BackoffOptions = {\n initialDelayMs: 100,\n maxDelayMs: 30_000,\n multiplier: 2,\n jitterRatio: 0\n}\n\n/**\n * Delay before retry `attempt` (1-based: attempt 1 \u2192 initialDelayMs).\n * `random` is injectable for deterministic tests.\n */\nexport function computeBackoffDelayMs(\n attempt: number,\n options: Partial<BackoffOptions> = {},\n random: () => number = Math.random\n): number {\n const { initialDelayMs, maxDelayMs, multiplier, jitterRatio } = { ...DEFAULT_BACKOFF, ...options }\n const exponent = Math.max(0, attempt - 1)\n const base = Math.min(maxDelayMs, initialDelayMs * multiplier ** exponent)\n if (jitterRatio <= 0) return Math.round(base)\n const jitter = base * jitterRatio * (random() * 2 - 1)\n return Math.round(Math.min(maxDelayMs, Math.max(0, base + jitter)))\n}\n", "/**\n * Computer credential persistence. After enrollment the computer holds a\n * hub-scoped {computerId, apiKey} pair; every hub a computer has joined is kept\n * as one entry in a single 0600 map file at `<ROOT>/computer.state.json`\n * (`{ [hubHost]: StoredComputerCredentials }`), so reconnects (`hello`) survive\n * restarts without re-consuming a join token, and enrolling with a second hub\n * never touches the first hub's entry.\n *\n * @module computer/client/credential-store\n */\n\nimport { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises'\nimport { homedir } from 'node:os'\nimport { dirname, join } from 'node:path'\nimport { z } from 'zod'\n\n/**\n * The SlayZone root dir for the default credential store. Mirrors platform's\n * getSlayzoneHomeDir precedence (`SLAYZONE_ROOT` > `$HOME/.slayzone`) \u2014 inlined\n * here so computer-transport stays free of the @slayzone/platform dep (keeps the\n * computer bundle lean). The standalone computer entrypoint seeds `SLAYZONE_ROOT=cwd`,\n * so this honors the ROOT anchor; without it, the raw home fallback applied and\n * creds landed at `~/.slayzone/computer.state.json`.\n */\nfunction slayzoneRootDir(): string {\n if (process.env.SLAYZONE_ROOT) return process.env.SLAYZONE_ROOT\n const home = process.env.HOME ?? process.env.USERPROFILE ?? homedir()\n return join(home, '.slayzone')\n}\n\nexport const storedComputerCredentialsSchema = z.object({\n computerId: z.string().min(1),\n apiKey: z.string().min(1),\n /** Pin recorded at enroll time (lowercase hex sha256 of the hub leaf DER). */\n pinnedFingerprint: z.string().optional()\n})\nexport type StoredComputerCredentials = z.infer<typeof storedComputerCredentialsSchema>\n\nconst credentialsMapSchema = z.record(z.string(), storedComputerCredentialsSchema)\ntype CredentialsMap = z.infer<typeof credentialsMapSchema>\n\nexport interface ComputerCredentialStore {\n /** Null when absent or unreadable/corrupt (treated as not-yet-enrolled). */\n load(): Promise<StoredComputerCredentials | null>\n save(credentials: StoredComputerCredentials): Promise<void>\n clear(): Promise<void>\n /** Absolute path of the backing file (diagnostics). */\n readonly filePath: string\n}\n\n/** `wss://hub.example:8443/computers` \u2192 `hub.example_8443` (map key). */\nexport function hubHostFromUrl(url: string): string {\n const parsed = new URL(url)\n return parsed.port ? `${parsed.hostname}_${parsed.port}` : parsed.hostname\n}\n\n/**\n * Guards against a clearly-wrong key landing in the map. No longer sanitizes\n * for filesystem safety (a JSON object key isn't a path component and can't\n * traverse anything) \u2014 only rejects empty/whitespace-only values.\n */\nfunction assertValidHubHost(hubHost: string): void {\n if (!hubHost.trim()) {\n throw new Error(`invalid hub host for credential entry: '${hubHost}'`)\n }\n}\n\nexport function credentialsFilePath(baseDir?: string): string {\n return join(baseDir ?? slayzoneRootDir(), 'computer.state.json')\n}\n\n/** Reads the whole map, tolerating a missing/corrupt file (\u2192 `{}`) and dropping any single entry that fails schema validation rather than discarding every other hub's credentials. */\nasync function readCredentialsMap(filePath: string): Promise<CredentialsMap> {\n let raw: string\n try {\n raw = await readFile(filePath, 'utf8')\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return {}\n throw err\n }\n let parsedJson: unknown\n try {\n parsedJson = JSON.parse(raw)\n } catch {\n return {}\n }\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) return {}\n const map: CredentialsMap = {}\n for (const [key, value] of Object.entries(parsedJson as Record<string, unknown>)) {\n const entry = storedComputerCredentialsSchema.safeParse(value)\n if (entry.success) map[key] = entry.data\n }\n return map\n}\n\n/** Atomic replace of the whole map: write a 0600 sibling, then rename over the target so a crash never leaves a partially written file. */\nasync function writeCredentialsMap(filePath: string, map: CredentialsMap): Promise<void> {\n const dir = dirname(filePath)\n await mkdir(dir, { recursive: true, mode: 0o700 })\n const tmpPath = `${filePath}.tmp-${process.pid}-${Date.now()}`\n await writeFile(tmpPath, `${JSON.stringify(map, null, 2)}\\n`, { mode: 0o600 })\n try {\n await rename(tmpPath, filePath)\n } catch (err) {\n await rm(tmpPath, { force: true })\n throw err\n }\n}\n\nexport function createFileCredentialStore(\n hubHost: string,\n options: { baseDir?: string } = {}\n): ComputerCredentialStore {\n assertValidHubHost(hubHost)\n const filePath = credentialsFilePath(options.baseDir)\n\n return {\n filePath,\n async load() {\n const map = await readCredentialsMap(filePath)\n return map[hubHost] ?? null\n },\n async save(credentials) {\n const map = await readCredentialsMap(filePath)\n map[hubHost] = credentials\n await writeCredentialsMap(filePath, map)\n },\n async clear() {\n const map = await readCredentialsMap(filePath)\n if (!(hubHost in map)) return\n delete map[hubHost]\n if (Object.keys(map).length === 0) {\n await rm(filePath, { force: true })\n } else {\n await writeCredentialsMap(filePath, map)\n }\n }\n }\n}\n\n/** In-memory store for tests and embedded use. */\nexport function createMemoryCredentialStore(\n initial: StoredComputerCredentials | null = null\n): ComputerCredentialStore {\n let credentials = initial\n return {\n filePath: '<memory>',\n load: async () => credentials,\n save: async (next) => {\n credentials = next\n },\n clear: async () => {\n credentials = null\n }\n }\n}\n", "/**\n * Computer-side hub dialer. Owns the single outbound WebSocket to the hub and\n * the full session lifecycle:\n *\n * - dial `wss://hub/...` (optionally pinning the hub's TLS cert by sha256)\n * - authenticate: `hello` with stored credentials, falling back to `enroll`\n * with the join token (credentials are persisted via the injected store)\n * - heartbeat loop \u2014 an unanswered heartbeat tears the socket down\n * - reconnect with exponential backoff; a rejected join token is fatal\n *\n * Hub\u2192computer requests are dispatched to `onHubRequest`; `ping` is answered\n * internally. The dialer knows nothing about pty/fs/git semantics.\n *\n * @module computer/client/hub-dialer\n */\n\nimport { randomUUID } from 'node:crypto'\nimport type { PeerCertificate, TLSSocket } from 'node:tls'\nimport WebSocket from 'ws'\nimport type { ClientOptions } from 'ws'\nimport { TypedEventEmitter } from '../shared/events'\nimport {\n enrollResultSchema,\n COMPUTER_PROTOCOL_VERSION,\n ComputerTransportErrorCodes,\n helloResultSchema,\n HubToComputerMethods,\n ComputerToHubMethods\n} from '../shared/frames'\nimport {\n certMatchesFingerprint,\n certSha256FingerprintFromDer,\n normalizeCertSha256Fingerprint\n} from '../shared/pinning'\nimport { DuplexRpc, JSON_RPC_INTERNAL_ERROR, RpcError } from '../shared/rpc'\nimport { wsDataToText } from '../shared/ws-data'\nimport { computeBackoffDelayMs, type BackoffOptions } from './backoff'\nimport type { ComputerCredentialStore } from './credential-store'\n\nexport type HubDialerState =\n | 'stopped'\n | 'connecting'\n | 'authenticating'\n | 'connected'\n | 'waiting-retry'\n\nexport interface ComputerIdentity {\n name: string\n /** `${process.platform}-${process.arch}`. */\n platform: string\n version: string\n capabilities: string[]\n /** Which physical box this computer is on \u2014 groups it with its siblings.\n * Optional: absent means ungrouped, never \"same box as someone else\". */\n hostId?: string\n}\n\nexport type HubDialerEvents = {\n 'state-change': { state: HubDialerState }\n connected: { computerId: string; mode: 'enroll' | 'hello' }\n disconnected: { reason: string }\n 'reconnect-scheduled': { attempt: number; delayMs: number }\n /**\n * `fatal: true` means the dialer gave up (bad join token, missing creds\u2026).\n *\n * `reason: 'needs-re-enrollment'` is the one an operator can act on: the hub\n * refused this computer's stored api key, so the computer's identity no longer\n * exists as far as the hub is concerned. That is always the result of a human\n * action \u2014 storage deleted, one of the two DBs restored without the other, or\n * the computer revoked \u2014 so the fix is to enroll it again, not to retry. Callers\n * should surface it rather than string-matching the message.\n */\n error: { error: Error; fatal: boolean; reason?: 'needs-re-enrollment' }\n /** Hub\u2192computer notification (none defined in protocol v1; future-proofing). */\n notification: { method: string; params: unknown }\n}\n\nexport interface HubDialerOptions {\n /** `ws://` or `wss://` hub computer endpoint. */\n url: string\n identity: ComputerIdentity\n credentialStore: ComputerCredentialStore\n /** Required for first contact; reconnects use stored credentials. */\n joinToken?: string\n /**\n * Obtain a FRESH join token. Called only when enrollment is needed and the\n * configured `joinToken` has already been refused \u2014 i.e. the one-shot recovery\n * path below.\n *\n * Why this exists: join tokens are SINGLE-USE. If a stored api key ever fails\n * verification (a rebuilt hub-auth DB, a wiped `computers` row, a restored\n * backup), the dialer falls back to enrolling \u2014 with a token it already spent.\n * The hub answers \"join token rejected: unknown\", which is an explicit refusal,\n * so it was treated as fatal and the computer never came back until its process\n * was restarted. With computers as the only execution path, that means nothing\n * can run at all.\n *\n * Return `null` when a token cannot be minted; enrollment then fails as before.\n * Absent \u2192 today's behavior exactly (no re-mint, refusal is fatal).\n */\n refreshJoinToken?: () => Promise<string | null>\n /** Lowercase-hex sha256 of the hub leaf cert DER (colons tolerated). wss only. */\n pinnedCertSha256?: string\n /**\n * Handle a hub\u2192computer request; resolve with the result or throw an\n * `RpcError` to control the error code. When omitted, every request is\n * answered with `-32001 unimplemented`.\n */\n onHubRequest?: (method: string, params: unknown) => Promise<unknown> | unknown\n /** Default 15s; `0` disables the loop. */\n heartbeatIntervalMs?: number\n /** Reply window for one heartbeat before the socket is torn down. Default 10s. */\n heartbeatTimeoutMs?: number\n /** Default timeout for computer\u2192hub requests. Default 30s. */\n requestTimeoutMs?: number\n backoff?: Partial<BackoffOptions>\n /**\n * Override this process's epoch (see {@link PROCESS_EPOCH}). Only tests should\n * set it \u2014 two dialers in ONE process share the module-level epoch, so\n * simulating a computer RESTART (rather than a reconnect) requires saying so.\n */\n epoch?: string\n /** Injectable randomness for backoff jitter (tests). */\n random?: () => number\n log?: (message: string, meta?: Record<string, unknown>) => void\n}\n\n/**\n * This computer PROCESS's epoch \u2014 minted once at module load, sent on every\n * enroll/hello. Constant across all of this process's reconnects, different in\n * any restarted process, which is exactly what lets the hub tell \"my socket\n * dropped\" from \"the computer died\" and reattach to still-live pty sessions\n * instead of declaring them dead. See `epochField` in shared/frames.\n */\nconst PROCESS_EPOCH = randomUUID()\n\nconst DEFAULT_HEARTBEAT_INTERVAL_MS = 15_000\nconst DEFAULT_HEARTBEAT_TIMEOUT_MS = 10_000\n\ninterface Connection {\n ws: WebSocket\n rpc: DuplexRpc\n heartbeatTimer: ReturnType<typeof setInterval> | null\n heartbeatInFlight: boolean\n authenticated: boolean\n}\n\nexport class HubDialer {\n readonly events: TypedEventEmitter<HubDialerEvents>\n\n private readonly opts: HubDialerOptions\n private readonly log: (message: string, meta?: Record<string, unknown>) => void\n private readonly pinnedFingerprint: string | null\n\n private stateValue: HubDialerState = 'stopped'\n private current: Connection | null = null\n private retryTimer: ReturnType<typeof setTimeout> | null = null\n private retryAttempt = 0\n private computerIdValue: string | null = null\n private stopping = false\n private fatalStop = false\n /** Fresh token from `refreshJoinToken`, preferred over `opts.joinToken` once set. */\n private currentJoinToken: string | null = null\n /** One re-mint per connection attempt, so a hub that refuses every token cannot\n * become a mint loop. Reset on each new connection. */\n private triedTokenRefresh = false\n\n constructor(opts: HubDialerOptions) {\n this.opts = opts\n this.log =\n opts.log ??\n (() => {\n // No logger supplied: the dialer's diagnostics are the embedder's to\n // route, and it must stay usable (tests, the CLI) without one.\n })\n this.events = new TypedEventEmitter<HubDialerEvents>((event, err) => {\n this.log('computer dialer listener threw', { event: String(event), error: String(err) })\n })\n const protocol = new URL(opts.url).protocol\n if (protocol !== 'ws:' && protocol !== 'wss:') {\n throw new Error(`hub url must be ws:// or wss://, got '${opts.url}'`)\n }\n if (opts.pinnedCertSha256 !== undefined) {\n if (protocol !== 'wss:') {\n throw new Error('pinnedCertSha256 requires a wss:// hub url')\n }\n this.pinnedFingerprint = normalizeCertSha256Fingerprint(opts.pinnedCertSha256)\n } else {\n this.pinnedFingerprint = null\n }\n }\n\n get state(): HubDialerState {\n return this.stateValue\n }\n\n /** Set once authenticated; survives reconnects. */\n get computerId(): string | null {\n return this.computerIdValue\n }\n\n /** This process's incarnation id, sent on every enroll/hello. */\n private get epoch(): string {\n return this.opts.epoch ?? PROCESS_EPOCH\n }\n\n start(): void {\n if (this.stateValue !== 'stopped') return\n this.stopping = false\n this.fatalStop = false\n this.retryAttempt = 0\n this.connect()\n }\n\n async stop(): Promise<void> {\n this.stopping = true\n if (this.retryTimer) {\n clearTimeout(this.retryTimer)\n this.retryTimer = null\n }\n const conn = this.current\n if (conn) {\n const closed = new Promise<void>((resolve) => conn.ws.once('close', () => resolve()))\n if (conn.ws.readyState === WebSocket.OPEN) {\n conn.ws.close(1000, 'computer-stop')\n } else {\n conn.ws.terminate()\n }\n await closed\n }\n this.setState('stopped')\n }\n\n /**\n * Fire-and-forget notification to the hub (e.g. `pty.data`). Returns false\n * when not connected \u2014 callers relying on delivery must buffer and replay\n * via the seq protocol.\n */\n notify(method: string, params?: unknown): boolean {\n const conn = this.current\n if (!conn?.authenticated || conn.rpc.isDisposed) return false\n conn.rpc.notify(method, params)\n return true\n }\n\n /** Computer\u2192hub request. Rejects when not connected. */\n request<T = unknown>(method: string, params?: unknown, timeoutMs?: number): Promise<T> {\n const conn = this.current\n if (!conn?.authenticated || conn.rpc.isDisposed) {\n return Promise.reject(new Error('computer dialer is not connected to the hub'))\n }\n return conn.rpc.request<T>(method, params, timeoutMs)\n }\n\n // -------------------------------------------------------------------------\n\n private setState(state: HubDialerState): void {\n if (this.stateValue === state) return\n this.stateValue = state\n this.events.emit('state-change', { state })\n }\n\n private buildWsOptions(): ClientOptions {\n if (!this.pinnedFingerprint) return {}\n const expected = this.pinnedFingerprint\n const tlsOptions = {\n // The pin *replaces* CA-chain trust \u2014 hubs present self-signed certs.\n // NOTE: with rejectUnauthorized:false node records a checkServerIdentity\n // failure in socket.authorizationError but does NOT abort the handshake,\n // so the pin is ENFORCED in verifyPinnedCert() (ws 'upgrade' event) \u2014\n // this override only makes the failure observable early.\n rejectUnauthorized: false,\n checkServerIdentity: (_host: string, cert: PeerCertificate): Error | undefined => {\n if (!cert?.raw) return new Error('hub presented no certificate')\n if (!certMatchesFingerprint(expected, cert.raw)) {\n const actual = certSha256FingerprintFromDer(cert.raw)\n return new Error(\n `hub certificate fingerprint mismatch: expected ${expected}, got ${actual}`\n )\n }\n return undefined\n }\n }\n // @types/ws mistypes checkServerIdentity as `(\u2026) => boolean` over CertMeta;\n // ws forwards these straight to tls.connect, which expects the node:tls\n // signature used above.\n return tlsOptions as unknown as ClientOptions\n }\n\n /**\n * Hard pin enforcement. Runs on the ws 'upgrade' event \u2014 after the TLS\n * handshake and the (secret-free) HTTP upgrade request, but before 'open',\n * so no computer frame (hello/enroll credentials) is ever sent to an unpinned\n * peer. Returns false and tears the socket down on mismatch.\n */\n private verifyPinnedCert(ws: WebSocket, tlsSocket: TLSSocket): boolean {\n const expected = this.pinnedFingerprint\n if (!expected) return true\n const cert =\n typeof tlsSocket.getPeerCertificate === 'function' ? tlsSocket.getPeerCertificate() : null\n const raw = cert && cert.raw ? cert.raw : null\n if (raw && certMatchesFingerprint(expected, raw)) return true\n const actual = raw ? certSha256FingerprintFromDer(raw) : 'no certificate'\n const error = new Error(\n `hub certificate fingerprint mismatch: expected ${expected}, got ${actual}`\n )\n this.log('computer dialer rejected hub certificate', { error: error.message })\n this.events.emit('error', { error, fatal: false })\n ws.terminate()\n return false\n }\n\n private connect(): void {\n this.retryTimer = null\n // Per-connection guard: a fresh attempt may legitimately need to re-mint again\n // (e.g. the hub was rebuilt between attempts), but within ONE attempt only once.\n this.triedTokenRefresh = false\n this.setState('connecting')\n const ws = new WebSocket(this.opts.url, this.buildWsOptions())\n const conn: Connection = {\n ws,\n rpc: null as unknown as DuplexRpc,\n heartbeatTimer: null,\n heartbeatInFlight: false,\n authenticated: false\n }\n conn.rpc = new DuplexRpc({\n label: 'computer-computer',\n defaultRequestTimeoutMs: this.opts.requestTimeoutMs,\n write: (line) => {\n ws.send(line)\n },\n onPeerRequest: (method, params, id) => this.handleHubRequest(conn, method, params, id),\n onNotification: (method, params) => this.events.emit('notification', { method, params }),\n onParseError: (line, err) => {\n this.log('computer dialer received malformed frame', { error: String(err), line })\n }\n })\n this.current = conn\n\n if (this.pinnedFingerprint) {\n ws.on('upgrade', (response) => {\n this.verifyPinnedCert(ws, response.socket as TLSSocket)\n })\n }\n ws.on('open', () => {\n if (this.current === conn && !this.stopping) void this.authenticate(conn)\n })\n ws.on('message', (data) => {\n for (const line of wsDataToText(data).split('\\n')) {\n if (line.trim().length > 0) conn.rpc.handleLine(line)\n }\n })\n ws.on('error', (err) => {\n if (this.current !== conn) return\n this.log('computer dialer socket error', { error: String(err) })\n this.events.emit('error', {\n error: err instanceof Error ? err : new Error(String(err)),\n fatal: false\n })\n })\n ws.on('close', (code, reasonBuf) => {\n this.handleClose(conn, code, reasonBuf.toString())\n })\n }\n\n /** One `enroll` round-trip with the given token. Throws on any failure. */\n private async enroll(\n conn: Connection,\n joinToken: string\n ): Promise<{ computerId: string; apiKey: string }> {\n const raw = await conn.rpc.request(ComputerToHubMethods.enroll, {\n joinToken,\n name: this.opts.identity.name,\n platform: this.opts.identity.platform,\n version: this.opts.identity.version,\n capabilities: this.opts.identity.capabilities,\n protocolVersion: COMPUTER_PROTOCOL_VERSION,\n epoch: this.epoch,\n ...(this.opts.identity.hostId ? { hostId: this.opts.identity.hostId } : {})\n })\n return enrollResultSchema.parse(raw)\n }\n\n private async authenticate(conn: Connection): Promise<void> {\n this.setState('authenticating')\n try {\n const stored = await this.opts.credentialStore.load()\n if (stored) {\n try {\n const raw = await conn.rpc.request(ComputerToHubMethods.hello, {\n apiKey: stored.apiKey,\n epoch: this.epoch,\n // Reconnect is the ONLY moment the hub can learn that this computer\n // adopted a peer's host id while it was offline.\n ...(this.opts.identity.hostId ? { hostId: this.opts.identity.hostId } : {})\n })\n const result = helloResultSchema.parse(raw)\n this.onAuthenticated(conn, result.computerId, 'hello')\n return\n } catch (err) {\n // Only an explicit credential rejection means the stored key is\n // dead. Transient hub-side RpcErrors and socket failures both go to\n // the reconnect path (rethrow \u2192 outer catch \u2192 backoff).\n if (!(err instanceof RpcError) || err.code !== ComputerTransportErrorCodes.unauthorized)\n throw err\n if (!this.opts.joinToken) {\n this.fatal(\n new Error(\n `This computer needs to be enrolled again: the hub rejected its stored ` +\n `credentials, so the hub no longer recognizes this computer. ` +\n `Enroll it from Settings \u2192 Computers (or \\`slay computer enroll\\`). (${err.message})`\n ),\n conn,\n 'needs-re-enrollment'\n )\n return\n }\n this.log('computer dialer hello rejected \u2014 hub does not recognize this computer', {\n code: err.code\n })\n }\n }\n if (!this.opts.joinToken) {\n this.fatal(new Error('no stored credentials and no join token configured'), conn)\n return\n }\n let result\n try {\n result = await this.enroll(conn, this.currentJoinToken ?? this.opts.joinToken)\n } catch (err) {\n // An explicit refusal cannot succeed on retry with the SAME inputs. A\n // protocol mismatch is unfixable, so it stays fatal. An `unauthorized`\n // refusal usually means the token was already spent \u2014 which a FRESH token\n // does fix, so try to mint one and enroll once more before giving up.\n // Without this, one bad api-key verification retired the computer for the\n // lifetime of its process.\n const explicitlyRefused =\n err instanceof RpcError &&\n (err.code === ComputerTransportErrorCodes.unauthorized ||\n err.code === ComputerTransportErrorCodes.protocolMismatch)\n if (!explicitlyRefused) throw err\n\n const retriable =\n err instanceof RpcError &&\n err.code === ComputerTransportErrorCodes.unauthorized &&\n this.opts.refreshJoinToken !== undefined &&\n !this.triedTokenRefresh\n if (!retriable) {\n const isAuth =\n err instanceof RpcError && err.code === ComputerTransportErrorCodes.unauthorized\n this.fatal(\n new Error(\n isAuth\n ? `This computer needs to be enrolled again: the hub refused its join token ` +\n `(a join token is single-use). Enroll it from Settings \u2192 Computers ` +\n `(or \\`slay computer enroll\\`). (${err instanceof Error ? err.message : String(err)})`\n : `hub rejected enrollment (${(err as RpcError).code}): ${err instanceof Error ? err.message : String(err)}`\n ),\n conn,\n isAuth ? 'needs-re-enrollment' : undefined\n )\n return\n }\n\n // One attempt only, per connection, so a hub that refuses every token\n // cannot become a mint loop.\n this.triedTokenRefresh = true\n this.log('computer dialer enrollment refused \u2014 minting a fresh join token')\n let fresh: string | null = null\n try {\n fresh = await this.opts.refreshJoinToken!()\n } catch (mintErr) {\n this.log('computer dialer join-token mint failed', { error: String(mintErr) })\n }\n if (!fresh) {\n this.fatal(\n new Error(\n `hub rejected enrollment and no fresh join token could be minted: ${err instanceof Error ? err.message : String(err)}`\n ),\n conn\n )\n return\n }\n this.currentJoinToken = fresh\n try {\n result = await this.enroll(conn, fresh)\n } catch (retryErr) {\n if (\n retryErr instanceof RpcError &&\n (retryErr.code === ComputerTransportErrorCodes.unauthorized ||\n retryErr.code === ComputerTransportErrorCodes.protocolMismatch)\n ) {\n this.fatal(\n new Error(\n `hub rejected enrollment with a fresh token (${retryErr.code}): ${retryErr.message}`\n ),\n conn\n )\n return\n }\n throw retryErr\n }\n }\n try {\n await this.opts.credentialStore.save({\n computerId: result.computerId,\n apiKey: result.apiKey,\n ...(this.pinnedFingerprint ? { pinnedFingerprint: this.pinnedFingerprint } : {})\n })\n } catch (err) {\n // Persistence failure must not burn the freshly minted credentials\n // (join tokens may be single-use): keep the session, surface the\n // problem, and rely on re-enroll only if the process restarts.\n const error = new Error(\n `failed to persist computer credentials: ${err instanceof Error ? err.message : String(err)}`\n )\n this.log('computer dialer credential save failed', { error: error.message })\n this.events.emit('error', { error, fatal: false })\n }\n this.onAuthenticated(conn, result.computerId, 'enroll')\n } catch (err) {\n if (this.current !== conn || this.stopping) return\n // Socket-level failure mid-auth \u2014 let the close handler drive the retry.\n this.log('computer dialer authentication interrupted', { error: String(err) })\n conn.ws.terminate()\n }\n }\n\n private onAuthenticated(conn: Connection, computerId: string, mode: 'enroll' | 'hello'): void {\n if (this.current !== conn || this.stopping) return\n conn.authenticated = true\n this.computerIdValue = computerId\n this.retryAttempt = 0\n this.setState('connected')\n this.startHeartbeat(conn)\n this.events.emit('connected', { computerId, mode })\n this.log('computer dialer connected', { computerId, mode })\n }\n\n private startHeartbeat(conn: Connection): void {\n const intervalMs = this.opts.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS\n if (intervalMs <= 0) return\n const timeoutMs = this.opts.heartbeatTimeoutMs ?? DEFAULT_HEARTBEAT_TIMEOUT_MS\n // `useVisibleInterval` is a React hook and this is a plain transport class,\n // so it is not callable here. The intent is also inverted: a heartbeat that\n // paused while the window is hidden would let the hub time the connection\n // out precisely when nobody is watching. This must run regardless.\n // eslint-disable-next-line no-restricted-syntax\n conn.heartbeatTimer = setInterval(() => {\n if (conn.heartbeatInFlight || conn.rpc.isDisposed) return\n conn.heartbeatInFlight = true\n conn.rpc\n .request(ComputerToHubMethods.heartbeat, { ts: Date.now() }, timeoutMs)\n .then(() => {\n conn.heartbeatInFlight = false\n })\n .catch((err: unknown) => {\n conn.heartbeatInFlight = false\n if (this.current !== conn || conn.rpc.isDisposed) return\n this.log('computer dialer heartbeat failed, dropping connection', { error: String(err) })\n conn.ws.terminate()\n })\n }, intervalMs)\n conn.heartbeatTimer.unref?.()\n }\n\n private handleHubRequest(\n conn: Connection,\n method: string,\n params: unknown,\n id: string | number\n ): void {\n if (method === HubToComputerMethods.ping) {\n conn.rpc.respond(id, { ts: Date.now() })\n return\n }\n const handler = this.opts.onHubRequest\n if (!handler) {\n conn.rpc.respondError(\n id,\n ComputerTransportErrorCodes.unimplemented,\n `unimplemented: ${method}`\n )\n return\n }\n void (async () => {\n try {\n const result = await handler(method, params)\n conn.rpc.respond(id, result ?? null)\n } catch (err) {\n if (err instanceof RpcError) {\n conn.rpc.respondError(id, err.code, err.message, err.data)\n } else {\n conn.rpc.respondError(\n id,\n JSON_RPC_INTERNAL_ERROR,\n err instanceof Error ? err.message : String(err)\n )\n }\n }\n })()\n }\n\n private handleClose(conn: Connection, code: number, reason: string): void {\n if (this.current !== conn) return\n this.current = null\n if (conn.heartbeatTimer) clearInterval(conn.heartbeatTimer)\n conn.rpc.dispose('socket closed')\n const detail = reason.trim().length > 0 ? reason : `socket closed (${code})`\n this.events.emit('disconnected', { reason: detail })\n if (this.stopping || this.fatalStop) {\n this.setState('stopped')\n return\n }\n this.scheduleReconnect()\n }\n\n private scheduleReconnect(): void {\n this.retryAttempt += 1\n const delayMs = computeBackoffDelayMs(this.retryAttempt, this.opts.backoff, this.opts.random)\n this.setState('waiting-retry')\n this.events.emit('reconnect-scheduled', { attempt: this.retryAttempt, delayMs })\n this.retryTimer = setTimeout(() => {\n if (!this.stopping && !this.fatalStop) this.connect()\n }, delayMs)\n this.retryTimer.unref?.()\n }\n\n private fatal(error: Error, conn: Connection, reason?: 'needs-re-enrollment'): void {\n // A stale authenticate() racing a reconnect must not kill the live\n // session that replaced it.\n if (this.current !== conn) return\n if (this.fatalStop) return\n this.fatalStop = true\n this.events.emit('error', { error, fatal: true, ...(reason ? { reason } : {}) })\n this.log('computer dialer fatal error', { error: error.message })\n conn.ws.terminate()\n }\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n", "/**\n * Computer configuration \u2014 env-first, layered over the computer's own config file\n * at `<ROOT>/computer.config.json` (see @slayzone/platform/slayzone-config). Precedence:\n *\n * env var > <ROOT>/computer.config.json > default\n *\n * (plus the join-token embedded hubUrl/cert as the lowest fallback). Env still\n * wins so operators / the supervised host can override per boot. There is no\n * separate `SLAYZONE_COMPUTER_CONFIG` path-pointing knob \u2014 one derived config file.\n *\n * @module computer/config\n */\n\nimport { realpathSync } from 'node:fs'\nimport { homedir, hostname } from 'node:os'\nimport { basename, dirname, join, resolve, sep } from 'node:path'\nimport { z } from 'zod'\nimport {\n DEFAULT_LOCAL_COMPUTER_NAME,\n loadComputerConfigFile,\n type ComputerConfig as ComputerConfigFile\n} from '@slayzone/platform/slayzone-config'\nimport { hubUrlFromAddr, isLoopbackComputerUrl } from '@slayzone/platform/hub-addr'\nimport { decodeJoinToken } from '@slayzone/platform/join-token'\n\nexport const computerConfigSchema = z.object({\n /** `ws://` or `wss://` hub computer endpoint. */\n hubUrl: z.string().min(1),\n /**\n * Additional hubs this computer serves, beyond `hubUrl`.\n *\n * OPT-IN, and absent by default. The credential store and the project-path\n * store have BOTH been keyed by hub host since they were written, so serving\n * several hubs needs no new persistence \u2014 only one dialer each.\n *\n * The cost is stated plainly because it cannot be designed away: every hub's\n * work runs as the SAME OS user, in the same `$HOME`, with the same\n * credentials. `allowedRoots` bounds the RPC surface, not the processes it\n * spawns \u2014 one shell command inside a pty leaves it. So this is a convenience,\n * not isolation: for real separation, run one computer per hub under its own\n * OS account, which is the boundary the kernel actually enforces.\n *\n * No env channel: `SLAYZONE_HUB_ADDRESS` carries a single authority\n * (`host[:port]`), and a comma-separated list would collide with that format.\n */\n hubUrls: z.array(z.string().min(1)).optional(),\n /** Required for first contact; later runs reconnect with stored credentials. */\n joinToken: z.string().min(1).optional(),\n /** Human-readable computer name shown on the hub. Defaults to the hostname. */\n name: z.string().min(1),\n /** Filesystem roots this computer may operate under (fs./git. commands). */\n allowedRoots: z.array(z.string().min(1)),\n /** Capability tags advertised at enrollment. */\n capabilities: z.array(z.string().min(1)),\n /** sha256 pin of the hub TLS leaf cert (lowercase hex; colons tolerated). */\n pinnedCertSha256: z.string().min(1).optional()\n})\nexport type ComputerConfig = z.infer<typeof computerConfigSchema>\n\nexport const ENV_VARS = {\n // Authority ONLY \u2014 `host[:port]`, no scheme, no path. The dial scheme\n // (ws/wss) is derived from the host via hubUrlFromAddr (loopback \u2192 ws, any other\n // host \u2192 wss), and `/computers` is\n // appended here, so this env channel can never carry a scheme the CLI would\n // reinterpret (the retired `SLAYZONE_HUB_URL` ws-vs-http collision). computer.config.json\n // `hubUrl` + the join token still carry a FULL url (they're not env-inherited\n // into terminals, so outside the collision).\n hubAddress: 'SLAYZONE_HUB_ADDRESS',\n // HUB_-prefixed because the token is hub-scoped BY VALUE, not by reader: the hub\n // mints it and it embeds the hub's `wss://\u2026/computers` url, the hub's TLS cert\n // fingerprint, and a secret checked against the hub's `join_tokens` row.\n // `mintJoinToken` binds it to NO computer (computer_id is NULL until redemption), so\n // any computer can redeem any unused token \u2014 the old `SLAYZONE_RUNNER_JOIN_TOKEN`\n // named its CONSUMER, which is what CLAUDE.md rule 2 forbids. `_TOKEN` suffix +\n // `HUB_` family per rule 3, matching the domain term used everywhere else\n // (`szjt1.`, the `join_tokens` table, mintJoinToken, POST /api/computers/join-token).\n joinToken: 'SLAYZONE_HUB_JOIN_TOKEN'\n // No alias for the pre-rename `SLAYZONE_RUNNER_JOIN_TOKEN`: it never shipped.\n // The published computer betas (0.36.0-beta.2/3) read `SLAYZONE_JOIN_TOKEN`, and\n // the name it was renamed FROM only ever existed on unreleased main, so there is\n // no operator env carrying it. Unmanifested \u21D2 sanitizeSpawnEnv strips it, and\n // loadComputerConfig ignores it, so setting it fails loudly with the\n // missing-SLAYZONE_HUB_JOIN_TOKEN error rather than half-working.\n // allowedRoots has NO env channel: a SUPERVISED computer self-derives its FS\n // path-jail to `[homedir()]` (below), a STANDALONE computer gets it from\n // <ROOT>/computer.config.json `allowedRoots` (+ the ROOT default in bin.ts). The\n // computer NAME likewise has no env channel \u2014 it derives from SUPERVISED (\u2192\n // DEFAULT_LOCAL_COMPUTER_NAME) or computer.config.json `computerName`, else the hostname.\n // The cert pin has NO env channel either: it arrives via the join token (auto\n // path) or <ROOT>/computer.config.json `pinnedCertSha256` (explicit standalone path).\n // Never a bare env var \u2014 a fingerprint is never fished out of ambient env.\n} as const\n\nexport const DEFAULT_CAPABILITIES = ['pty', 'git', 'fs', 'proc'] as const\n\n/**\n * Resolve `target` to an absolute canonical path, tolerating a\n * not-yet-existing tail (e.g. a worktree directory about to be created).\n *\n * Lexically normalizes `..` first, then `realpath`s the nearest EXISTING\n * ancestor to collapse symlinks (so an attacker cannot symlink out of an\n * allowed root), re-appending the non-existent remainder. This closes both the\n * lexical-`../` traversal hole and the symlinked-ancestor hole.\n */\nfunction realpathBoundary(target: string): string {\n let current = resolve(target)\n const tail: string[] = []\n // Walk up until we hit an existing directory we can canonicalize.\n for (;;) {\n try {\n const real = realpathSync.native(current)\n return tail.length > 0 ? join(real, ...tail.reverse()) : real\n } catch {\n const parent = dirname(current)\n if (parent === current) {\n // Reached the filesystem root and nothing exists \u2014 fall back to the\n // lexically-resolved path (already free of `..` segments).\n return resolve(target)\n }\n tail.push(basename(current))\n current = parent\n }\n }\n}\n\n/**\n * Assert that `candidate` is contained within one of `allowedRoots` and return\n * its canonical absolute path. Throws a clear error on traversal outside every\n * configured root (or when no roots are configured at all).\n *\n * Every fs./git./proc. path argument on the computer MUST pass through this guard\n * before touching the filesystem.\n */\nexport function assertPathAllowed(candidate: string, allowedRoots: readonly string[]): string {\n if (allowedRoots.length === 0) {\n throw new Error(\n `computer has no allowedRoots configured; refusing filesystem access to '${candidate}'`\n )\n }\n const resolved = realpathBoundary(candidate)\n for (const root of allowedRoots) {\n let realRoot: string\n try {\n realRoot = realpathSync.native(resolve(root))\n } catch {\n // A configured root that does not exist cannot contain anything \u2014 skip it.\n continue\n }\n if (resolved === realRoot || resolved.startsWith(realRoot + sep)) {\n return resolved\n }\n }\n throw new Error(\n `path '${candidate}' is outside the computer's allowedRoots [${allowedRoots.join(', ')}]`\n )\n}\n\ntype Env = Record<string, string | undefined>\n\n/**\n * Map `<ROOT>/computer.config.json` onto the computer's effective config shape.\n * This is the SINGLE config file for a standalone computer \u2014 the former\n * `SLAYZONE_COMPUTER_CONFIG` env var (a second path-pointing knob at an arbitrary\n * file) is gone; there is one derived config at `<ROOT>/computer.config.json`.\n */\nfunction fromSharedConfig(shared: ComputerConfigFile): Partial<ComputerConfig> {\n const out: Partial<ComputerConfig> = {}\n if (shared.hubUrl !== undefined) out.hubUrl = shared.hubUrl\n if (shared.hubUrls !== undefined) out.hubUrls = shared.hubUrls\n if (shared.joinToken !== undefined) out.joinToken = shared.joinToken\n if (shared.computerName !== undefined) out.name = shared.computerName\n // The FS path-jail \u2014 locally-declared only, never sourced from hub-pushed data.\n if (shared.allowedRoots !== undefined) out.allowedRoots = shared.allowedRoots\n if (shared.pinnedCertSha256 !== undefined) out.pinnedCertSha256 = shared.pinnedCertSha256\n return out\n}\n\n/**\n * Assemble the effective config. Precedence (low\u2192high):\n * defaults \u2190 <ROOT>/computer.config.json \u2190 environment\n * (with the join-token embedded hubUrl/cert as the lowest fallback). Throws with\n * a readable message when required fields are missing.\n *\n * `shared` defaults to reading `<ROOT>/computer.config.json` ONLY for a STANDALONE\n * computer using the real `process.env`. It is skipped ({}) when:\n * - a test passes its own `env` object (hermetic \u2014 never touch the dev's real\n * config file), or\n * - `SLAYZONE_SUPERVISED=1` \u2014 the app-spawned local computer\n * (startLocalComputerWithAutoEnroll passes `{...process.env}`, which carries\n * SUPERVISED=1). Mirrors the hub's supervised no-op: the Electron host\n * supplies the computer's env in full (SLAYZONE_HUB_ADDRESS / SLAYZONE_HUB_JOIN_TOKEN),\n * and the name derives from SUPERVISED (\u2192 DEFAULT_LOCAL_COMPUTER_NAME), so the\n * shared file must not leak into it. Keeps the supervised computer boot\n * byte-identical to pre-config behavior.\n * Callers can also pass an explicit shared config to test the layering.\n */\nexport function loadComputerConfig(\n env: Env = process.env,\n shared: ComputerConfigFile = env === process.env && env.SLAYZONE_SUPERVISED !== '1'\n ? loadComputerConfigFile()\n : {}\n): ComputerConfig {\n const fromShared = fromSharedConfig(shared)\n\n // A join token is self-sufficient: it embeds the hub's `wss://\u2026/computers` URL and\n // the cert fingerprint to pin. Decode it and use those as the LOWEST-precedence\n // fallback for hubUrl + pinnedCertSha256, so `SLAYZONE_HUB_JOIN_TOKEN=\u2026 computer` works\n // with no other config. An explicit hubUrl / pin (file or env) still wins, so an\n // operator can point a token at a different endpoint or override the pin. A\n // malformed token decodes to null \u2192 no fallback (schema then reports the missing\n // hubUrl, exactly as before).\n //\n // Env precedence: env > computer.config.json. Resolved ONCE here so the token-decode\n // fallback and the `joinToken` field can never disagree about which channel won.\n const envJoinToken = env[ENV_VARS.joinToken]\n const joinToken = envJoinToken ?? fromShared.joinToken\n const fromToken = joinToken ? decodeJoinToken(joinToken) : null\n\n // The env channel carries only the hub AUTHORITY (host[:port]); compose the\n // full `ws(s)://<addr>/computers` dial url here, scheme from the host (rule A1:\n // loopback \u2192 ws, any other host \u2192 wss). computer.config.json / join-token\n // fallbacks below still supply a full url directly.\n const envAddress = env[ENV_VARS.hubAddress]\n const hubUrlFromEnv =\n envAddress !== undefined ? hubUrlFromAddr(envAddress, 'ws', '/computers') : undefined\n\n const merged = {\n // Supervised local computer \u2192 the shared const so the hub's dedup collapses it\n // to one row; standalone \u2192 the hostname (computer.config.json `computerName` overrides\n // via ...fromShared below).\n name: env.SLAYZONE_SUPERVISED === '1' ? DEFAULT_LOCAL_COMPUTER_NAME : hostname(),\n // FS path-jail default. Supervised local computer \u2192 `[homedir()]` (it operates\n // on the user's own projects under $HOME); standalone \u2192 `[]` here, then\n // computer.config.json `allowedRoots` (...fromShared below) or the SLAYZONE_ROOT\n // fallback in bin.ts. No env channel either way.\n allowedRoots: env.SLAYZONE_SUPERVISED === '1' ? [homedir()] : ([] as string[]),\n capabilities: [...DEFAULT_CAPABILITIES],\n ...(fromToken\n ? {\n hubUrl: fromToken.hubUrl,\n // A token minted by the current hub carries an EMPTY fingerprint: the hub\n // no longer presents a certificate of its own, so there is nothing to pin\n // and the front end's certificate is verified the normal way. An empty\n // string must read as \"no pin\", never reach the schema (min(1)) and fail\n // the whole config. A token from an older hub still carries a real pin.\n ...(fromToken.certFingerprint !== ''\n ? { pinnedCertSha256: fromToken.certFingerprint }\n : {})\n }\n : {}),\n // <ROOT>/computer.config.json \u2014 base under env (spread after). The single config file.\n ...fromShared,\n ...(hubUrlFromEnv !== undefined ? { hubUrl: hubUrlFromEnv } : {}),\n ...(envJoinToken !== undefined ? { joinToken: envJoinToken } : {})\n }\n\n const result = computerConfigSchema.safeParse(merged)\n if (!result.success) {\n const issues = result.error.issues\n .map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`)\n .join('; ')\n throw new Error(\n `invalid computer configuration (${issues}). Set ${ENV_VARS.hubAddress} (and ${ENV_VARS.joinToken} for first contact) or a <ROOT>/computer.config.json.`\n )\n }\n\n // Fail-fast on an EXPLICITLY-configured pin (computer.config.json `pinnedCertSha256`)\n // against a plaintext ws:// hub: pinning is meaningless without TLS, and silently\n // dropping it would downgrade an operator who asked for pinning to an unpinned\n // connection. A pin that came ONLY from the join token (the auto path) is NOT\n // explicit \u2014 it is softly ignored downstream (startComputer) when the resolved url\n // is ws://, so a ws token stays usable for loopback/dev without a hard failure.\n const explicitPin = fromShared.pinnedCertSha256\n if (explicitPin !== undefined && urlProtocol(result.data.hubUrl) === 'ws:') {\n throw new Error(\n `config pinnedCertSha256 requires a wss:// hub url; ` +\n `got '${result.data.hubUrl}'. Pinning has no effect without TLS \u2014 use a wss:// url or drop the pin.`\n )\n }\n\n // Plaintext `ws://` is for a hub on THIS machine only. Credentials and the\n // command stream would cross the network unencrypted otherwise, and the hub does\n // not terminate TLS itself \u2014 a reachable hub sits behind a front end that does,\n // so a non-loopback hub is always a `wss://` url. The env channel can never\n // produce the bad shape (hubUrlFromAddr picks `wss` for a non-loopback host), so\n // this only trips on a full url supplied via computer.config.json / a join token.\n // EVERY hub this computer dials is checked, not only `hubUrl`: `hubUrls` wins over\n // it at dial time (`effectiveHubUrls`), so guarding one field alone leaves the\n // others free to carry the bad shape.\n for (const url of effectiveHubUrls(result.data)) {\n if (urlProtocol(url) === 'ws:' && !isLoopbackComputerUrl(url)) {\n throw new Error(\n `plaintext ws:// is only allowed for a hub on this machine; got '${url}'. ` +\n `A hub other machines reach is served over TLS by its front end \u2014 use a wss:// url.`\n )\n }\n }\n return result.data\n}\n\n/** Parse a url's protocol (`ws:` / `wss:` / \u2026), or `null` if malformed. */\nfunction urlProtocol(url: string): string | null {\n try {\n return new URL(url).protocol\n } catch {\n return null\n }\n}\n\n/** Every hub this computer dials \u2014 `hubUrls` when set, else the single `hubUrl`.\n * De-duplicated, because the same hub twice would mean two dialers racing over\n * one credential entry. */\nexport function effectiveHubUrls(config: ComputerConfig): string[] {\n const all = config.hubUrls && config.hubUrls.length > 0 ? config.hubUrls : [config.hubUrl]\n return [...new Set(all)]\n}\n", "/**\n * Stateless join-token decode \u2014 the CONSUMER side of the szjt1 grammar.\n *\n * A join token is `szjt1.<base64url(JSON{hubUrl,certFingerprint,secret})>` \u2014 the\n * exact format minted by the hub in `@slayzone/computers/server` (join-tokens.ts).\n *\n * TWO CONSUMERS, ONE DECODER:\n * - the COMPUTER reads the embedded `hubUrl` + `certFingerprint` to dial + pin the\n * hub before sending any computer frame;\n * - `slay computer create` validates a `--token` locally (fail fast on a typo rather\n * than installing a unit that crash-loops against an undialable hub) and reads\n * the `hubUrl` out of it for `slay computer ls`.\n *\n * This is a dependency-free re-implementation of the hub-side `decodeJoinToken`.\n * Importing the hub decoder from `@slayzone/computers/server` would drag its `./store`\n * module (and thus better-sqlite3) into both the computer and the CLI bundle. The token\n * grammar is trivial and stable (`szjt1.` prefix), so decoding it here is the\n * smallest sustainable option \u2014 kept byte-compatible with the minter, which\n * `computer/src/join-token.test.ts` pins by round-tripping a REAL minted token.\n *\n * Lives on the lean `@slayzone/platform/join-token` subpath (node builtins only, no\n * local imports) so neither consumer pulls the platform barrel.\n *\n * @module platform/join-token\n */\n\n/** Prefix of a v1 join token \u2014 must match `@slayzone/computers/server`. */\nexport const JOIN_TOKEN_PREFIX = 'szjt1'\n\n/** Decoded contents of a join token \u2014 what an enrolling computer needs. */\nexport interface JoinTokenPayload {\n hubUrl: string\n certFingerprint: string\n /** 256-bit random secret (base64url). Unused by the computer (the enroll frame\n * carries the whole token), but decoded for completeness. */\n secret: string\n}\n\n/**\n * Decode a token's embedded payload. Returns `null` for anything that is not a\n * well-formed `szjt1.` token (wrong prefix, empty/invalid base64url, non-object\n * JSON, or missing string fields).\n */\nexport function decodeJoinToken(token: string): JoinTokenPayload | null {\n const dot = token.indexOf('.')\n if (dot === -1 || token.slice(0, dot) !== JOIN_TOKEN_PREFIX) return null\n const body = token.slice(dot + 1)\n if (!body) return null\n try {\n const parsed: unknown = JSON.parse(Buffer.from(body, 'base64url').toString('utf8'))\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return null\n const { hubUrl, certFingerprint, secret } = parsed as Record<string, unknown>\n if (\n typeof hubUrl !== 'string' ||\n typeof certFingerprint !== 'string' ||\n typeof secret !== 'string'\n ) {\n return null\n }\n return { hubUrl, certFingerprint, secret }\n } catch {\n return null\n }\n}\n", "/**\n * Which physical box is this computer on?\n *\n * A \"computer\" is one OS user's environment \u2014 its `$HOME`, checkouts, credentials\n * and ptys. Several of them can share one machine, one per OS account, and the hub\n * wants to show them grouped. That grouping needs an id every account on the box\n * agrees on, discovered WITHOUT root and WITHOUT per-OS identity APIs.\n *\n * The scheme is two files:\n *\n * - DURABLE, in this computer's own `<ROOT>/computer.host-id.json` (0600). This\n * is the value of record. Once written it survives reboots, `/tmp` sweeps and\n * everything else.\n * - SHARED, at a world-writable path in `/tmp`. Its ONLY job is to let a\n * newly-enrolling OS user on the same box copy the id instead of inventing a\n * second one. Nothing depends on it surviving.\n *\n * Because durability lives in `$HOME`, `/tmp` being wiped is harmless: the hourly\n * tick rewrites the shared file from the durable one, so a user who first starts\n * after a reboot still finds it.\n *\n * **Why not an OS identity API.** `/etc/machine-id`, `IOPlatformUUID` and\n * `MachineGuid` are three different code paths with three different failure modes,\n * they are absent or shared in containers, and `/etc/machine-id` is baked into VM\n * images so cloned VPSs report the same one. A file we write ourselves has one code\n * path and is created later in the machine's life than any of them.\n *\n * **Two traps this file exists to avoid.**\n *\n * 1. NOT `os.tmpdir()`. On macOS it honours `$TMPDIR`, which is PER-USER\n * (`/var/folders/\u2026`), so the shared file would never be shared \u2014 the mechanism\n * would silently no-op on the primary dev platform with every test still green.\n * The literal `/tmp` is the point.\n * 2. `/tmp` is sticky, so `rename()` over another user's file fails EPERM. The\n * atomic tmp+rename idiom used everywhere else in this repo (see\n * `credential-store.ts`) does NOT work here. Create with `wx`, `fchmod` to\n * 0666 (a `writeFile` mode is masked by umask 022 \u2192 0644 \u2192 nobody else can\n * write), and update in place afterwards.\n *\n * The shared file is world-writable, so any local user can change the grouping.\n * That is accepted: grouping is cosmetic, and NOTHING may key off the host id \u2014\n * see `machines.ts`, where it is a mutable attribute and never a reference.\n *\n * @module computer/host-id\n */\n\nimport { randomUUID } from 'node:crypto'\nimport { constants, open, mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises'\nimport { homedir } from 'node:os'\nimport { dirname, join } from 'node:path'\nimport { z } from 'zod'\n\n/** Mirrors the credential store's precedence: `SLAYZONE_ROOT` > `$HOME/.slayzone`. */\nfunction slayzoneRootDir(): string {\n if (process.env.SLAYZONE_ROOT) return process.env.SLAYZONE_ROOT\n const home = process.env.HOME ?? process.env.USERPROFILE ?? homedir()\n return join(home, '.slayzone')\n}\n\nexport function hostIdFilePath(baseDir?: string): string {\n return join(baseDir ?? slayzoneRootDir(), 'computer.host-id.json')\n}\n\n/**\n * The one blessed shared path. Literal `/tmp`, never `os.tmpdir()` \u2014 see the\n * module note. Windows has no world-writable temp (`%LOCALAPPDATA%\\Temp` is\n * per-user), so there is no shared channel there and grouping degrades to one\n * machine per OS user.\n */\nexport function sharedHostIdPath(): string | null {\n return process.platform === 'win32' ? null : '/tmp/slayzone-host-id'\n}\n\nconst hostIdFileSchema = z.object({ hostId: z.string().min(1), updatedAt: z.number() })\n\nasync function readDurable(filePath: string): Promise<string | null> {\n try {\n const parsed = hostIdFileSchema.safeParse(JSON.parse(await readFile(filePath, 'utf-8')))\n return parsed.success ? parsed.data.hostId : null\n } catch {\n return null\n }\n}\n\n/** Atomic, 0600, same idiom as the credential store \u2014 this file is ours alone. */\nasync function writeDurable(filePath: string, hostId: string): Promise<void> {\n await mkdir(dirname(filePath), { recursive: true, mode: 0o700 })\n const tmpPath = `${filePath}.tmp-${process.pid}`\n await writeFile(tmpPath, `${JSON.stringify({ hostId, updatedAt: Date.now() }, null, 2)}\\n`, {\n mode: 0o600\n })\n try {\n await rename(tmpPath, filePath)\n } catch (err) {\n await rm(tmpPath, { force: true })\n throw err\n }\n}\n\n/** A single trimmed line, or null when absent/unreadable/corrupt. */\nasync function readShared(sharedPath: string): Promise<string | null> {\n try {\n const raw = (await readFile(sharedPath, 'utf-8')).trim()\n return raw.length > 0 ? raw : null\n } catch {\n return null\n }\n}\n\n/**\n * Write the shared file, tolerating every way a world-writable path in a sticky\n * directory can refuse us. A failure here costs grouping, never correctness, so it\n * is logged once by the caller and otherwise ignored.\n */\nasync function writeShared(sharedPath: string, hostId: string): Promise<void> {\n // Create-exclusive first so two simultaneous first-starts cannot both believe\n // they authored it; whoever loses re-reads and adopts on the next tick.\n try {\n const fh = await open(sharedPath, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL)\n try {\n // Explicit fchmod, NOT the `mode` option: umask 022 would turn 0666 into\n // 0644 and lock every other OS user out of a file that exists to be shared.\n await fh.chmod(0o666)\n await fh.writeFile(`${hostId}\\n`)\n } finally {\n await fh.close()\n }\n return\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') throw err\n }\n // Already there: truncate in place. Not atomic \u2014 but the payload is one short\n // line, and a torn read is indistinguishable from an absent file to `readShared`,\n // which is exactly how it is treated.\n const fh = await open(sharedPath, constants.O_WRONLY | constants.O_TRUNC)\n try {\n await fh.writeFile(`${hostId}\\n`)\n } finally {\n await fh.close()\n }\n}\n\nexport interface ReconcileHostIdOptions {\n /** Override the durable file's directory (tests). */\n baseDir?: string\n /** Override the shared path (tests). `null` disables the shared channel. */\n sharedPath?: string | null\n log?: (message: string, meta?: Record<string, unknown>) => void\n}\n\n/**\n * Read, reconcile, write \u2014 in that order, and skip the write when nothing changed.\n *\n * On a mismatch the SHARED value wins. That is what converges two OS users who\n * first started at the same moment and each generated their own: whoever wrote the\n * shared file last is adopted by everyone else on their next tick. Any tie-break\n * would do; deferring to the shared file needs no coordination and no clock.\n *\n * Returns the id this computer should report.\n */\nexport async function reconcileHostId(options: ReconcileHostIdOptions = {}): Promise<string> {\n const filePath = hostIdFilePath(options.baseDir)\n const sharedPath = options.sharedPath === undefined ? sharedHostIdPath() : options.sharedPath\n const log = options.log ?? ((): void => undefined)\n\n let durable = await readDurable(filePath)\n const shared = sharedPath ? await readShared(sharedPath) : null\n\n if (shared && durable && shared !== durable) {\n // Adopt. Another OS user on this box got here first; two ids for one machine\n // would show as two machines.\n log('host id adopted from the shared file', { from: durable, to: shared })\n durable = shared\n await writeDurable(filePath, durable)\n } else if (!durable) {\n durable = shared ?? randomUUID()\n await writeDurable(filePath, durable)\n }\n\n if (sharedPath && shared !== durable) {\n // Restores the shared file after a reboot cleared /tmp, so a user who first\n // starts later still finds it instead of inventing a second machine.\n try {\n await writeShared(sharedPath, durable)\n } catch (err) {\n log('host id shared file not writable \u2014 grouping may split', {\n path: sharedPath,\n error: err instanceof Error ? err.message : String(err)\n })\n }\n }\n\n return durable\n}\n\n/** How often the shared file is refreshed. Well inside any tmp-cleaner window. */\nexport const HOST_ID_REFRESH_MS = 3_600_000\n\n/**\n * Resolve once, then keep the shared file alive on a timer.\n *\n * The timer is what covers a box with long uptime whose tmp cleaner runs while no\n * computer ever restarts \u2014 without it a user enrolling later finds nothing and\n * splits off. `unref` so it never holds the process open.\n */\nexport async function startHostIdReconciler(\n options: ReconcileHostIdOptions = {}\n): Promise<{ hostId: string; stop: () => void }> {\n const hostId = await reconcileHostId(options)\n const timer = setInterval(() => {\n void reconcileHostId(options)\n }, HOST_ID_REFRESH_MS)\n timer.unref()\n return { hostId, stop: () => clearInterval(timer) }\n}\n", "/**\n * Computer-side agent-hook loopback relay.\n *\n * Hub/computer split: a task's PTY that spawns on a computer must post its lifecycle\n * hook to the SAME place a local spawn does \u2014 loopback. There is no hub on the\n * computer machine, so this hosts `/api/agent-hook` on the COMPUTER's own loopback\n * and relays each envelope to the hub OVER THE EXISTING authenticated ws channel\n * (a generic `event` notification, `name: 'agent-hook'`). The hub's composition\n * root consumes that event and feeds it to the shared `processAgentHook`.\n *\n * Why this exists (the sustainable topology):\n * - The agent env is BYTE-IDENTICAL local vs remote \u2014 the computer overlays\n * SLAYZONE_AGENT_HOOK_URL to this loopback URL at pty spawn (see pty.ts), so\n * `buildMcpEnv` never needs a remote branch for the hook and no per-agent hub\n * bearer is ever placed in a subprocess env.\n * - The computer reuses its ONE authed hub link (no second auth path invented).\n * - This is where a computer could later filter/batch/retry hook traffic.\n *\n * This module is a DUMB PIPE: it does NOT parse or name any field of the hook\n * payload. It reads the raw body, forwards it opaquely, and always answers a\n * fast `{}` (fire-and-forget \u2014 the hook must never block the agent TUI).\n *\n * @module computer/handlers/agent-hook\n */\n\nimport http from 'node:http'\nimport {\n AGENT_HOOK_EVENT_NAME,\n ComputerNotificationMethods\n} from '@slayzone/computer-transport/shared'\nimport type { HandlerContext } from './types'\n\n/** Loopback path the overlaid SLAYZONE_AGENT_HOOK_URL points at. */\nconst AGENT_HOOK_PATH = '/api/agent-hook'\n\n/** Cap the body we buffer \u2014 a SessionStart payload can carry the full tool list,\n * but anything past ~2 MiB is not a real hook and we drop it rather than buffer\n * unbounded. Mirrors the server route's generous-but-bounded 1mb+ limit. */\nconst MAX_BODY_BYTES = 2 * 1024 * 1024\n\nexport interface AgentHookServer {\n /** `http://127.0.0.1:<port>/api/agent-hook` \u2014 inject as SLAYZONE_AGENT_HOOK_URL. */\n url: string\n /** Stop the listener (called on computer shutdown). */\n close(): Promise<void>\n}\n\n/**\n * Start the computer's loopback agent-hook relay. Binds `127.0.0.1:0` (ephemeral\n * port) so it never collides, and resolves once the port is bound.\n */\nexport function createAgentHookServer(ctx: HandlerContext): Promise<AgentHookServer> {\n const server = http.createServer((req, res) => {\n // Only the hook path + POST are meaningful; everything else is a fast 404.\n if (req.method !== 'POST' || (req.url ?? '').split('?')[0] !== AGENT_HOOK_PATH) {\n res.writeHead(404).end()\n return\n }\n\n const chunks: Buffer[] = []\n let total = 0\n let aborted = false\n req.on('data', (c: Buffer) => {\n if (aborted) return\n total += c.length\n if (total > MAX_BODY_BYTES) {\n aborted = true\n // Still answer 200 (fire-and-forget contract) but skip the relay.\n res.writeHead(200, { 'content-type': 'application/json' }).end('{}')\n req.destroy()\n return\n }\n chunks.push(c)\n })\n req.on('end', () => {\n if (aborted) return\n // Answer FIRST \u2014 the hook is fire-and-forget and must never block on the\n // hub round-trip. Then relay opaquely.\n res.writeHead(200, { 'content-type': 'application/json' }).end('{}')\n\n const bodyText = Buffer.concat(chunks).toString('utf8')\n // Forward the payload as parsed JSON when possible (the common path \u2014 the\n // hub's schema validates an object), else forward the raw string so the\n // hub still sees SOMETHING (it is the single authority that judges shape).\n let payload: unknown\n try {\n payload = bodyText.length > 0 ? JSON.parse(bodyText) : {}\n } catch {\n payload = bodyText\n }\n try {\n ctx.dialer.notify(ComputerNotificationMethods.event, {\n name: AGENT_HOOK_EVENT_NAME,\n payload\n })\n } catch (err) {\n ctx.log('agent-hook relay failed', { error: String(err) })\n }\n })\n req.on('error', () => {\n if (!res.headersSent) res.writeHead(200, { 'content-type': 'application/json' }).end('{}')\n })\n })\n\n return new Promise<AgentHookServer>((resolve, reject) => {\n server.on('error', reject)\n server.listen(0, '127.0.0.1', () => {\n const addr = server.address()\n const port = typeof addr === 'object' && addr ? addr.port : 0\n ctx.log('agent-hook loopback relay listening', { port })\n resolve({\n url: `http://127.0.0.1:${port}${AGENT_HOOK_PATH}`,\n close: () =>\n new Promise<void>((r) => {\n server.close(() => r())\n })\n })\n })\n })\n}\n", "/**\n * Computer-side filesystem exec handlers.\n *\n * Three groups, matching the `fs.` frame contract:\n *\n * - **raw probes** (`fs.pathExists`, `fs.removeDir`) \u2014 the original routed\n * seams behind `WorktreeExecAdapters`.\n * - **workspace browse** (`fs.listRoots`, `fs.listDir`, `fs.mkdir`) \u2014 ABSOLUTE\n * paths inside the path-jail. These back the desktop's directory picker,\n * which has to describe THIS machine's disk before any project root exists.\n * A native dialog on the desktop cannot: it browses the desktop's own\n * filesystem and yields paths that do not exist here.\n * - **file editor** (`fs.readDir` \u2026 `fs.watchStop`) \u2014 root-scoped, gitignore\n * aware. These delegate to `@slayzone/file-editor/server`, the SAME module\n * the hub used to call in-process. It is pure `node:fs` + `ignore`, so the\n * computer imports it rather than reimplementing it; hub-local and computer-routed\n * execution then run identical code and cannot drift in behaviour.\n *\n * (Contrast `./git.ts`, which does reimplement: `@slayzone/worktrees/server`\n * drags in electron/React and would not bundle.)\n *\n * Every path argument passes {@link assertPathAllowed} \u2014 realpath containment\n * against the computer's `allowedRoots` \u2014 before any access. The editor ops then\n * ALSO pass file-editor's own `assertWithinRoot`. Two guards, different jobs:\n * the jail bounds the machine, the root bounds the workspace.\n *\n * @module computer/handlers/fs\n */\n\nimport { existsSync, realpathSync } from 'node:fs'\nimport { mkdir, readdir, rm, stat } from 'node:fs/promises'\nimport { homedir } from 'node:os'\nimport { dirname, join, resolve, sep } from 'node:path'\nimport {\n copy as feCopy,\n copyIn as feCopyIn,\n createDir as feCreateDir,\n createFile as feCreateFile,\n deletePath as feDeletePath,\n gitStatus as feGitStatus,\n discoverRepos as feDiscoverRepos,\n listAllFiles as feListAllFiles,\n readDir as feReadDir,\n readFile as feReadFile,\n renamePath as feRenamePath,\n searchFiles as feSearchFiles,\n subscribeFileWatcher,\n writeFile as feWriteFile\n} from '@slayzone/file-editor/server'\nimport type { DirEntry, FileSearchResult, ReadFileResult } from '@slayzone/file-editor/shared'\nimport {\n FS_MAX_LIST_ALL_FILES,\n FS_MAX_SEARCH_RESULTS,\n fsCopyInParamsSchema,\n fsCopyParamsSchema,\n fsCreateDirParamsSchema,\n fsCreateFileParamsSchema,\n fsDeleteParamsSchema,\n fsDiscoverReposParamsSchema,\n fsGitStatusParamsSchema,\n fsListAllFilesParamsSchema,\n fsListDirParamsSchema,\n fsListRootsParamsSchema,\n fsMkdirParamsSchema,\n fsPathExistsParamsSchema,\n fsReadDirParamsSchema,\n fsReadFileParamsSchema,\n fsRemoveDirParamsSchema,\n fsRenameParamsSchema,\n fsSearchFilesParamsSchema,\n fsWatchStartParamsSchema,\n fsWatchStopParamsSchema,\n fsWriteFileParamsSchema,\n HubToComputerMethods,\n ComputerNotificationMethods,\n type FsChangeParams,\n type FsDiscoverReposResult,\n type FsGitStatusResult,\n type FsListDirEntry,\n type FsListDirResult,\n type FsListRootsResult,\n type FsReadDirResult,\n type FsReadFileResult,\n type FsSearchFilesResult\n} from '@slayzone/computer-transport/shared'\nimport { assertPathAllowed } from '../config'\nimport type { HandlerContext, HubMethodTable } from './types'\n\n/**\n * Compile-time pins between the wire schemas and the file-editor types they\n * describe. The frames package cannot import file-editor (it would take on the\n * dependency for types alone), so this module \u2014 the one place that imports both\n * \u2014 is where a shape divergence has to fail. Widening `DirEntry` without\n * widening `fsDirEntrySchema` breaks the build here rather than at runtime on a\n * remote computer, which is the failure mode this codebase has already paid for\n * four times over in the git and proc frames.\n */\ntype _AssertDirEntry = DirEntry extends FsReadDirResult['entries'][number] ? true : never\ntype _AssertReadFile = ReadFileResult extends FsReadFileResult ? true : never\ntype _AssertSearch = FileSearchResult extends FsSearchFilesResult['results'][number] ? true : never\nconst _typePins: [_AssertDirEntry, _AssertReadFile, _AssertSearch] = [true, true, true]\nvoid _typePins\n\n/** Directories never worth showing in a picker, even with `includeHidden`. */\nconst BROWSE_ALWAYS_HIDDEN = new Set(['.git', '.DS_Store', 'node_modules'])\n\nexport function createFsHandlers(ctx: HandlerContext): HubMethodTable {\n // Read the jail through `ctx` on EVERY call rather than capturing the array at\n // construction: `computer.setAllowedRoots` edits it live (same shared-ctx trick\n // as `setAgentHookUrl`), and a captured reference would keep enforcing the\n // boot-time set \u2014 the user widens the roots in Settings, the UI reports\n // success, and the computer silently keeps refusing.\n const allow = (candidate: string): string => assertPathAllowed(candidate, ctx.config.allowedRoots)\n\n /** Live watches, keyed by the hub-minted watchId. */\n const watches = new Map<string, () => void>()\n\n // --- raw probes -----------------------------------------------------------\n\n function pathExists(rawParams: unknown): { exists: boolean } {\n const { path } = fsPathExistsParamsSchema.parse(rawParams)\n const resolved = allow(path)\n return { exists: existsSync(resolved) }\n }\n\n async function removeDir(rawParams: unknown): Promise<{ ok: true }> {\n const { path } = fsRemoveDirParamsSchema.parse(rawParams)\n const resolved = allow(path)\n await rm(resolved, { recursive: true, force: true })\n ctx.log('fs removeDir', { path: resolved })\n return { ok: true }\n }\n\n // --- workspace browse -----------------------------------------------------\n\n /**\n * The computer's browsable roots ARE its path-jail \u2014 there is nothing else it\n * would be willing to open. Roots are realpath-resolved so the client's\n * subsequent `fs.listDir` calls compare equal to what the jail returns; a\n * configured root that does not exist is dropped rather than offered as a\n * dead-end.\n */\n function listRoots(rawParams: unknown): FsListRootsResult {\n fsListRootsParamsSchema.parse(rawParams ?? {})\n const resolvedRoots: string[] = []\n for (const root of ctx.config.allowedRoots) {\n try {\n resolvedRoots.push(realpathSync.native(resolve(root)))\n } catch {\n /* configured but absent \u2014 cannot be browsed */\n }\n }\n let home: string | null = null\n try {\n home = realpathSync.native(homedir())\n } catch {\n home = null\n }\n return { roots: resolvedRoots, home, platform: process.platform, sep }\n }\n\n /**\n * List one directory by ABSOLUTE path.\n *\n * `parent` is null when the listed dir is itself an allowed root \u2014 the picker\n * uses that to stop offering \"up\", since a `..` from a root would be refused\n * by the jail anyway and a dead affordance reads as a bug.\n */\n async function listDir(rawParams: unknown): Promise<FsListDirResult> {\n const params = fsListDirParamsSchema.parse(rawParams)\n const abs = allow(params.path)\n\n const dirents = await readdir(abs, { withFileTypes: true })\n const entries: FsListDirEntry[] = []\n for (const e of dirents) {\n if (BROWSE_ALWAYS_HIDDEN.has(e.name)) continue\n if (!params.includeHidden && e.name.startsWith('.')) continue\n\n const full = join(abs, e.name)\n const symlink = e.isSymbolicLink()\n let isDir = e.isDirectory()\n if (symlink) {\n // A symlink's own dirent says \"symlink\", not what it points at. Stat\n // through it; a broken link stats nothing and is simply skipped.\n try {\n isDir = (await stat(full)).isDirectory()\n } catch {\n continue\n }\n }\n if (params.dirsOnly && !isDir) continue\n\n entries.push({\n name: e.name,\n path: full,\n type: isDir ? 'directory' : 'file',\n ...(symlink && { isSymlink: true }),\n ...(isDir && existsSync(join(full, '.git')) && { isGitRepo: true })\n })\n }\n entries.sort((a, b) => {\n if (a.type !== b.type) return a.type === 'directory' ? -1 : 1\n return a.name.localeCompare(b.name)\n })\n\n const isRoot = ctx.config.allowedRoots.some((r) => {\n try {\n return realpathSync.native(resolve(r)) === abs\n } catch {\n return false\n }\n })\n return { path: abs, parent: isRoot ? null : dirname(abs), entries }\n }\n\n async function mkdirHandler(rawParams: unknown): Promise<{ path: string }> {\n const { path } = fsMkdirParamsSchema.parse(rawParams)\n const abs = allow(path)\n await mkdir(abs, { recursive: true })\n ctx.log('fs mkdir', { path: abs })\n // Re-resolve: the jail tolerates a non-existent tail, so the pre-create path\n // may still contain an uncollapsed symlinked ancestor.\n return { path: realpathSync.native(abs) }\n }\n\n // --- file editor ----------------------------------------------------------\n\n function readDirHandler(rawParams: unknown): FsReadDirResult {\n const { rootPath, dirPath } = fsReadDirParamsSchema.parse(rawParams)\n return { entries: feReadDir(allow(rootPath), dirPath) }\n }\n\n function readFileHandler(rawParams: unknown): FsReadFileResult {\n const { rootPath, filePath, force } = fsReadFileParamsSchema.parse(rawParams)\n return feReadFile(allow(rootPath), filePath, force)\n }\n\n function writeFileHandler(rawParams: unknown): { ok: true } {\n const { rootPath, filePath, content } = fsWriteFileParamsSchema.parse(rawParams)\n feWriteFile(allow(rootPath), filePath, content)\n return { ok: true }\n }\n\n function createFileHandler(rawParams: unknown): { ok: true } {\n const { rootPath, filePath } = fsCreateFileParamsSchema.parse(rawParams)\n feCreateFile(allow(rootPath), filePath)\n return { ok: true }\n }\n\n function createDirHandler(rawParams: unknown): { ok: true } {\n const { rootPath, dirPath } = fsCreateDirParamsSchema.parse(rawParams)\n feCreateDir(allow(rootPath), dirPath)\n return { ok: true }\n }\n\n function renameHandler(rawParams: unknown): { ok: true } {\n const { rootPath, oldPath, newPath } = fsRenameParamsSchema.parse(rawParams)\n feRenamePath(allow(rootPath), oldPath, newPath)\n return { ok: true }\n }\n\n function deleteHandler(rawParams: unknown): { ok: true } {\n const { rootPath, targetPath } = fsDeleteParamsSchema.parse(rawParams)\n feDeletePath(allow(rootPath), targetPath)\n return { ok: true }\n }\n\n function copyInHandler(rawParams: unknown): { path: string } {\n const { rootPath, absoluteSrc, targetDir } = fsCopyInParamsSchema.parse(rawParams)\n // `absoluteSrc` is a second absolute path on this machine, outside the root \u2014\n // so it needs the jail in its own right, not just `assertWithinRoot`.\n const src = allow(absoluteSrc)\n return { path: feCopyIn(allow(rootPath), src, targetDir) }\n }\n\n function copyHandler(rawParams: unknown): { ok: true } {\n const { rootPath, srcPath, destPath } = fsCopyParamsSchema.parse(rawParams)\n feCopy(allow(rootPath), srcPath, destPath)\n return { ok: true }\n }\n\n async function gitStatusHandler(rawParams: unknown): Promise<FsGitStatusResult> {\n const { rootPath } = fsGitStatusParamsSchema.parse(rawParams)\n return feGitStatus(allow(rootPath))\n }\n\n function searchFilesHandler(rawParams: unknown): FsSearchFilesResult {\n const { rootPath, query, options } = fsSearchFilesParamsSchema.parse(rawParams)\n // Clamp rather than reject: a caller asking for more than the wire allows\n // should get the wire's maximum plus an honest `truncated`, not an error.\n const maxResults = Math.min(options?.maxResults ?? FS_MAX_SEARCH_RESULTS, FS_MAX_SEARCH_RESULTS)\n const results = feSearchFiles(allow(rootPath), query, {\n ...options,\n maxResults\n })\n const total = results.reduce((n, r) => n + r.matches.length, 0)\n return { results, truncated: total >= maxResults }\n }\n\n function listAllFilesHandler(rawParams: unknown): {\n files: string[]\n truncated: boolean\n } {\n const { rootPath } = fsListAllFilesParamsSchema.parse(rawParams)\n const all = feListAllFiles(allow(rootPath))\n return {\n files: all.slice(0, FS_MAX_LIST_ALL_FILES),\n truncated: all.length > FS_MAX_LIST_ALL_FILES\n }\n }\n\n /**\n * Start a watch, streaming each change back as an `fs.change` notification\n * tagged with the hub's `watchId`.\n *\n * Idempotent on `watchId`: a hub retry after a reconnect must not leave two\n * subscriptions feeding one client (the panel would then see every change\n * twice and refetch twice).\n */\n async function discoverReposHandler(rawParams: unknown): Promise<FsDiscoverReposResult> {\n const { rootPath, maxDepth } = fsDiscoverReposParamsSchema.parse(rawParams)\n return { repos: await feDiscoverRepos(allow(rootPath), maxDepth) }\n }\n\n function watchStart(rawParams: unknown): { ok: true } {\n const { watchId, rootPath } = fsWatchStartParamsSchema.parse(rawParams)\n watches.get(watchId)?.()\n const abs = allow(rootPath)\n const dispose = subscribeFileWatcher(abs, (e) => {\n const params: FsChangeParams = { watchId, type: e.type, relPath: e.relPath }\n ctx.dialer.notify(ComputerNotificationMethods.fsChange, params)\n })\n watches.set(watchId, dispose)\n return { ok: true }\n }\n\n function watchStop(rawParams: unknown): { ok: true } {\n const { watchId } = fsWatchStopParamsSchema.parse(rawParams)\n watches.get(watchId)?.()\n watches.delete(watchId)\n return { ok: true }\n }\n\n return {\n [HubToComputerMethods.fsPathExists]: pathExists,\n [HubToComputerMethods.fsRemoveDir]: removeDir,\n\n [HubToComputerMethods.fsListRoots]: listRoots,\n [HubToComputerMethods.fsListDir]: listDir,\n [HubToComputerMethods.fsMkdir]: mkdirHandler,\n\n [HubToComputerMethods.fsReadDir]: readDirHandler,\n [HubToComputerMethods.fsReadFile]: readFileHandler,\n [HubToComputerMethods.fsWriteFile]: writeFileHandler,\n [HubToComputerMethods.fsCreateFile]: createFileHandler,\n [HubToComputerMethods.fsCreateDir]: createDirHandler,\n [HubToComputerMethods.fsRename]: renameHandler,\n [HubToComputerMethods.fsDelete]: deleteHandler,\n [HubToComputerMethods.fsCopyIn]: copyInHandler,\n [HubToComputerMethods.fsCopy]: copyHandler,\n [HubToComputerMethods.fsGitStatus]: gitStatusHandler,\n [HubToComputerMethods.fsSearchFiles]: searchFilesHandler,\n [HubToComputerMethods.fsListAllFiles]: listAllFilesHandler,\n [HubToComputerMethods.fsDiscoverRepos]: discoverReposHandler,\n [HubToComputerMethods.fsWatchStart]: watchStart,\n [HubToComputerMethods.fsWatchStop]: watchStop\n }\n}\n", "import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport { spawn } from 'node:child_process'\nimport ignore from 'ignore'\nimport type {\n DirEntry,\n ReadFileResult,\n FileSearchResult,\n FileSearchMatch,\n SearchFilesOptions,\n GitStatusMap,\n GitFileStatus\n} from '../shared'\n\nexport const ALWAYS_IGNORED = new Set(['.git', '.DS_Store'])\nexport const MAX_FILE_SIZE = 1 * 1024 * 1024 // 1 MB\nexport const FORCE_MAX_FILE_SIZE = 10 * 1024 * 1024 // 10 MB\n\nexport function assertWithinRoot(root: string, target: string): string {\n const resolved = path.resolve(root, target)\n if (!resolved.startsWith(path.resolve(root) + path.sep) && resolved !== path.resolve(root)) {\n throw new Error('Path traversal denied')\n }\n return resolved\n}\n\nconst ignoreCache = new Map<string, { ig: ReturnType<typeof ignore>; mtime: number }>()\n\nexport function getIgnoreFilter(rootPath: string): ReturnType<typeof ignore> {\n const root = path.resolve(rootPath)\n const gitignorePath = path.join(root, '.gitignore')\n let mtime = 0\n try {\n mtime = fs.statSync(gitignorePath).mtimeMs\n } catch {\n /* no .gitignore */\n }\n\n const cached = ignoreCache.get(root)\n if (cached && cached.mtime === mtime) return cached.ig\n\n const ig = ignore()\n try {\n ig.add(fs.readFileSync(gitignorePath, 'utf-8'))\n } catch {\n /* no .gitignore */\n }\n ignoreCache.set(root, { ig, mtime })\n return ig\n}\n\nexport function invalidateIgnoreCache(rootPath: string): void {\n ignoreCache.delete(path.resolve(rootPath))\n}\n\nexport function clearIgnoreCache(): void {\n ignoreCache.clear()\n}\n\nexport function isIgnored(rootPath: string, relativePath: string, isDir: boolean): boolean {\n if (ALWAYS_IGNORED.has(path.basename(relativePath))) return true\n const ig = getIgnoreFilter(rootPath)\n return ig.ignores(isDir ? relativePath + '/' : relativePath)\n}\n\nfunction escapeRegExp(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\nexport function readDir(rootPath: string, dirPath: string): DirEntry[] {\n const abs = dirPath ? assertWithinRoot(rootPath, dirPath) : path.resolve(rootPath)\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(abs, { withFileTypes: true })\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') return []\n throw error\n }\n return entries\n .filter((e) => !ALWAYS_IGNORED.has(e.name))\n .map((e) => {\n const relPath = dirPath ? `${dirPath}/${e.name}` : e.name\n const symlink = e.isSymbolicLink()\n let isDir = e.isDirectory()\n if (symlink) {\n try {\n isDir = fs.statSync(path.join(abs, e.name)).isDirectory()\n } catch {\n return null\n }\n }\n const ignored = isIgnored(rootPath, relPath, isDir)\n return {\n name: e.name,\n path: relPath,\n type: isDir ? ('directory' as const) : ('file' as const),\n ...(ignored && { ignored: true }),\n ...(symlink && { isSymlink: true })\n }\n })\n .filter((e): e is NonNullable<typeof e> => e !== null)\n .sort((a, b) => {\n if (a.type !== b.type) return a.type === 'directory' ? -1 : 1\n return a.name.localeCompare(b.name)\n })\n}\n\nexport function readFile(rootPath: string, filePath: string, force?: boolean): ReadFileResult {\n const abs = assertWithinRoot(rootPath, filePath)\n const stat = fs.statSync(abs)\n if (stat.size > FORCE_MAX_FILE_SIZE) {\n return { content: null, tooLarge: true, sizeBytes: stat.size }\n }\n if (!force && stat.size > MAX_FILE_SIZE) {\n return { content: null, tooLarge: true, sizeBytes: stat.size }\n }\n return { content: fs.readFileSync(abs, 'utf-8') }\n}\n\nexport function listAllFiles(rootPath: string): string[] {\n const root = path.resolve(rootPath)\n const ig = getIgnoreFilter(rootPath)\n const results: string[] = []\n\n function walk(dir: string, prefix: string): void {\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const e of entries) {\n const relPath = prefix ? `${prefix}/${e.name}` : e.name\n if (ALWAYS_IGNORED.has(e.name)) continue\n if (ig.ignores(e.isDirectory() ? relPath + '/' : relPath)) continue\n if (e.isDirectory()) {\n walk(path.join(dir, e.name), relPath)\n } else {\n results.push(relPath)\n }\n }\n }\n\n walk(root, '')\n return results\n}\n\nexport function writeFile(rootPath: string, filePath: string, content: string): void {\n const abs = assertWithinRoot(rootPath, filePath)\n fs.mkdirSync(path.dirname(abs), { recursive: true })\n fs.writeFileSync(abs, content, 'utf-8')\n}\n\nexport function createFile(rootPath: string, filePath: string): void {\n const abs = assertWithinRoot(rootPath, filePath)\n if (fs.existsSync(abs)) throw new Error('File already exists')\n fs.mkdirSync(path.dirname(abs), { recursive: true })\n fs.writeFileSync(abs, '', 'utf-8')\n}\n\nexport function createDir(rootPath: string, dirPath: string): void {\n const abs = assertWithinRoot(rootPath, dirPath)\n fs.mkdirSync(abs, { recursive: true })\n}\n\nexport function renamePath(rootPath: string, oldPath: string, newPath: string): void {\n const absOld = assertWithinRoot(rootPath, oldPath)\n const absNew = assertWithinRoot(rootPath, newPath)\n if (fs.existsSync(absNew)) throw new Error('Target already exists')\n fs.renameSync(absOld, absNew)\n}\n\nexport function deletePath(rootPath: string, targetPath: string): void {\n const abs = assertWithinRoot(rootPath, targetPath)\n fs.rmSync(abs, { recursive: true })\n}\n\nexport function copyIn(rootPath: string, absoluteSrc: string, targetDir?: string): string {\n const srcResolved = path.resolve(absoluteSrc)\n if (!fs.existsSync(srcResolved) || !fs.statSync(srcResolved).isFile()) {\n throw new Error('Source is not a file')\n }\n const ext = path.extname(srcResolved)\n const stem = path.basename(srcResolved, ext)\n const baseName = path.basename(srcResolved)\n const dirRel = (targetDir ?? '').trim()\n if (dirRel) assertWithinRoot(rootPath, dirRel)\n let relPath = dirRel ? `${dirRel}/${baseName}` : baseName\n let dest = assertWithinRoot(rootPath, relPath)\n let i = 1\n while (fs.existsSync(dest)) {\n const candidate = `${stem} (${i})${ext}`\n relPath = dirRel ? `${dirRel}/${candidate}` : candidate\n dest = assertWithinRoot(rootPath, relPath)\n i++\n }\n fs.mkdirSync(path.dirname(dest), { recursive: true })\n fs.copyFileSync(srcResolved, dest)\n return relPath\n}\n\nexport function copy(rootPath: string, srcPath: string, destPath: string): void {\n const absSrc = assertWithinRoot(rootPath, srcPath)\n const absDest = assertWithinRoot(rootPath, destPath)\n fs.cpSync(absSrc, absDest, { recursive: true })\n}\n\nexport function gitStatus(rootPath: string): Promise<GitStatusMap> {\n const root = path.resolve(rootPath)\n if (!fs.existsSync(path.join(root, '.git'))) {\n return Promise.resolve({ files: {}, isGitRepo: false })\n }\n\n return new Promise((resolve) => {\n const chunks: Buffer[] = []\n const proc = spawn('git', ['status', '--porcelain'], { cwd: root })\n proc.stdout.on('data', (chunk: Buffer) => chunks.push(chunk))\n proc.on('error', () => resolve({ files: {}, isGitRepo: false }))\n proc.on('close', (code) => {\n if (code !== 0) {\n resolve({ files: {}, isGitRepo: true })\n return\n }\n const output = Buffer.concat(chunks).toString('utf-8')\n const files: Record<string, GitFileStatus> = {}\n for (const line of output.split('\\n')) {\n if (line.length < 4) continue\n const x = line[0]\n const y = line[1]\n let filePath = line.slice(3)\n const arrow = filePath.indexOf(' -> ')\n if (arrow !== -1) filePath = filePath.slice(arrow + 4)\n\n let status: GitFileStatus\n if (x === 'U' || y === 'U' || (x === 'A' && y === 'A') || (x === 'D' && y === 'D')) {\n status = 'conflicted'\n } else if (x === '?' && y === '?') {\n status = 'untracked'\n } else if (y !== ' ') {\n status = y === 'D' ? 'deleted' : 'modified'\n } else {\n if (x === 'A') status = 'added'\n else if (x === 'D') status = 'deleted'\n else if (x === 'R') status = 'renamed'\n else status = 'staged'\n }\n files[filePath] = status\n }\n resolve({ files, isGitRepo: true })\n })\n })\n}\n\nexport function searchFiles(\n rootPath: string,\n query: string,\n options?: SearchFilesOptions\n): FileSearchResult[] {\n if (!query) return []\n const root = path.resolve(rootPath)\n const ig = getIgnoreFilter(rootPath)\n const matchCase = options?.matchCase ?? false\n const useRegex = options?.regex ?? false\n const maxResults = options?.maxResults ?? 500\n let totalMatches = 0\n\n let pattern: RegExp\n try {\n const flags = matchCase ? 'g' : 'gi'\n pattern = useRegex ? new RegExp(query, flags) : new RegExp(escapeRegExp(query), flags)\n } catch {\n return []\n }\n\n const results: FileSearchResult[] = []\n\n function walk(dir: string, prefix: string): void {\n if (totalMatches >= maxResults) return\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const e of entries) {\n if (totalMatches >= maxResults) return\n const relPath = prefix ? `${prefix}/${e.name}` : e.name\n if (ALWAYS_IGNORED.has(e.name)) continue\n if (ig.ignores(e.isDirectory() ? relPath + '/' : relPath)) continue\n if (e.isDirectory()) {\n walk(path.join(dir, e.name), relPath)\n } else {\n searchFile(root, relPath, pattern, results)\n }\n }\n }\n\n function searchFile(rootDir: string, relPath: string, re: RegExp, out: FileSearchResult[]): void {\n if (totalMatches >= maxResults) return\n const abs = path.join(rootDir, relPath)\n let stat: fs.Stats\n try {\n stat = fs.statSync(abs)\n } catch {\n return\n }\n if (stat.size > MAX_FILE_SIZE) return\n\n let content: string\n try {\n content = fs.readFileSync(abs, 'utf-8')\n } catch {\n return\n }\n\n if (content.slice(0, 8192).includes('\\0')) return\n\n const matches: FileSearchMatch[] = []\n const lines = content.split('\\n')\n for (let i = 0; i < lines.length; i++) {\n if (totalMatches >= maxResults) break\n re.lastIndex = 0\n const m = re.exec(lines[i])\n if (m) {\n matches.push({ line: i + 1, col: m.index, lineText: lines[i].slice(0, 500) })\n totalMatches++\n }\n }\n if (matches.length > 0) {\n out.push({ path: relPath, matches })\n }\n }\n\n walk(root, '')\n return results\n}\n", "import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport { invalidateIgnoreCache, isIgnored, clearIgnoreCache } from './file-ops'\n\nexport type FileWatchEvent = {\n type: 'changed' | 'deleted'\n root: string\n relPath: string\n}\n\ntype Listener = (e: FileWatchEvent) => void\n\ntype WatcherEntry = {\n watcher: fs.FSWatcher\n listeners: Set<Listener>\n debounceMap: Map<string, NodeJS.Timeout>\n}\n\nconst watchers = new Map<string, WatcherEntry>()\n\nexport function subscribeFileWatcher(rootPath: string, listener: Listener): () => void {\n const root = path.resolve(rootPath)\n const existing = watchers.get(root)\n if (existing) {\n existing.listeners.add(listener)\n return () => unsubscribe(root, listener)\n }\n\n const debounceMap = new Map<string, NodeJS.Timeout>()\n const listeners = new Set<Listener>([listener])\n\n try {\n const watcher = fs.watch(root, { recursive: true }, (_eventType, filename) => {\n if (!filename) return\n const relPath = filename.replace(/\\\\/g, '/')\n if (isIgnored(root, relPath, false)) return\n\n if (path.basename(relPath) === '.gitignore') {\n invalidateIgnoreCache(root)\n }\n\n const prev = debounceMap.get(relPath)\n if (prev) clearTimeout(prev)\n debounceMap.set(\n relPath,\n setTimeout(() => {\n debounceMap.delete(relPath)\n const abs = path.join(root, relPath)\n const exists = fs.existsSync(abs)\n const event: FileWatchEvent = {\n type: exists ? 'changed' : 'deleted',\n root,\n relPath\n }\n for (const l of listeners) l(event)\n }, 100)\n )\n })\n\n watchers.set(root, { watcher, listeners, debounceMap })\n return () => unsubscribe(root, listener)\n } catch {\n return () => {\n /* watch failed; nothing to unsubscribe */\n }\n }\n}\n\nfunction unsubscribe(root: string, listener: Listener): void {\n const entry = watchers.get(root)\n if (!entry) return\n entry.listeners.delete(listener)\n if (entry.listeners.size === 0) {\n entry.watcher.close()\n for (const t of entry.debounceMap.values()) clearTimeout(t)\n watchers.delete(root)\n }\n}\n\nexport function closeAllFileWatchers(): void {\n for (const [, entry] of watchers) {\n entry.watcher.close()\n for (const t of entry.debounceMap.values()) clearTimeout(t)\n }\n watchers.clear()\n clearIgnoreCache()\n}\n", "/**\n * Enumerate the git repositories under a project directory.\n *\n * Moved here from `@slayzone/worktrees/server` because it has to run on the\n * machine that OWNS the directory. It drives `resolveRepoPath` \u2192 the terminal\n * cwd, the editor root, and the git panel, so running it on the hub while the\n * checkout lives on a computer resolves every one of those to the wrong place \u2014\n * the same defect as the project-path probe, one layer further in.\n *\n * The walk is one call, not one per directory. A depth-3 recursive walk routed\n * directory-by-directory would be dozens of round-trips; this way the traversal\n * stays next to the disk and only the result crosses the wire.\n *\n * Pure `node:fs` + `git` exec, like the rest of this package's server half, so\n * the computer bundles it and hub-local and computer-routed execution run identical\n * code. `isTaskBound` is deliberately NOT computed here \u2014 it is viewer state\n * belonging to whoever asked, not a property of the disk.\n *\n * @module file-editor/server/repo-discovery\n */\n\nimport { execFile } from 'node:child_process'\nimport { existsSync } from 'node:fs'\nimport { lstat, readdir } from 'node:fs/promises'\nimport path from 'node:path'\n\nexport type DiscoveredRepoKind = 'project-root' | 'child-repo' | 'submodule'\n\nexport interface DiscoveredRepo {\n /** Absolute path on the machine that ran the discovery. */\n path: string\n /** Display name: relative-from-root, falling back to basename. */\n name: string\n kind: DiscoveredRepoKind\n /** Submodule \u2192 containing repo absolute path; null otherwise. */\n parentPath: string | null\n /** Has a `.gitmodules` file (cheap hint for the \"init submodules\" affordance). */\n hasGitmodules: boolean\n}\n\nexport const DEFAULT_REPO_SCAN_DEPTH = 3\n\nconst SKIP_DIRS = new Set([\n 'node_modules',\n 'dist',\n 'build',\n '.next',\n '.nuxt',\n '.svelte-kit',\n 'target',\n '.git',\n '.venv',\n 'venv',\n '__pycache__',\n 'vendor',\n '.cache',\n '.turbo',\n 'out',\n 'coverage',\n '.parcel-cache',\n '.idea',\n '.vscode'\n])\n\nfunction git(args: string[], cwd: string): Promise<string> {\n return new Promise((resolve, reject) => {\n execFile('git', args, { cwd, maxBuffer: 8 * 1024 * 1024 }, (err, stdout) => {\n if (err) reject(err)\n else resolve(stdout)\n })\n })\n}\n\n/** `git rev-parse --git-dir` succeeds \u21D2 inside a work tree. */\nexport async function isGitRepoDir(dir: string): Promise<boolean> {\n try {\n await git(['rev-parse', '--git-dir'], dir)\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Walk for git repos under root, capped at maxDepth, skipping known noise dirs.\n * Stops descending once a directory is identified as a repo \u2014 nested repos inside\n * a work tree are submodules, which the submodule pass below enumerates properly.\n */\nasync function walkForGitRoots(root: string, maxDepth: number): Promise<string[]> {\n const found: string[] = []\n\n async function walk(dir: string, depth: number): Promise<void> {\n if (depth > maxDepth) return\n let entries: string[]\n try {\n entries = await readdir(dir)\n } catch {\n return\n }\n\n await Promise.all(\n entries.map(async (entry) => {\n if (SKIP_DIRS.has(entry) || entry.startsWith('.')) return\n const full = path.join(dir, entry)\n let s\n try {\n s = await lstat(full)\n } catch {\n return\n }\n // Symlinks are skipped entirely \u2014 they can form cycles (especially in\n // macOS user dirs), and following them risks infinite recursion or\n // counting the same repo twice.\n if (s.isSymbolicLink()) return\n if (!s.isDirectory()) return\n if (await isGitRepoDir(full)) {\n found.push(full)\n return\n }\n await walk(full, depth + 1)\n })\n )\n }\n\n await walk(root, 1)\n return found\n}\n\n/**\n * Parse `git submodule status --recursive`.\n * Each line: `[ -+U]<sha> <path>[ (refname)]`. Returns absolute paths.\n */\nasync function listSubmodules(repoPath: string): Promise<string[]> {\n if (!existsSync(path.join(repoPath, '.gitmodules'))) return []\n let out: string\n try {\n out = await git(['submodule', 'status', '--recursive'], repoPath)\n } catch {\n return []\n }\n const subs: string[] = []\n for (const line of out.split('\\n')) {\n if (!line.trim()) continue\n const m = line.match(/^[\\s\\-+U][0-9a-f]+\\s+(\\S+)/)\n if (m) subs.push(path.join(repoPath, m[1]))\n }\n return subs\n}\n\nfunction nameFor(rootPath: string, repoPath: string): string {\n if (repoPath === rootPath) return path.basename(rootPath)\n return path.relative(rootPath, repoPath) || path.basename(repoPath)\n}\n\n/**\n * Every repo a task under `rootPath` may want to view: the project root itself\n * if it is a repo, else its top-level children (\"wrapper folder\" projects), plus\n * the submodules of each, recursively.\n */\nexport async function discoverRepos(\n rootPath: string,\n maxDepth: number = DEFAULT_REPO_SCAN_DEPTH\n): Promise<DiscoveredRepo[]> {\n const rootIsGit = await isGitRepoDir(rootPath)\n const topLevelRoots = rootIsGit ? [rootPath] : await walkForGitRoots(rootPath, maxDepth)\n\n const entries: DiscoveredRepo[] = []\n await Promise.all(\n topLevelRoots.map(async (repoPath) => {\n entries.push({\n path: repoPath,\n name: nameFor(rootPath, repoPath),\n kind: repoPath === rootPath ? 'project-root' : 'child-repo',\n parentPath: null,\n hasGitmodules: existsSync(path.join(repoPath, '.gitmodules'))\n })\n for (const subPath of await listSubmodules(repoPath)) {\n entries.push({\n path: subPath,\n name: nameFor(rootPath, subPath),\n kind: 'submodule',\n parentPath: repoPath,\n hasGitmodules: existsSync(path.join(subPath, '.gitmodules'))\n })\n }\n })\n )\n\n // Stable order: roots first (alpha), then submodules grouped under their root.\n entries.sort((a, b) => {\n const aRoot = a.parentPath ?? a.path\n const bRoot = b.parentPath ?? b.path\n if (aRoot !== bRoot) return aRoot.localeCompare(bRoot)\n if (a.parentPath === null && b.parentPath !== null) return -1\n if (a.parentPath !== null && b.parentPath === null) return 1\n return a.path.localeCompare(b.path)\n })\n return entries\n}\n", "/**\n * Run `gh` on the computer.\n *\n * `gh` authenticates as whoever owns the machine it runs on. Running it on the\n * hub meant the PR panel spoke as the HUB while the agent pushed as the COMPUTER \u2014\n * two identities for one repository, and only one of them had credentials for it.\n * So it moves here, where the checkout and the credentials already are.\n *\n * One generic exec, not one handler per subcommand. The hub keeps its eleven\n * typed functions (`listOpenPrs`, `createPr`, `getPrComments`, \u2026) and all their\n * JSON parsing; only the process crosses over. Eleven frames would be eleven\n * chances for the wire drift this contract has already paid for four times.\n *\n * argv, never a shell string. A PR title or comment body is arbitrary user text,\n * and routing it through a shell would make quoting a security boundary.\n *\n * @module computer/handlers/gh\n */\n\nimport { execFile } from 'node:child_process'\nimport {\n ghExecParamsSchema,\n HubToComputerMethods,\n type GhExecResult\n} from '@slayzone/computer-transport/shared'\nimport { assertPathAllowed } from '../config'\nimport type { HandlerContext, HubMethodTable } from './types'\n\nconst DEFAULT_TIMEOUT_MS = 30_000\n/** gh can emit a large diff; the PR-diff caller reads whole patches. */\nconst MAX_OUTPUT_BYTES = 16 * 1024 * 1024\n\nexport function createGhHandlers(ctx: HandlerContext): HubMethodTable {\n // `async` deliberately: validation and the jail check must surface as a\n // REJECTION, not a synchronous throw from a Promise-returning function. Callers\n // await this, and a function that sometimes throws before returning its promise\n // is a footgun for every one of them.\n async function ghExec(rawParams: unknown): Promise<GhExecResult> {\n const params = ghExecParamsSchema.parse(rawParams)\n const cwd = assertPathAllowed(params.cwd, ctx.config.allowedRoots)\n\n return new Promise((resolve) => {\n const child = execFile(\n 'gh',\n params.args,\n {\n cwd,\n timeout: params.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n maxBuffer: MAX_OUTPUT_BYTES,\n // No env overlay: gh must see this machine's own `GH_*`/`GITHUB_TOKEN`\n // and credential helpers. Injecting anything here would be SlayZone\n // taking custody of credentials it deliberately does not hold.\n env: process.env\n },\n (err, stdout, stderr) => {\n // Resolve on failure rather than reject: every caller above already\n // branches on a non-zero status, and gh uses exit codes for ordinary\n // answers (\"no pull requests found\") as well as real errors.\n const status =\n err && typeof (err as { code?: unknown }).code === 'number'\n ? ((err as { code: number }).code as number)\n : err\n ? null\n : 0\n resolve({ status, stdout: stdout ?? '', stderr: stderr ?? '' })\n }\n )\n // A PR body can be long enough to be awkward as an argv entry; callers pass\n // it on stdin and gh reads `--body-file -`.\n if (params.stdin !== undefined) {\n child.stdin?.end(params.stdin)\n }\n })\n }\n\n return { [HubToComputerMethods.ghExec]: ghExec }\n}\n", "/**\n * Computer-side git exec handlers. Reimplements the pure, path-parametrized git\n * worktree operations the hub delegates to a computer. The equivalent logic lives\n * in `@slayzone/worktrees/server` (git-worktree.ts), but that package drags in\n * the full electron/React/diagnostics tree, so the computer reimplements the\n * handful of operations it needs via child_process git to stay a lightweight\n * standalone bundle.\n *\n * The git.* frame method names + param shapes are OWNED by the parallel\n * Wave2-A2 unit and are not yet present in `@slayzone/computer-transport/shared`; the method\n * names and schemas below MIRROR the agreed contract and a later integration\n * reconciles them against the canonical frames.\n *\n * EVERY path argument passes the {@link assertPathAllowed} realpath containment\n * guard before any filesystem/git access.\n *\n * @module computer/handlers/git\n */\n\nimport { spawn } from 'node:child_process'\nimport { accessSync, chmodSync, constants as fsConstants, existsSync } from 'node:fs'\nimport { cp, mkdir } from 'node:fs/promises'\nimport { dirname, resolve, sep } from 'node:path'\nimport {\n gitCopyIgnoredFilesParamsSchema,\n gitCreateWorktreeParamsSchema,\n gitGetCurrentBranchParamsSchema,\n gitIsGitRepoParamsSchema,\n gitRemoveWorktreeParamsSchema,\n gitRunWorktreeSetupScriptParamsSchema,\n ComputerNotificationMethods\n} from '@slayzone/computer-transport/shared'\nimport { sanitizeSpawnEnv } from '@slayzone/platform/env-manifest'\nimport { z } from 'zod'\nimport { assertPathAllowed } from '../config'\nimport { execCapture, execGit } from './exec'\nimport type { HandlerContext, HubMethodTable } from './types'\n\n/**\n * git.* method names. Mirrors the Wave2-A2 frame contract (not yet in\n * `@slayzone/computer-transport/shared`).\n */\nexport const GitMethods = {\n isGitRepo: 'git.isGitRepo',\n getCurrentBranch: 'git.getCurrentBranch',\n createWorktree: 'git.createWorktree',\n removeWorktree: 'git.removeWorktree',\n runWorktreeSetupScript: 'git.runWorktreeSetupScript',\n copyIgnoredFiles: 'git.copyIgnoredFiles'\n} as const\n\n// Param schemas come from the SHARED frame contract \u2014 they are NOT re-declared\n// here. Locally-written copies had drifted from what the hub actually sends:\n// `getCurrentBranch` expected `path` (hub sends `repoPath`) and `removeWorktree`\n// expected `repoPath` (hub sends `projectPath`), so both threw a zod error on\n// every routed call. Invisible until worktrees started routing, and the same\n// divergence class as the proc.* `sessionId`/`id` and `isGitRepo` result-key bugs:\n// two sides independently declaring one wire shape.\nconst isGitRepoParams = gitIsGitRepoParamsSchema\nconst getCurrentBranchParams = gitGetCurrentBranchParamsSchema\nconst createWorktreeParams = gitCreateWorktreeParamsSchema\nconst removeWorktreeParams = gitRemoveWorktreeParamsSchema\nconst runWorktreeSetupScriptParams = gitRunWorktreeSetupScriptParamsSchema\nconst copyIgnoredFilesParams = gitCopyIgnoredFilesParamsSchema\n\nconst SETUP_SCRIPT = '.slay/worktree-setup.sh'\nconst SETUP_SCRIPT_TIMEOUT_MS = 5 * 60_000\n\nexport function createGitHandlers(ctx: HandlerContext): HubMethodTable {\n // Read the jail through `ctx` on every call, never captured:\n // `computer.setAllowedRoots` edits it live, and a captured array would keep\n // enforcing the boot-time set long after the user widened it.\n const allow = (candidate: string): string => assertPathAllowed(candidate, ctx.config.allowedRoots)\n\n // Result key is `isGitRepo`, matching `gitIsGitRepoResultSchema` in the SHARED\n // frame contract. It used to be `isRepo`, so the hub's parse threw\n // \"expected boolean, received undefined\" on every routed probe \u2014 and because\n // `isGitRepo` gates worktree creation, that failed task creation outright once\n // worktrees started routing. Same divergence class as the proc.* sessionId/id\n // mismatch: two sides declaring the same wire shape independently.\n async function isGitRepo(rawParams: unknown): Promise<{ isGitRepo: boolean }> {\n const { path } = isGitRepoParams.parse(rawParams)\n const repoPath = allow(path)\n try {\n await execGit(['rev-parse', '--git-dir'], repoPath)\n return { isGitRepo: true }\n } catch {\n return { isGitRepo: false }\n }\n }\n\n async function getCurrentBranch(rawParams: unknown): Promise<{ branch: string | null }> {\n const parsed = getCurrentBranchParams.parse(rawParams)\n const repoPath = allow(parsed.repoPath)\n try {\n const out = await execGit(['branch', '--show-current'], repoPath)\n return { branch: out.trim() || null }\n } catch {\n return { branch: null }\n }\n }\n\n async function createWorktree(rawParams: unknown): Promise<{ ok: true }> {\n const params = createWorktreeParams.parse(rawParams)\n const repoPath = allow(params.repoPath)\n const targetPath = allow(params.worktreePath)\n const args = ['worktree', 'add', targetPath]\n if (params.branch) args.push('-b', params.branch)\n if (params.sourceBranch) args.push(params.sourceBranch)\n await execGit(args, repoPath)\n return { ok: true }\n }\n\n async function removeWorktree(\n rawParams: unknown\n ): Promise<{ branchDeleted?: boolean; branchError?: string }> {\n const params = removeWorktreeParams.parse(rawParams)\n // The shared frame names this `projectPath` (it is the parent repo the worktree\n // is registered in); the local copy called it `repoPath`.\n const repoPath = allow(params.projectPath)\n const worktreePath = allow(params.worktreePath)\n\n // Capture the worktree's branch BEFORE removing it (afterwards the checkout is\n // gone and the name is unrecoverable).\n const removedBranch = await getCurrentBranch({ repoPath: worktreePath })\n .then((r) => r.branch)\n .catch(() => null)\n\n try {\n await execGit(['worktree', 'remove', worktreePath, '--force'], repoPath)\n } catch (err) {\n // If the directory is already gone, prune stale metadata; otherwise fail.\n if (!existsSync(worktreePath)) {\n await execGit(['worktree', 'prune'], repoPath)\n } else {\n throw err\n }\n }\n\n // `branchHint` was a local-only param the hub never sent, so this branch-delete\n // path was dead on every routed call. Resolve the branch from the worktree\n // itself before removing it \u2014 same effect, no phantom parameter.\n if (removedBranch === null) return {}\n const branch = removedBranch.replace(/^refs\\/heads\\//, '').trim()\n if (!branch) return {}\n const repoBranch = (await getCurrentBranch({ repoPath })).branch\n if (branch === repoBranch) {\n return {\n branchDeleted: false,\n branchError: `refusing to delete checked-out branch '${branch}'`\n }\n }\n const result = await execCapture('git', ['branch', '-D', branch], { cwd: repoPath })\n if (result.status === 0) return { branchDeleted: true }\n return {\n branchDeleted: false,\n branchError: result.stderr.trim() || `could not delete branch '${branch}'`\n }\n }\n\n function runWorktreeSetupScript(\n rawParams: unknown\n ): Promise<{ ran: boolean; success?: boolean; output?: string }> {\n const params = runWorktreeSetupScriptParams.parse(rawParams)\n const worktreePath = allow(params.worktreePath)\n const repoPath = allow(params.repoPath)\n\n const scriptPath = resolve(worktreePath, SETUP_SCRIPT)\n if (!existsSync(scriptPath)) return Promise.resolve({ ran: false })\n try {\n accessSync(scriptPath, fsConstants.X_OK)\n } catch {\n try {\n chmodSync(scriptPath, 0o755)\n } catch {\n return Promise.resolve({ ran: false })\n }\n }\n\n // Sanitize the inherited computer env: the setup script gets the user env\n // (PATH/HOME) but none of SlayZone's own infra/secret/identity vars (fail\n // closed on anything unmanifested). The worktree-scoped vars below are the\n // authoritative overlay the script actually needs.\n const env = sanitizeSpawnEnv(process.env)\n env.WORKTREE_PATH = worktreePath\n env.REPO_PATH = repoPath\n env.SOURCE_BRANCH = params.sourceBranch ?? ''\n\n return new Promise((resolvePromise) => {\n const child = spawn(scriptPath, [], {\n cwd: worktreePath,\n stdio: ['ignore', 'pipe', 'pipe'],\n env\n })\n const chunks: string[] = []\n const onData = (data: Buffer): void => {\n const text = data.toString()\n chunks.push(text)\n // Stream progress to the hub over the generic computer event channel.\n ctx.dialer.notify(ComputerNotificationMethods.event, {\n name: 'git.worktreeSetupData',\n payload: { worktreePath, chunk: text }\n })\n }\n child.stdout?.on('data', onData)\n child.stderr?.on('data', onData)\n\n const timeout = setTimeout(() => child.kill('SIGTERM'), SETUP_SCRIPT_TIMEOUT_MS)\n child.on('close', (code) => {\n clearTimeout(timeout)\n resolvePromise({ ran: true, success: code === 0, output: chunks.join('').trim() })\n })\n child.on('error', (err) => {\n clearTimeout(timeout)\n resolvePromise({ ran: true, success: false, output: err.message })\n })\n })\n }\n\n async function copyIgnoredFiles(rawParams: unknown): Promise<{ copied: number }> {\n const params = copyIgnoredFilesParams.parse(rawParams)\n const repoPath = allow(params.repoPath)\n const worktreePath = allow(params.worktreePath)\n\n let relPaths: string[]\n if (params.behavior === 'all') {\n const out = await execGit(\n ['ls-files', '--others', '--ignored', '--exclude-standard', '-z'],\n repoPath\n )\n relPaths = out.split('\\0').filter(Boolean)\n } else {\n relPaths = params.customPaths ?? []\n }\n\n const repoRoot = resolve(repoPath)\n const wtRoot = resolve(worktreePath)\n let copied = 0\n for (const rel of relPaths) {\n const src = resolve(repoPath, rel)\n const dest = resolve(worktreePath, rel)\n // Containment: never copy out of the repo or write outside the worktree.\n if (!isInside(src, repoRoot) || !isInside(dest, wtRoot)) {\n ctx.log('copyIgnoredFiles skipped traversal', { rel })\n continue\n }\n if (!existsSync(src)) continue\n try {\n await mkdir(dirname(dest), { recursive: true })\n // verbatimSymlinks: else relative links (pnpm node_modules) become\n // absolute ones pointing back into the source repo.\n await cp(src, dest, { recursive: true, verbatimSymlinks: true })\n copied += 1\n } catch (err) {\n ctx.log('copyIgnoredFiles copy failed', { rel, error: String(err) })\n }\n }\n return { copied }\n }\n\n return {\n [GitMethods.isGitRepo]: isGitRepo,\n [GitMethods.getCurrentBranch]: getCurrentBranch,\n [GitMethods.createWorktree]: createWorktree,\n [GitMethods.removeWorktree]: removeWorktree,\n [GitMethods.runWorktreeSetupScript]: runWorktreeSetupScript,\n [GitMethods.copyIgnoredFiles]: copyIgnoredFiles\n }\n}\n\n/** True when `child` is `root` itself or nested under it. */\nfunction isInside(child: string, root: string): boolean {\n const c = resolve(child)\n return c === root || c.startsWith(root + sep)\n}\n", "/**\n * The typed env-var scope manifest + the central spawn-env sanitizer.\n *\n * WHY: one desktop client hosts the hub sidecar + a local computer + user\n * terminals, all forked from the SAME `process.env`. Every spawn used\n * `{...process.env}` with no allowlist, so a var set high in the tree (e.g. the\n * computer's `SLAYZONE_HUB_ADDRESS`) silently leaked DOWN into a user terminal,\n * where a different consumer (`slay` CLI) reinterpreted it and hard-exited. An\n * ALLOWLIST can't work at these boundaries \u2014 the hub/computer ARE the parents of\n * user terminals, which legitimately need the full user env (PATH/HOME/\n * toolchains). So the mechanism is a DENYLIST derived from this manifest.\n *\n * FAIL CLOSED: the strip-list is derived from the scope tags, NOT hand-written.\n * Only a var explicitly tagged `global` survives; every other SLAYZONE_* \u2014\n * including one not yet in the manifest \u2014 is stripped. So adding a new secret to\n * the manifest auto-strips it, and forgetting to add a new var at all ALSO\n * strips it (safe default). The only way to leak a var into a terminal is the\n * deliberate `global` tag.\n *\n * Lean leaf (node builtins only, like hub-addr.ts) so the computer bundle can\n * import it via the `@slayzone/platform/env-manifest` subpath WITHOUT pulling the\n * platform barrel (which references better-sqlite3 + the shell/cli-install graph).\n *\n * @module platform/env-manifest\n */\n\n/**\n * The scope of a SlayZone env var, deciding whether it survives into a spawned\n * user-terminal / agent child:\n * - `global` \u2014 same app-wide, safe to inherit verbatim. KEEP.\n * - `infra` \u2014 SlayZone process wiring a terminal must not reinterpret\n * (hub address, ports, mode, dev toggles). STRIP.\n * - `secret` \u2014 credentials/tokens. Must never reach a terminal. STRIP.\n * - `identity` \u2014 per-task/agent identity. STRIP from the inherited base; the\n * caller's per-spawn overlay (buildMcpEnv) re-adds the CORRECT\n * value, so a terminal for task B never inherits task A's id and\n * a taskless shell has it ABSENT rather than stale.\n */\nexport type EnvScope = 'global' | 'infra' | 'secret' | 'identity'\n\n/**\n * Every `SLAYZONE_*` var the product reads/writes at runtime, tagged by scope.\n * NOT included (intentionally): compile-time `define` constants (`__\u2026__`\n * forms \u2014 SLAYZONE_PROFILE/CHROMIUM_PROD/REACT_DEV read only at build config\n * time), JS const names, script-only comment markers (SLAYZONE_NOTIFY_VERSION),\n * and retired/inert/test-only vars (SLAYZONE_HUB_URL, HUB_HOST, HUB_PORT,\n * HUB_PUBLIC_URL \u2014 all folded into HUB_ADDRESS/HUB_PUBLIC_ADDRESS; MODE \u2014 replaced\n * by the per-hub switches below, a leftover value is ignored; STORE_DIR,\n * DB_DIR, DB_PATH \u2014 the DB file DERIVES from SLAYZONE_ROOT + SLAYZONE_DEV and is\n * not overridable; ALLOW_PLAINTEXT_CREDENTIALS \u2014 plaintext fallback now DERIVES\n * from cipher availability, see integrations/server/credentials.ts; AGENT_MODE,\n * RUNNER_CONFIG, RUNNER_TRANSPORT_BASE_URL, RUNNER_ALLOWED_ROOTS, RUNNER_NAME,\n * RUNNER_CREDENTIALS_DIR, SEED_DEMO). An\n * unlisted SLAYZONE_* is stripped by default (fail closed), so omissions are\n * safe, never leaky \u2014 which is also why a RETIRED name needs no entry: a stale\n * inherited value is stripped by the same default that covers a brand-new var.\n */\nexport const ENV_MANIFEST: Record<string, EnvScope> = {\n // --- secret: credentials/tokens, never in a terminal ---\n SLAYZONE_HUB_TOKEN: 'secret',\n // HMAC signing key for ALL of hub-auth (better-auth's session/cookie signer AND\n // the computer enroll/api-key credentials) \u2014 hence `HUB_AUTH`, not the former\n // `HUB_COMPUTER_TRANSPORT_SECRET`, which named just one of its consumers. Rule 2\n // (name by what the value IS). `_SECRET` = a key you HOLD and sign with, vs\n // `_TOKEN` = a bearer you PRESENT (SLAYZONE_HUB_TOKEN above).\n SLAYZONE_HUB_AUTH_SECRET: 'secret',\n // Hub-scoped by VALUE: the hub mints it, and it embeds the hub's url, the hub's\n // TLS cert fingerprint, and a secret verified against the hub's `join_tokens`\n // row. `mintJoinToken` binds it to NO computer (computer_id stays NULL until\n // redemption), so any computer can redeem any unused token \u2014 there is no computer in\n // the value to name. Rule 2 (name by what the value IS, not who reads it).\n SLAYZONE_HUB_JOIN_TOKEN: 'secret',\n // Entra OIDC client secret (SSO). Env only \u2014 never read from hub.config.json,\n // never logged, never in a terminal.\n SLAYZONE_HUB_SSO_CLIENT_SECRET: 'secret',\n // Per-boot bearer the desktop's `/cap` listener requires on every connection\n // (desktop-bridge-server.ts `verifyClient`). Loopback is NOT trusted there \u2014\n // the threat this closes is another loopback process finding the port \u2014 so\n // this is a real credential, `secret`-scoped like the two above it.\n SLAYZONE_DESKTOP_BRIDGE_TOKEN: 'secret',\n // The pre-rename `SLAYZONE_RUNNER_JOIN_TOKEN` is deliberately UNLISTED: it is\n // retired, not aliased. It never shipped (the published computer betas read\n // `SLAYZONE_JOIN_TOKEN`), so no operator env carries it and there is nothing to\n // keep working. Unlisted \u21D2 the fail-closed default strips it, same as every\n // other retired name in this rename sweep.\n\n // --- infra: SlayZone wiring a terminal must not reinterpret ---\n // The hub to CONNECT to, host[:port] (computer, `slay`); the scheme derives from\n // the host (loopback \u2192 http/ws, else https/wss). A hub no longer reads this name:\n // it LISTENS on SLAYZONE_HUB_LISTEN_ADDRESS, and a hub that still gets the old\n // name refuses to boot. Stripping both here keeps a terminal's dial address from\n // ever being mistaken for another process's listen address.\n SLAYZONE_HUB_ADDRESS: 'infra',\n SLAYZONE_HUB_LISTEN_ADDRESS: 'infra', // hub-only; where the hub listens\n SLAYZONE_HUB_PUBLIC_ADDRESS: 'infra', // hub-only; how other machines reach it, written into join tokens\n // Per-hub switches (0|1) replacing SLAYZONE_MODE. Infra: they describe THIS hub\n // process, so a task terminal must not inherit them (a hub started from one would\n // otherwise pick up its parent's switches by accident).\n SLAYZONE_HUB_REQUIRE_LOGIN: 'infra',\n SLAYZONE_HUB_ENABLE_PASSWORD: 'infra',\n SLAYZONE_HUB_ENABLE_SSO: 'infra',\n SLAYZONE_HUB_ENABLE_PROCESSES: 'infra',\n SLAYZONE_HUB_ENABLE_INTEGRATIONS: 'infra',\n SLAYZONE_HUB_SSO_TENANT_ID: 'infra',\n SLAYZONE_HUB_SSO_CLIENT_ID: 'infra',\n // Operator-facing hub name (`slay hub ls`/`stop` address a hub by it). Infra,\n // not global: it identifies THIS hub process, so inheriting it into a task\n // terminal \u2014 which may target a different hub entirely \u2014 would mislabel.\n SLAYZONE_HUB_NAME: 'infra',\n SLAYZONE_DESKTOP_BRIDGE_ADDRESS: 'infra', // sidecar\u2192desktop capability bridge + REST proxy\n SLAYZONE_SUPERVISED: 'infra', // \"started by the desktop app\" flag\n SLAYZONE_USER_DATA_DIR: 'infra', // Playwright Electron userData redirect\n SLAYZONE_SIDECAR_HOT_RESTART: 'infra',\n SLAYZONE_BOOT_LOG_PATH: 'infra',\n SLAYZONE_DEBUG_BOOT: 'infra',\n SLAYZONE_REGISTER_DEV_PROTOCOL: 'infra',\n SLAYZONE_NONINTERACTIVE: 'infra',\n // Historical opt-IN, now a NO-OP: e2e runs computer-ON by default, so the boot\n // gate no longer reads this. Kept manifested because specs still set it to\n // document \"this spec wants a computer\" (an unmanifested var would be stripped\n // by sanitizeSpawnEnv, fail-closed, and read as a silent typo).\n SLAYZONE_E2E_ALLOW_COMPUTER: 'infra',\n // Opt-OUT, and the only lever that changes behavior now: set by the specs that\n // must boot computer-less (remote-mode, sidecar-crash, and the \"hub accepts\n // computers with none spawned\" contract test).\n SLAYZONE_E2E_NO_COMPUTER: 'infra',\n SLAYZONE_E2E_INSTALL_HOOKS: 'infra',\n // Redirects the MACHINE-WIDE ~/.slayzone (hooks/, bin/) \u2014 the files shared by\n // every SlayZone process on the box, which deliberately do NOT follow\n // SLAYZONE_ROOT. Sandbox redirect for tests, same role as the per-provider\n // overrides below. `infra`: a spawned terminal must never inherit it, or an\n // agent would resolve a different notify.sh than the one wired into its hooks.\n SLAYZONE_MACHINE_DIR: 'infra',\n // per-provider config/hook/plugin path overrides (test/sandbox redirects)\n SLAYZONE_CLAUDE_SETTINGS_PATH: 'infra',\n SLAYZONE_GEMINI_SETTINGS_PATH: 'infra',\n SLAYZONE_CODEX_HOOKS_PATH: 'infra',\n SLAYZONE_ANTIGRAVITY_HOOKS_PATH: 'infra',\n SLAYZONE_OPENCODE_PLUGIN_PATH: 'infra',\n\n // --- identity: per-task/agent; overlay re-adds the correct value per spawn ---\n SLAYZONE_TASK_ID: 'identity',\n SLAYZONE_PROJECT_ID: 'identity',\n SLAYZONE_SESSION_ID: 'identity',\n SLAYZONE_AGENT_ID: 'identity',\n SLAYZONE_AGENT_HOOK_URL: 'identity',\n // Pairs with _HOOK_URL (where to post / who is posting). The pre-v4 name\n // `SLAYZONE_HOOK_CONTEXT` is RETIRED and deliberately unlisted: unlisted =\n // stripped (fail closed), and the old-name value an older release channel's app\n // supplies rides its OWN per-spawn overlay (applied after sanitizeSpawnEnv), so\n // notify.sh v4's fallback read still sees it. A manifest entry would only let a\n // stale inherited value survive.\n SLAYZONE_AGENT_HOOK_CONTEXT: 'identity',\n\n // --- global: same app-wide, safe to inherit verbatim ---\n SLAYZONE_RELEASE_CHANNEL: 'global', // attribution-only (hook envelope channel)\n // INSTALL IDENTITY \u2014 which SlayZone install this process tree belongs to, not\n // which task/session. A child MUST resolve the SAME install as its parent: the\n // `slay` CLI derives its DB from BOTH (getStorageDir() reads ROOT; the\n // filename is `slayzone{.dev}.sqlite` per DEV \u2014 apps/cli/src/db.ts getDbPath).\n // Strip either and a bare `slay` in a dev-app task terminal exits 1\n // (\"Database not found \u2026 Re-run with --dev\"), and under an isolated e2e ROOT a\n // child would escape the sandbox to the real ~/.slayzone. Neither is a\n // credential and neither can be reinterpreted as a different kind of target\n // (unlike a hub address), so both inherit verbatim.\n //\n // ROOT is NOT covered by the identity overlay: buildMcpEnv sets it only inside\n // setHookIdentity(), gated on a hook-capable agent mode \u2014 a plain `terminal`\n // PTY, a non-hook agent, or a pre-warmed pool spawn gets no overlay at all.\n SLAYZONE_ROOT: 'global',\n SLAYZONE_DEV: 'global'\n}\n\n/**\n * Non-`SLAYZONE_`-prefixed keys that are still SlayZone INFRA and must be\n * stripped from a terminal child. These wire the spawned sidecar/computer to the\n * Node runtime + native modules; a user terminal must inherit none of them\n * (e.g. `ELECTRON_RUN_AS_NODE=1` would make a nested Electron launch run as bare\n * Node; `PLAYWRIGHT=1` would flip in-app test-only branches).\n */\nexport const NON_PREFIXED_INFRA = new Set<string>([\n 'ELECTRON_RUN_AS_NODE',\n 'NODE_PATH',\n 'PLAYWRIGHT'\n])\n\n/**\n * Produce the base env for a spawned USER-TERMINAL / agent child: keep the\n * user's own environment (PATH/HOME/toolchains) and any `global`-scoped SlayZone\n * var; strip every infra/secret/identity var, every unmanifested `SLAYZONE_*`\n * (fail closed), and every {@link NON_PREFIXED_INFRA} key. Values that are not\n * strings (an unset key present as `undefined`) are dropped, so the result is a\n * clean `Record<string,string>` ready for `child_process`/`node-pty`.\n *\n * The caller layers its per-spawn overlay (identity via buildMcpEnv, adapter\n * env, TERM/COLORTERM, etc.) AFTER this \u2014 so identity vars stripped here are\n * re-added with the correct per-spawn value, never the parent's stale one.\n *\n * Pure: never mutates `base`.\n */\nexport function sanitizeSpawnEnv(base: NodeJS.ProcessEnv): Record<string, string> {\n const out: Record<string, string> = {}\n for (const [key, value] of Object.entries(base)) {\n if (typeof value !== 'string') continue\n if (NON_PREFIXED_INFRA.has(key)) continue\n if (key.startsWith('SLAYZONE_')) {\n // Fail closed: only an explicit `global` tag survives. infra/secret/\n // identity AND any unmanifested SLAYZONE_* are dropped.\n if (ENV_MANIFEST[key] === 'global') out[key] = value\n continue\n }\n out[key] = value\n }\n return out\n}\n", "/**\n * Minimal async subprocess helpers for the computer's git handlers. A pared-down\n * mirror of the worktrees domain's `exec-async.ts` (`execAsync`/`execGit`) with\n * the electron/diagnostics coupling removed, so the computer stays a lightweight\n * standalone bundle.\n *\n * @module computer/handlers/exec\n */\n\nimport { spawn } from 'node:child_process'\n\nexport interface ExecResult {\n stdout: string\n stderr: string\n status: number | null\n}\n\n/** Run a subprocess, capturing stdout/stderr. Never rejects on non-zero exit. */\nexport function execCapture(\n command: string,\n args: string[],\n opts: { cwd?: string; timeoutMs?: number; env?: Record<string, string> } = {}\n): Promise<ExecResult> {\n return new Promise((resolve) => {\n const child = spawn(command, args, {\n ...(opts.cwd ? { cwd: opts.cwd } : {}),\n ...(opts.env ? { env: opts.env } : {}),\n stdio: ['ignore', 'pipe', 'pipe']\n })\n const stdout: string[] = []\n const stderr: string[] = []\n child.stdout.on('data', (d: Buffer) => stdout.push(d.toString()))\n child.stderr.on('data', (d: Buffer) => stderr.push(d.toString()))\n\n let timer: ReturnType<typeof setTimeout> | undefined\n if (opts.timeoutMs) {\n timer = setTimeout(() => child.kill('SIGTERM'), opts.timeoutMs)\n }\n\n child.on('close', (code) => {\n if (timer) clearTimeout(timer)\n resolve({ stdout: stdout.join(''), stderr: stderr.join(''), status: code })\n })\n child.on('error', (err) => {\n if (timer) clearTimeout(timer)\n resolve({ stdout: '', stderr: err.message, status: 1 })\n })\n })\n}\n\n/** Run `git <args>` in `cwd`, rejecting on non-zero exit with git's stderr. */\nexport async function execGit(args: string[], cwd: string): Promise<string> {\n const result = await execCapture('git', args, { cwd })\n if (result.status !== 0) {\n const msg = result.stderr.trim() || `git command failed: git ${args.join(' ')}`\n throw new Error(msg)\n }\n return result.stdout\n}\n", "/**\n * Computer-side child-process exec handlers. Spawns non-pty processes on the computer\n * and streams their stdout/stderr back to the hub as `proc.data` notifications,\n * emitting `proc.exit` on completion. Sessions are tracked in a Map keyed by the\n * hub-assigned `sessionId` and cleaned up on exit.\n *\n * The frame contract is the SHARED one (`@slayzone/computer-transport/shared`) \u2014\n * imported, not mirrored. It used to be re-declared locally with `id` as the key\n * while the hub sent `sessionId`, so every routed `proc.spawn` threw a zod error\n * and every `proc.data` notification was dropped on validation. That went\n * unnoticed because `ProcSpawnSpec.computerId` was hardcoded null, so the routing\n * backend always fell through to a local spawn. Importing the schemas makes that\n * divergence unrepresentable.\n *\n * stdout is SEQUENCED through a per-session {@link RingBuffer} (same as\n * `handlers/pty.ts`): the hub detects gaps and replays via\n * `proc.getBufferSince`. Required because a routed chat agent's stdout is an\n * NDJSON protocol stream \u2014 one dropped or reordered chunk desynchronizes the\n * driver. stderr is diagnostic and streamed unsequenced.\n *\n * stdin is PIPED and writable via `proc.write`, which is what makes this channel\n * usable by a bidirectional agent protocol at all.\n *\n * The working directory (`cwd`), when supplied, passes the\n * {@link assertPathAllowed} containment guard. The command binary itself is NOT\n * root-constrained (it typically lives in /usr/bin etc.); containment is\n * enforced on the directory the process runs in.\n *\n * @module computer/handlers/proc\n */\n\nimport { type ChildProcess, spawn } from 'node:child_process'\nimport { buildShellInvocation } from '@slayzone/platform'\nimport { sanitizeSpawnEnv } from '@slayzone/platform/env-manifest'\nimport {\n HubToComputerMethods,\n procGetBufferSinceParamsSchema,\n type ProcListResult,\n procKillParamsSchema,\n procSpawnParamsSchema,\n procWriteParamsSchema,\n ComputerNotificationMethods\n} from '@slayzone/computer-transport/shared'\nimport { assertPathAllowed } from '../config'\nimport { RingBuffer } from '../ring-buffer'\nimport type { HandlerContext, HubMethodTable } from './types'\n\n/** Matches the pty handler's per-session buffer cap (750 KiB). */\nconst MAX_BUFFER_SIZE = 750 * 1024\n\n/** Re-exported for tests + main.ts wiring. Values come from the shared contract. */\nexport const ProcMethods = {\n procSpawn: HubToComputerMethods.procSpawn,\n procKill: HubToComputerMethods.procKill,\n procWrite: HubToComputerMethods.procWrite,\n procGetBufferSince: HubToComputerMethods.procGetBufferSince,\n procList: HubToComputerMethods.procList\n} as const\n\nexport const ProcNotifications = {\n procData: ComputerNotificationMethods.procData,\n procExit: ComputerNotificationMethods.procExit\n} as const\n\ninterface ProcSession {\n child: ChildProcess\n /** stdout only \u2014 the replayable stream. */\n buffer: RingBuffer\n}\n\nexport interface ProcHandlers {\n handlers: HubMethodTable\n /** Kill every live process (called on computer shutdown). */\n disposeAll(): void\n}\n\n/**\n * `getProjectPaths` lets a cwd-less spawn resolve its own directory \u2014 the hub no\n * longer knows where a project lives on this machine. See `pty.ts`.\n */\nexport function createProcHandlers(\n ctx: HandlerContext,\n getProjectPaths?: () => { get(projectId: string): { path: string } | null } | null\n): ProcHandlers {\n const procs = new Map<string, ProcSession>()\n\n function buildEnv(overrides?: Record<string, string>): Record<string, string> {\n // Sanitize the inherited computer env through the shared manifest: keep the\n // user env (PATH/HOME) but strip every SlayZone infra/secret/identity var\n // (and any unmanifested SLAYZONE_*, fail closed) so a computer-hosted process\n // never inherits the computer's own creds/wiring. Hub-passed `overrides` layer\n // on top as the authoritative per-spawn values.\n const merged: Record<string, string> = overrides\n ? { ...sanitizeSpawnEnv(process.env), ...overrides }\n : sanitizeSpawnEnv(process.env)\n // Same override channel as handlers/pty.ts: force the agent's lifecycle hook\n // to the computer's OWN loopback relay (which forwards to the hub over the\n // authed ws channel) and strip any hub bearer the hub baked into `overrides`.\n // Without this a computer-hosted CHAT agent would post its hooks at a hub URL\n // that does not resolve from this machine \u2014 no spinner, no unread dot \u2014 and\n // could carry a hub token into a subprocess env.\n if (ctx.agentHookUrl) {\n merged.SLAYZONE_AGENT_HOOK_URL = ctx.agentHookUrl\n delete merged.SLAYZONE_HUB_TOKEN\n }\n return merged\n }\n\n function procSpawn(rawParams: unknown): { pid: number | null } {\n const params = procSpawnParamsSchema.parse(rawParams)\n // An explicit cwd wins (a worktree, or a task.base_dir the user set). Else\n // resolve the project's checkout here. Neither \u2192 undefined, which is the\n // pre-existing behaviour for a process that genuinely has no directory.\n const resolved =\n params.cwd ??\n (params.projectId ? getProjectPaths?.()?.get(params.projectId)?.path : undefined)\n const cwd = resolved ? assertPathAllowed(resolved, ctx.config.allowedRoots) : undefined\n\n // Replace any pre-existing process with the same sessionId.\n const existing = procs.get(params.sessionId)\n if (existing) {\n try {\n existing.child.kill()\n } catch {\n // ignore\n }\n procs.delete(params.sessionId)\n }\n\n // Shell wrapping is OPT-IN per spawn (`params.shell`), resolved with THIS\n // machine's shell \u2014 the hub's `$SHELL` may not exist here. A process-domain\n // spawn sets it (its command is a shell string like `pnpm dev`); an agent\n // spawn does not, so its resolved binary + argv reach execve untouched and a\n // missing binary still reports ENOENT via `error` (null exitCode + message)\n // rather than being flattened to a shell's exit 127.\n const invocation = params.shell\n ? buildShellInvocation(params.command)\n : { file: params.command, args: params.args ?? [] }\n const child = spawn(invocation.file, invocation.args, {\n ...(cwd ? { cwd } : {}),\n env: buildEnv(params.env),\n // stdin PIPED (was 'ignore') so `proc.write` can reach the child.\n stdio: ['pipe', 'pipe', 'pipe']\n })\n const buffer = new RingBuffer(MAX_BUFFER_SIZE)\n const session: ProcSession = { child, buffer }\n procs.set(params.sessionId, session)\n\n // Emit proc.exit at most once, and only for the CURRENTLY-tracked process\n // for this sessionId. This dedupes the error+close double-fire on a failed\n // spawn (ENOENT emits both) and prevents a superseded process from tearing\n // down its replacement.\n const settle = (payload: Record<string, unknown>): void => {\n if (procs.get(params.sessionId) !== session) return\n procs.delete(params.sessionId)\n ctx.dialer.notify(ProcNotifications.procExit, { sessionId: params.sessionId, ...payload })\n }\n\n child.stdout?.on('data', (d: Buffer) => {\n if (procs.get(params.sessionId) !== session) return\n const data = d.toString()\n // Buffer + stream the SAME bytes under the same seq: the hub's demux keeps\n // whichever copy of a seq arrives first (live or backfilled) and emits it\n // once, so any per-seq divergence would make output depend on timing.\n const seq = buffer.append(data)\n ctx.dialer.notify(ProcNotifications.procData, {\n sessionId: params.sessionId,\n seq,\n stream: 'stdout',\n data\n })\n })\n child.stderr?.on('data', (d: Buffer) => {\n if (procs.get(params.sessionId) !== session) return\n // Unsequenced: stderr is diagnostic, never protocol, and is not replayable.\n ctx.dialer.notify(ProcNotifications.procData, {\n sessionId: params.sessionId,\n stream: 'stderr',\n data: d.toString()\n })\n })\n child.on('close', (code, signal) => {\n settle({\n exitCode: typeof code === 'number' ? code : null,\n signal: signal != null ? String(signal) : null\n })\n })\n child.on('error', (err) => {\n settle({ exitCode: null, signal: null, error: err.message })\n })\n\n ctx.log('proc spawned', {\n sessionId: params.sessionId,\n pid: child.pid,\n command: params.command\n })\n return { pid: child.pid ?? null }\n }\n\n function procKill(rawParams: unknown): { ok: true } {\n const params = procKillParamsSchema.parse(rawParams)\n const session = procs.get(params.sessionId)\n if (!session) {\n // Idempotent: the process may already have exited (network race).\n ctx.log('proc kill on unknown session', { sessionId: params.sessionId })\n return { ok: true }\n }\n try {\n session.child.kill((params.signal as NodeJS.Signals | undefined) ?? 'SIGTERM')\n } catch (err) {\n ctx.log('proc kill failed', { sessionId: params.sessionId, error: String(err) })\n }\n return { ok: true }\n }\n\n function procWrite(rawParams: unknown): { ok: true } {\n const params = procWriteParamsSchema.parse(rawParams)\n const session = procs.get(params.sessionId)\n if (!session) {\n ctx.log('proc write on unknown session', { sessionId: params.sessionId })\n return { ok: true }\n }\n try {\n session.child.stdin?.write(params.data)\n } catch (err) {\n // A dead pipe surfaces via `close`/`error` \u2192 proc.exit; nothing to add here.\n ctx.log('proc write failed', { sessionId: params.sessionId, error: String(err) })\n }\n return { ok: true }\n }\n\n function procGetBufferSince(rawParams: unknown): {\n frames: Array<{ seq: number; data: string }>\n } {\n const params = procGetBufferSinceParamsSchema.parse(rawParams)\n const session = procs.get(params.sessionId)\n if (!session) return { frames: [] }\n const frames = session.buffer\n .getChunksSince(params.seq)\n .map((c) => ({ seq: c.seq, data: c.data }))\n return { frames }\n }\n\n /**\n * Every live child process this computer still holds, for hub reattach after a\n * dropped connection. The `proc.list` twin of the pty handler's `list` \u2014 the\n * computer is the authority on what survived, the hub's registry is only a\n * belief about it.\n */\n function procList(): ProcListResult {\n const sessions: ProcListResult['sessions'] = []\n for (const [sessionId, session] of procs) {\n sessions.push({\n sessionId,\n ...(typeof session.child.pid === 'number' ? { pid: session.child.pid } : {}),\n seq: session.buffer.getCurrentSeq()\n })\n }\n return { sessions }\n }\n\n function disposeAll(): void {\n for (const [sessionId, session] of procs) {\n try {\n session.child.kill()\n } catch {\n // ignore\n }\n ctx.log('proc disposed on shutdown', { sessionId })\n }\n procs.clear()\n }\n\n const handlers: HubMethodTable = {\n [ProcMethods.procSpawn]: procSpawn,\n [ProcMethods.procKill]: procKill,\n [ProcMethods.procWrite]: procWrite,\n [ProcMethods.procGetBufferSince]: procGetBufferSince,\n [ProcMethods.procList]: procList\n }\n\n return { handlers, disposeAll }\n}\n", "export {\n getStateDir,\n getSlayzoneHomeDir,\n getSlayzoneReleaseChannel,\n getSupervisedRoot,\n getClientRoot,\n type SlayzoneSupervisedRole,\n getMachineSlayzoneDir,\n getHooksDir,\n getSlayzoneBinDir,\n getClaudeSettingsPath,\n getGeminiSettingsPath,\n getCodexHooksPath,\n getAntigravityHooksPath,\n getOpencodePluginPath\n} from './dirs'\nexport {\n ensureDataRoot,\n getStorageDir,\n getTrpcPort,\n getServerHost,\n bindInHubPortBlock,\n HUB_PORT_BLOCK,\n HUB_DYNAMIC_PORT_RANGE,\n SIDECAR_FIXED_PORT\n} from './paths'\n// The per-hub switches that replaced SLAYZONE_MODE. Also the lean\n// `@slayzone/platform/hub-switches` subpath.\nexport {\n HUB_SWITCH_ENV,\n HUB_SWITCH_DEFAULTS,\n HUB_SSO_ENV,\n HUB_ADDRESS_ENV,\n LEGACY_HUB_LISTEN_ENV,\n HUB_ALLOWED_WEB_ORIGINS_ENV,\n HUB_PROCESS_ENV,\n HubSwitchValueError,\n parseSwitchValue,\n resolveHubSwitches,\n resolveHubSso,\n isHubLoginRequired,\n type HubSwitchKey,\n type HubSwitches,\n type HubSsoSettings\n} from './hub-switches'\n// Multi-hub discovery. Also available as the lean `@slayzone/platform/hub-discovery`\n// subpath \u2014 prefer that from a bundle that must not pull this barrel.\nexport { discoverHubs, findHub, type DiscoveredHub, type DiscoverOptions } from './hub-discovery'\nexport {\n ENV_MANIFEST,\n NON_PREFIXED_INFRA,\n sanitizeSpawnEnv,\n type EnvScope\n} from './env-manifest'\nexport {\n createDeviceStatusQueryStripper,\n stripDeviceStatusQueries,\n stripDeviceStatusResponses,\n type DeviceStatusQueryStripper\n} from './device-status-queries'\nexport {\n assertLoopbackBind,\n hubUrlFromAddr,\n isBareAuthority,\n isLoopbackAuthority,\n isLoopbackPeer,\n parseHubAddress,\n LOOPBACK_HOSTS,\n type HubBindAddress\n} from './hub-addr'\nexport { writeFileIfChanged, updateFileAtomically } from './fs-utils'\nexport {\n migrateXdgIfNeeded,\n migrateCliBinIfNeeded,\n type MigrationResult,\n type CliMigrationResult\n} from './migrations'\nexport {\n installCli,\n installCliSync,\n checkCliInstalled,\n getCliBinTarget,\n getManualInstallHint,\n type CliInstallResult\n} from './cli-install'\nexport {\n DB_PRAGMAS,\n getDbName,\n type SlayzoneDb,\n type PreparedBridge,\n type BatchOp,\n type RunResult\n} from './db'\nexport {\n type TxnRegistry,\n type TxnSigOf,\n type TxnName,\n type TxnParams,\n type TxnResult\n} from './txn-registry-map'\nexport {\n setShellOverride,\n getShellOverride,\n shellExists,\n defaultShellForPlatform,\n resolveUserShell,\n getDefaultShell,\n getShellStartupArgs,\n quoteForShell,\n buildExecCommand,\n buildShellInvocation\n} from './shell'\n// Re-export so main-process code can pull URL helpers from the main barrel.\n// Renderer code MUST import from '@slayzone/platform/slz-file-url' to avoid\n// pulling node:fs into the browser bundle.\nexport {\n SLZ_FILE_HOST,\n SLZ_FILE_PREFIX,\n toSlzFileUrl,\n fileUrlToSlzFileUrl,\n slzFileUrlToFileUrl\n} from './slz-file-url'\nexport { FORCED_HTML_THEME_CSS, type ForcedHtmlTheme } from './html-theme-css'\nexport {\n withResultDedup,\n isIpcUnchangedSentinel,\n IPC_UNCHANGED_SENTINEL,\n type IpcUnchangedSentinel,\n type SenderLifecycle\n} from './ipc-dedup'\n", "import { mkdirSync } from 'node:fs'\nimport { getSlayzoneHomeDir } from './dirs'\nimport { LOOPBACK_HOSTS, parseHubAddress } from './hub-addr'\nimport { HUB_ADDRESS_ENV } from './hub-switches'\n\nlet warnedHost: string | null = null\n\n/**\n * The single storage dir for all SlayZone state (DB, artifacts, backups, logs,\n * diagnostics) \u2014 `<ROOT>` itself, flat, no `storage/` subfolder. `SLAYZONE_ROOT`\n * is the ONLY env var in this chain; there is deliberately no dir- or\n * file-pointing override to thread across processes \u2014 each process derives the\n * same path from ROOT.\n *\n * Flat by design: a root belongs to exactly one role (hub or computer, standalone\n * or channel-scoped), so a `storage/` layer separating \"this role's data\" from\n * \"everything else in the root\" has nothing left to separate from \u2014 everything\n * under `<ROOT>` already is this role's own storage. Kept the function name\n * (documents intent at call sites) even though it's no longer a distinct\n * subdirectory. NOTE: this flattening is NOT migrated for existing standalone\n * installs \u2014 see `channel-storage-migration.ts` for the supervised-only\n * migration and the plan's explicit breaking-change note for standalone.\n *\n * getSlayzoneHomeDir resolves ROOT (`SLAYZONE_ROOT` > platform home); the\n * standalone entrypoints seed `SLAYZONE_ROOT=cwd`, the desktop app seeds it to\n * a channel-scoped root via `getSupervisedRoot`.\n */\nexport function getStorageDir(): string {\n return getSlayzoneHomeDir()\n}\n\n/**\n * Root for all SlayZone state \u2014 `getStorageDir()` with a mkdir side-effect so\n * better-sqlite3 finds the dir. The `ensure` prefix flags the side-effect.\n */\nexport function ensureDataRoot(): string {\n const dir = getStorageDir()\n mkdirSync(dir, { recursive: true })\n return dir\n}\n\n/**\n * Fixed per-environment sidecar ports (plans/sidecar-staleness.md, Phase 4).\n *\n * One supervised sidecar per environment ever runs at a time (packaged app:\n * Electron single-instance-lock; dev: one interactive `pnpm dev`; e2e: single\n * Playwright worker, `fullyParallel: false` \u2014 see playwright.config.ts). A\n * fixed port per environment turns \"which sidecar is the CLI even talking to\"\n * from a DB-write race into a known constant, and turns a stray second\n * instance into a loud `EADDRINUSE` at bind time instead of silent ambiguity\n * (unlike a lock FILE, a bound TCP port can't go stale \u2014 a dead process can't\n * hold it, so bind failure always means something else is genuinely alive).\n * IANA dynamic/private range (49152\u201365535) \u2014 no registered-service collision.\n */\nexport const SIDECAR_FIXED_PORT = {\n prod: 51100,\n dev: 51101,\n test: 51102\n} as const\n\n/**\n * The port range every SlayZone hub binds within\n * (plans/hub-lifecycle-and-discovery.md, Phase 3).\n *\n * Multi-hub discovery (`slay hub ls`) works by probing loopback ports for a\n * `/health` answer \u2014 no pidfile, no registry, nothing that can go stale. That\n * only works if a hub is FINDABLE, so hubs draw from this known block instead of\n * letting the OS assign an arbitrary ephemeral port. Still inside IANA's\n * dynamic/private range (49152\u201365535).\n */\nexport const HUB_PORT_BLOCK = { start: 51100, end: 51199 } as const\n\n/**\n * The sub-range a hub picks from when no port was configured.\n *\n * Starts ABOVE {@link SIDECAR_FIXED_PORT} so a standalone hub can never squat\n * the port a supervised sidecar expects to bind \u2014 the supervised ports are fixed\n * precisely so a bind failure is loud and unambiguous, which a squatter would\n * turn back into a mystery. 51103\u201351109 stay spare for future fixed roles.\n */\nexport const HUB_DYNAMIC_PORT_RANGE = { start: 51110, end: 51199 } as const\n\n/**\n * Bind `server` to the first free port in the hub block, returning that port.\n *\n * Walks the range sequentially, treating `EADDRINUSE` as \"taken, try the next\"\n * and anything else as a real failure to propagate (a bad bind host would\n * otherwise burn ~90 pointless retries). Exhausting the range throws, naming the\n * range \u2014 with no free port there is no correct fallback: an OS-assigned port\n * would boot a hub that discovery can never find.\n *\n * Sequential rather than parallel-probe-then-bind on purpose: probing and binding\n * as one step leaves no window for another process to take the port in between.\n *\n * @param server any `net`/`http`/`https` server (only listen/close/error used).\n * @param host the bind host, as resolved by {@link getServerHost}.\n * @param range defaults to {@link HUB_DYNAMIC_PORT_RANGE}.\n */\nexport async function bindInHubPortBlock(\n server: {\n listen: (port: number, host: string, cb: () => void) => unknown\n once: (event: string, cb: (err: Error) => void) => unknown\n off: (event: string, cb: (err: Error) => void) => unknown\n },\n host: string,\n range: { start: number; end: number } = HUB_DYNAMIC_PORT_RANGE\n): Promise<number> {\n for (let port = range.start; port <= range.end; port++) {\n const bound = await new Promise<boolean>((resolve, reject) => {\n const onError = (err: Error): void => {\n server.off('error', onError)\n if ((err as NodeJS.ErrnoException).code === 'EADDRINUSE') resolve(false)\n else reject(err)\n }\n server.once('error', onError)\n server.listen(port, host, () => {\n server.off('error', onError)\n resolve(true)\n })\n })\n if (bound) return port\n }\n throw new Error(\n `[slayzone] no free port in the hub block ${range.start}-${range.end} on ${host} \u2014 ` +\n `every port is taken. Stop an unused hub (\\`slay hub ls\\`) or set ` +\n `SLAYZONE_HUB_LISTEN_ADDRESS to a specific port.`\n )\n}\n\n/**\n * The port the hub should BIND, from `SLAYZONE_HUB_LISTEN_ADDRESS` (`host[:port]`), or\n * undefined when the var is unset/malformed or names no port. Callers fall back\n * to a stored or OS-assigned port when undefined.\n *\n * PORT GRAMMAR: a bare host (`127.0.0.1`) names no port \u2192 undefined \u2192 the caller\n * lets the OS assign one. An explicit `:0` says the same outright and returns 0.\n */\nexport function getTrpcPort(): number | undefined {\n return parseHubAddress(process.env[HUB_ADDRESS_ENV.listen])?.port\n}\n\n/**\n * The host the hub should BIND, from `SLAYZONE_HUB_LISTEN_ADDRESS`. Defaults to\n * 127.0.0.1 (also when the var is unset or malformed \u2014 a bad address must not\n * silently widen the bind). Warns once on stderr when bound to a non-loopback\n * address.\n */\nexport function getServerHost(): string {\n const host = parseHubAddress(process.env[HUB_ADDRESS_ENV.listen])?.host || '127.0.0.1'\n if (!LOOPBACK_HOSTS.has(host) && warnedHost !== host) {\n warnedHost = host\n console.warn(\n `[slayzone] SLAYZONE_HUB_LISTEN_ADDRESS binds the local server to ${host}, a non-loopback address. ` +\n `Anyone on the network can reach it. Use 127.0.0.1 unless you have a reason.`\n )\n }\n return host\n}\n", "/**\n * The per-hub switches that replaced `SLAYZONE_MODE`.\n *\n * There is no \"hosted mode\". Each hub declares what it does through explicit\n * `0|1` switches; the defaults are exactly what the desktop app's own hub does,\n * so a hub with nothing set behaves like that one:\n *\n * SLAYZONE_HUB_REQUIRE_LOGIN 0 every client must sign in\n * SLAYZONE_HUB_ENABLE_PASSWORD 1 email + password sign-in\n * SLAYZONE_HUB_ENABLE_SSO 0 Entra OIDC sign-in\n * SLAYZONE_HUB_ENABLE_PROCESSES 1 hub-local processes / automation commands\n * SLAYZONE_HUB_ENABLE_INTEGRATIONS 1 Linear / GitHub connect + sync\n *\n * Env wins over `<ROOT>/hub.config.json` (`standalone-config.ts` seeds env from the\n * file before anything reads it), so this module only ever reads env. Anything\n * other than `0` / `1` is a boot refusal (rule B4): a switch that silently fell back\n * to its default on a typo (`REQUIRE_LOGIN=true`) would fail OPEN.\n *\n * This task only parses, validates and reports the switches and wires\n * `REQUIRE_LOGIN`; enforcement of password / SSO / processes / integrations off\n * lives in later work.\n *\n * Lean leaf (no imports) so the CLI and computer bundles can use it without the\n * platform barrel.\n *\n * @module platform/hub-switches\n */\n\n/** Env var of each switch. */\nexport const HUB_SWITCH_ENV = {\n requireLogin: 'SLAYZONE_HUB_REQUIRE_LOGIN',\n enablePassword: 'SLAYZONE_HUB_ENABLE_PASSWORD',\n enableSso: 'SLAYZONE_HUB_ENABLE_SSO',\n enableProcesses: 'SLAYZONE_HUB_ENABLE_PROCESSES',\n enableIntegrations: 'SLAYZONE_HUB_ENABLE_INTEGRATIONS'\n} as const\n\nexport type HubSwitchKey = keyof typeof HUB_SWITCH_ENV\n\n/** The resolved state of every switch. */\nexport type HubSwitches = Record<HubSwitchKey, boolean>\n\n/** Defaults = the desktop app's hub. */\nexport const HUB_SWITCH_DEFAULTS: Readonly<HubSwitches> = {\n requireLogin: false,\n enablePassword: true,\n enableSso: false,\n enableProcesses: true,\n enableIntegrations: true\n}\n\n/** SSO settings (not switches, but `ENABLE_SSO=1` is refused without them \u2014 B7). */\nexport const HUB_SSO_ENV = {\n tenantId: 'SLAYZONE_HUB_SSO_TENANT_ID',\n clientId: 'SLAYZONE_HUB_SSO_CLIENT_ID',\n /** Secret \u2014 env only, never read from `hub.config.json`, never logged. */\n clientSecret: 'SLAYZONE_HUB_SSO_CLIENT_SECRET'\n} as const\n\n/** The names the hub reads for where it listens / how others reach it. */\nexport const HUB_ADDRESS_ENV = {\n /** Where the hub LISTENS. Renamed from `SLAYZONE_HUB_ADDRESS`, which now only\n * means \"the hub to connect to\" on a computer / `slay`. */\n listen: 'SLAYZONE_HUB_LISTEN_ADDRESS',\n /** How OTHER machines reach the hub (`host[:port]`, no scheme). */\n public: 'SLAYZONE_HUB_PUBLIC_ADDRESS',\n /** Signing key of hub-auth. */\n authSecret: 'SLAYZONE_HUB_AUTH_SECRET'\n} as const\n\n/** The old hub-side name of {@link HUB_ADDRESS_ENV.listen}. */\nexport const LEGACY_HUB_LISTEN_ENV = 'SLAYZONE_HUB_ADDRESS'\n\n/** Extra browser origins the hub accepts on its websocket (comma-separated). */\nexport const HUB_ALLOWED_WEB_ORIGINS_ENV = 'SLAYZONE_HUB_ALLOWED_WEB_ORIGINS'\n\n/**\n * Every variable that configures a hub PROCESS. A parent that spawns a hub with its\n * own values (the desktop app's sidecar) must clear all of these first: whatever it\n * inherited from wherever IT was launched (a task terminal, a shell profile, a CI\n * job) would otherwise reach the hub, and a stray one is not harmless \u2014 an inherited\n * public address makes the hub \"reachable\" with login off (B1 refuses), an inherited\n * non-0/1 switch trips B4, an inherited auth secret silently changes who can sign in.\n *\n * Includes {@link LEGACY_HUB_LISTEN_ENV}: on a hub it is the retired listen name (B5),\n * while its dial-side meaning belongs to a computer / `slay`, never to a hub.\n */\nexport const HUB_PROCESS_ENV: readonly string[] = [\n ...Object.values(HUB_SWITCH_ENV),\n ...Object.values(HUB_SSO_ENV),\n ...Object.values(HUB_ADDRESS_ENV),\n LEGACY_HUB_LISTEN_ENV,\n HUB_ALLOWED_WEB_ORIGINS_ENV\n]\n\n/** Thrown for a malformed switch value (rule B4). */\nexport class HubSwitchValueError extends Error {\n constructor(\n readonly variable: string,\n readonly value: string\n ) {\n super(\n `[slayzone] ${variable} must be 0 or 1, got '${value}'. ` +\n `Switches take exactly 0 (off) or 1 (on) \u2014 not true/false/yes/no.`\n )\n this.name = 'HubSwitchValueError'\n }\n}\n\n/**\n * Parse one switch value. `undefined` (unset) \u2192 `undefined`; anything but exactly\n * `0` / `1` \u2014 including a blank string \u2014 throws {@link HubSwitchValueError}.\n */\nexport function parseSwitchValue(variable: string, raw: string | undefined): boolean | undefined {\n if (raw === undefined) return undefined\n if (raw === '1') return true\n if (raw === '0') return false\n throw new HubSwitchValueError(variable, raw)\n}\n\n/**\n * Resolve every switch from `env`, applying {@link HUB_SWITCH_DEFAULTS}.\n * Throws on the first malformed value (B4), naming the variable.\n */\nexport function resolveHubSwitches(env: NodeJS.ProcessEnv = process.env): HubSwitches {\n const out: HubSwitches = { ...HUB_SWITCH_DEFAULTS }\n for (const key of Object.keys(HUB_SWITCH_ENV) as HubSwitchKey[]) {\n const parsed = parseSwitchValue(HUB_SWITCH_ENV[key], env[HUB_SWITCH_ENV[key]])\n if (parsed !== undefined) out[key] = parsed\n }\n return out\n}\n\n/**\n * Does THIS hub process require login? Lenient on purpose (`=== '1'`, no throw):\n * for code that runs INSIDE a hub that has already passed boot validation (B4), or\n * that asks the question of its own env (MCP env builder), where a throw has no\n * useful place to land.\n */\nexport function isHubLoginRequired(env: NodeJS.ProcessEnv = process.env): boolean {\n return env[HUB_SWITCH_ENV.requireLogin] === '1'\n}\n\nexport interface HubSsoSettings {\n tenantId?: string\n clientId?: string\n clientSecret?: string\n}\n\n/** Read the SSO settings from env; blank counts as unset. */\nexport function resolveHubSso(env: NodeJS.ProcessEnv = process.env): HubSsoSettings {\n const pick = (name: string): string | undefined => {\n const v = env[name]?.trim()\n return v ? v : undefined\n }\n const out: HubSsoSettings = {}\n const tenantId = pick(HUB_SSO_ENV.tenantId)\n const clientId = pick(HUB_SSO_ENV.clientId)\n const clientSecret = pick(HUB_SSO_ENV.clientSecret)\n if (tenantId) out.tenantId = tenantId\n if (clientId) out.clientId = clientId\n if (clientSecret) out.clientSecret = clientSecret\n return out\n}\n", "import fs from 'fs'\nimport path from 'path'\nimport os from 'os'\nimport { getStateDir } from './dirs'\nimport { installCliSync } from './cli-install'\n\nexport interface MigrationResult {\n migrated: boolean\n failed: boolean\n newDir?: string\n}\n\nexport interface CliMigrationResult {\n status: 'noop' | 'migrated' | 'migrated-old-kept' | 'failed'\n oldPath?: string\n newPath?: string\n}\n\n/**\n * Migrates app state from XDG_CONFIG_HOME to XDG_STATE_HOME on Linux.\n *\n * Electron stores userData in $XDG_CONFIG_HOME/slayzone (~/.config/slayzone) on Linux,\n * but per XDG spec, state data (DB, backups) belongs in $XDG_STATE_HOME/slayzone.\n *\n * On non-Linux platforms, this is a no-op.\n */\nexport function migrateXdgIfNeeded(): MigrationResult {\n if (process.platform !== 'linux') return { migrated: false, failed: false }\n\n const configHome = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config')\n const oldDir = path.join(configHome, 'slayzone')\n const newDir = getStateDir()\n\n return migrateStateDir(oldDir, newDir)\n}\n\n/**\n * Core migration logic: move state from oldDir to newDir.\n * Exported separately for testability (migrateXdgIfNeeded adds the platform guard + dir computation).\n */\nexport function migrateStateDir(oldDir: string, newDir: string): MigrationResult {\n // Same dir (unusual XDG config), nothing to do\n if (oldDir === newDir) return { migrated: false, failed: false }\n\n // New dir already exists \u2014 already migrated or fresh install to new location\n if (fs.existsSync(newDir)) return { migrated: false, failed: false }\n\n // No old dir \u2014 fresh install, nothing to migrate\n if (!fs.existsSync(oldDir)) return { migrated: false, failed: false }\n\n // Snapshot which critical files exist in old dir for post-copy verification\n const dbFiles = ['slayzone.sqlite', 'slayzone.dev.sqlite']\n const expectedFiles = dbFiles.filter((f) => fs.existsSync(path.join(oldDir, f)))\n\n try {\n // Ensure parent dir exists (e.g. ~/.local/state/)\n fs.mkdirSync(path.dirname(newDir), { recursive: true })\n\n try {\n // Atomic on same filesystem\n fs.renameSync(oldDir, newDir)\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== 'EXDEV') throw err\n copyVerifyDelete(oldDir, newDir, expectedFiles)\n }\n\n console.error(`[slayzone] Migrated state from ${oldDir} to ${newDir}`)\n return { migrated: true, failed: false, newDir }\n } catch (err) {\n console.error(`[slayzone] XDG migration failed, keeping old dir: ${err}`)\n\n // Rollback: remove incomplete new dir if it was created by cpSync\n try {\n if (fs.existsSync(newDir) && fs.existsSync(oldDir)) {\n fs.rmSync(newDir, { recursive: true })\n }\n } catch {\n // Best effort cleanup\n }\n\n return { migrated: false, failed: true }\n }\n}\n\n/**\n * Cross-device migration: copy oldDir to newDir, verify critical files, then delete oldDir.\n * Exported for testability \u2014 rename (EXDEV) can't be simulated on same-filesystem tmp dirs.\n */\nexport function copyVerifyDelete(oldDir: string, newDir: string, expectedFiles: string[]): void {\n fs.cpSync(oldDir, newDir, { recursive: true })\n\n for (const f of expectedFiles) {\n if (!fs.existsSync(path.join(newDir, f))) {\n throw new Error(`Verification failed: ${f} missing at ${newDir}`)\n }\n }\n\n fs.rmSync(oldDir, { recursive: true })\n}\n\n/**\n * Migrates CLI symlink from /usr/local/bin/slay to ~/.local/bin/slay on Linux.\n * On non-Linux platforms, this is a no-op.\n */\nexport function migrateCliBinIfNeeded(cliSrcPath: string): CliMigrationResult {\n if (process.platform !== 'linux') return { status: 'noop' }\n\n const oldTarget = '/usr/local/bin/slay'\n try {\n const stat = fs.lstatSync(oldTarget)\n if (!stat.isSymbolicLink()) return { status: 'noop' }\n } catch {\n return { status: 'noop' } // Doesn't exist or can't stat\n }\n\n // Install at new location first\n const result = installCliSync(cliSrcPath)\n if (!result.ok) {\n console.error(\n `[slayzone] CLI bin migration: failed to install at new location: ${result.error}`\n )\n return { status: 'failed' }\n }\n\n // Try to remove old symlink (may need sudo)\n try {\n fs.unlinkSync(oldTarget)\n console.error(`[slayzone] Migrated CLI from ${oldTarget} to ${result.path}`)\n return { status: 'migrated', newPath: result.path }\n } catch {\n console.error(\n `[slayzone] CLI installed at ${result.path} (old symlink at ${oldTarget} kept \u2014 remove manually with: sudo rm ${oldTarget})`\n )\n return { status: 'migrated-old-kept', oldPath: oldTarget, newPath: result.path }\n }\n}\n", "import fs from 'fs'\nimport path from 'path'\nimport os from 'os'\nimport { execSync, execFile } from 'child_process'\nimport { promisify } from 'util'\n\nconst execFileAsync = promisify(execFile)\n\nexport interface CliInstallResult {\n ok: boolean\n path?: string\n permissionDenied?: boolean\n elevationCancelled?: boolean\n error?: string\n pathNotInPATH?: boolean\n}\n\nexport function getCliBinDir(): string {\n switch (process.platform) {\n case 'darwin':\n return '/usr/local/bin'\n case 'win32':\n return path.join(\n process.env.LOCALAPPDATA ?? path.join(os.homedir(), 'AppData', 'Local'),\n 'SlayZone',\n 'bin'\n )\n default:\n return path.join(os.homedir(), '.local', 'bin')\n }\n}\n\nexport function getCliBinTarget(): string {\n const name = process.platform === 'win32' ? 'slay.cmd' : 'slay'\n // Join with the flavor matching the TARGET platform, not the host running this\n // code \u2014 getCliBinDir() returns posix dirs on darwin/linux. On a Windows CI host\n // the default path.join would emit backslashes into a posix dir. Prod is unaffected\n // (host OS already matches the branch).\n const p = process.platform === 'win32' ? path.win32 : path.posix\n return p.join(getCliBinDir(), name)\n}\n\nexport function checkCliInstalled(): { installed: boolean; path?: string } {\n const target = getCliBinTarget()\n if (fs.existsSync(target)) return { installed: true, path: target }\n return { installed: false }\n}\n\nexport function installCliSync(cliSrcPath: string): CliInstallResult {\n const binDir = getCliBinDir()\n const target = getCliBinTarget()\n\n try {\n fs.mkdirSync(binDir, { recursive: true })\n\n if (process.platform === 'win32') {\n return installWindows(cliSrcPath, binDir, target)\n } else {\n return installUnix(cliSrcPath, target, binDir)\n }\n } catch (err: unknown) {\n const code = (err as NodeJS.ErrnoException).code\n if (code === 'EACCES') {\n return { ok: false, permissionDenied: true, error: getManualInstallHint(cliSrcPath) }\n }\n return { ok: false, error: err instanceof Error ? err.message : String(err) }\n }\n}\n\nexport async function installCli(cliSrcPath: string): Promise<CliInstallResult> {\n const syncResult = installCliSync(cliSrcPath)\n if (syncResult.ok || !syncResult.permissionDenied) return syncResult\n if (process.platform === 'win32') return syncResult\n return attemptElevatedInstall(cliSrcPath)\n}\n\nfunction shellEscape(s: string): string {\n return s.replace(/'/g, \"'\\\\''\")\n}\n\nasync function attemptElevatedInstall(cliSrcPath: string): Promise<CliInstallResult> {\n const binDir = getCliBinDir()\n const target = getCliBinTarget()\n const shellCmd = `mkdir -p '${shellEscape(binDir)}' && ln -sf '${shellEscape(cliSrcPath)}' '${shellEscape(target)}'`\n\n try {\n if (process.platform === 'darwin') {\n return await elevatedInstallMacOS(shellCmd, target, binDir)\n } else {\n return await elevatedInstallLinux(shellCmd, target, binDir)\n }\n } catch (err: unknown) {\n if (isElevationCancelled(err)) {\n return { ok: false, elevationCancelled: true }\n }\n return { ok: false, permissionDenied: true, error: getManualInstallHint(cliSrcPath) }\n }\n}\n\nasync function elevatedInstallMacOS(\n shellCmd: string,\n target: string,\n binDir: string\n): Promise<CliInstallResult> {\n const escapedCmd = shellCmd.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n const script = `do shell script \"${escapedCmd}\" with administrator privileges`\n await execFileAsync('/usr/bin/osascript', ['-e', script])\n const notInPath = !isBinDirInPath(binDir)\n return { ok: true, path: target, pathNotInPATH: notInPath || undefined }\n}\n\nasync function elevatedInstallLinux(\n shellCmd: string,\n target: string,\n binDir: string\n): Promise<CliInstallResult> {\n await execFileAsync('pkexec', ['sh', '-c', shellCmd])\n const notInPath = !isBinDirInPath(binDir)\n return { ok: true, path: target, pathNotInPATH: notInPath || undefined }\n}\n\nfunction isElevationCancelled(err: unknown): boolean {\n if (!(err instanceof Error)) return false\n const execErr = err as Error & { code?: number; stderr?: string }\n if (process.platform === 'darwin') {\n return (\n execErr.stderr?.includes('User canceled') === true ||\n execErr.message?.includes('User canceled') === true\n )\n }\n return execErr.code === 126\n}\n\nfunction installUnix(cliSrcPath: string, target: string, binDir: string): CliInstallResult {\n if (!fs.existsSync(cliSrcPath)) {\n return { ok: false, error: `CLI source not found: ${cliSrcPath}` }\n }\n if (fs.existsSync(target)) fs.unlinkSync(target)\n fs.symlinkSync(cliSrcPath, target)\n const notInPath = !isBinDirInPath(binDir)\n return { ok: true, path: target, pathNotInPATH: notInPath || undefined }\n}\n\nfunction installWindows(cliSrcPath: string, binDir: string, target: string): CliInstallResult {\n if (!fs.existsSync(cliSrcPath)) {\n return { ok: false, error: `CLI source not found: ${cliSrcPath}` }\n }\n // Copy slay.js next to the .cmd shim\n // TODO: In dev mode, slay.js is at ../cli/dist/slay.js, not ../cli/bin/slay.js \u2014 shim won't work in dev on Windows\n const srcJs = cliSrcPath.replace(/[/\\\\]slay$/, path.sep + 'slay.js')\n const destJs = path.join(binDir, 'slay.js')\n if (fs.existsSync(srcJs)) {\n fs.copyFileSync(srcJs, destJs)\n } else {\n return { ok: false, error: `CLI JS source not found: ${srcJs}` }\n }\n\n // Write .cmd shim that detects Node version for --experimental-sqlite\n // TODO: remove --experimental-sqlite when Node 22 is no longer supported\n const shimContent = [\n '@echo off',\n 'for /f \"tokens=1 delims=.\" %%v in (\\'node -e \"process.stdout.write(process.versions.node)\"\\') do set NODE_MAJOR=%%v',\n 'if %NODE_MAJOR% LEQ 22 (',\n ' node --experimental-sqlite --no-warnings \"%~dp0slay.js\" %*',\n ') else (',\n ' node --no-warnings \"%~dp0slay.js\" %*',\n ')',\n ''\n ].join('\\r\\n')\n fs.writeFileSync(target, shimContent)\n\n // Add to user PATH via registry if not already present\n const notInPath = !isBinDirInPath(binDir)\n if (notInPath) {\n addToWindowsPath(binDir)\n }\n\n return { ok: true, path: target, pathNotInPATH: notInPath || undefined }\n}\n\nfunction isBinDirInPath(binDir: string): boolean {\n const envPath = process.env.PATH ?? ''\n const sep = process.platform === 'win32' ? ';' : ':'\n return envPath.split(sep).some((p) => {\n try {\n return fs.realpathSync(p) === fs.realpathSync(binDir)\n } catch {\n return p === binDir\n }\n })\n}\n\nfunction addToWindowsPath(binDir: string): void {\n try {\n // Read current user PATH from registry\n const output = execSync('reg query \"HKCU\\\\Environment\" /v Path', { encoding: 'utf8' })\n const match = output.match(/Path\\s+REG_\\w+\\s+(.*)/)\n const currentPath = match?.[1]?.trim() ?? ''\n\n // Check if already present\n if (currentPath.split(';').some((p) => p.toLowerCase() === binDir.toLowerCase())) return\n\n const newPath = currentPath ? `${currentPath};${binDir}` : binDir\n execSync(`reg add \"HKCU\\\\Environment\" /v Path /t REG_EXPAND_SZ /d \"${newPath}\" /f`, {\n encoding: 'utf8'\n })\n } catch {\n // Non-fatal \u2014 user can add to PATH manually\n }\n}\n\nexport function getManualInstallHint(cliSrcPath: string): string {\n switch (process.platform) {\n case 'darwin':\n return `sudo ln -sf \"${cliSrcPath}\" /usr/local/bin/slay`\n case 'win32':\n return `Copy slay.js and slay.cmd to a directory in your PATH`\n default:\n return `ln -sf \"${cliSrcPath}\" ~/.local/bin/slay`\n }\n}\n", "/**\n * Cross-platform shell primitives.\n *\n * These resolve and quote the user's shell consistently across macOS, Linux and\n * Windows. They live in `@slayzone/platform` (not the terminal domain) so any\n * package that needs to spawn a command \u2014 terminal, process-manager, ai-config \u2014\n * shares one implementation. The terminal domain re-exports them for back-compat.\n *\n * PATH-enrichment and ulimit helpers stay in the terminal domain: they depend on\n * spawning the shell and on terminal-only types.\n */\nimport fs from 'node:fs'\nimport { platform, userInfo } from 'os'\n\n/** In-memory shell override \u2014 used by E2E tests via IPC, never persisted. */\nlet shellOverride: string | null = null\n\nexport function setShellOverride(value: string | null): void {\n shellOverride = value?.trim() || null\n}\n\n/** Current E2E shell override, if any. Lets callers report an invalid override. */\nexport function getShellOverride(): string | null {\n return shellOverride\n}\n\n/**\n * True if `shellPath` exists and is usable as a shell. On POSIX this checks the\n * executable bit; on Windows (no executable bit) it checks existence only.\n */\nexport function shellExists(shellPath: string): boolean {\n if (platform() === 'win32') return fs.existsSync(shellPath)\n try {\n fs.accessSync(shellPath, fs.constants.X_OK)\n return true\n } catch {\n return false\n }\n}\n\n/** Platform fallback shell when nothing else resolves. */\nexport function defaultShellForPlatform(): string {\n if (platform() === 'win32') return process.env.COMSPEC || 'cmd.exe'\n if (platform() === 'darwin') return '/bin/zsh'\n return '/bin/bash'\n}\n\n/**\n * Resolve the shell used to launch terminal sessions.\n * Priority:\n * 1) in-memory override (tests only)\n * 2) SHELL env var\n * 3) os.userInfo().shell\n * 4) platform fallback\n */\nexport function resolveUserShell(): string {\n if (shellOverride && shellExists(shellOverride)) return shellOverride\n\n const fromEnv = process.env.SHELL?.trim()\n if (fromEnv && shellExists(fromEnv)) return fromEnv\n\n try {\n const fromUser = userInfo().shell?.trim()\n if (fromUser && shellExists(fromUser)) return fromUser\n } catch {\n // ignore userInfo lookup failures\n }\n\n return defaultShellForPlatform()\n}\n\n/**\n * Backwards-compatible alias used by existing adapters.\n */\nexport function getDefaultShell(): string {\n return resolveUserShell()\n}\n\n/**\n * Startup args used to emulate typical interactive login terminal behavior.\n */\nexport function getShellStartupArgs(shellPath: string): string[] {\n if (platform() === 'win32') return []\n\n const shell = shellPath.toLowerCase()\n const name = shell.split('/').pop() ?? shell\n if (name === 'zsh' || name === 'bash' || name === 'fish') {\n return ['-i', '-l']\n }\n\n return []\n}\n\n/**\n * Quote a single argument for the host platform's shell \u2014 single-quote escaping\n * on POSIX, double-quote escaping for cmd.exe on Windows.\n */\nexport function quoteForShell(arg: string): string {\n if (platform() === 'win32') {\n if (arg.length === 0) return '\"\"'\n if (!/[\\s\"&|<>^%!]/.test(arg)) return arg\n return `\"${arg.replace(/\"/g, '\"\"')}\"`\n }\n if (arg.length === 0) return \"''\"\n return `'${arg.replace(/'/g, `'\"'\"'`)}'`\n}\n\nexport function buildExecCommand(binary: string, args: string[] = []): string {\n const escaped = [binary, ...args].map(quoteForShell).join(' ')\n if (platform() === 'win32') return escaped\n return `exec ${escaped}`\n}\n\n/**\n * Resolve `{ file, args }` to run a command string through the user's login\n * shell, cross-platform:\n * - Windows: `cmd.exe /c <command>`\n * - fish: `fish -i -l -c <command>`\n * - sh/zsh/bash: `<shell> -l -c <command>`\n *\n * Use this anywhere a command must be run \"as if typed in the user's shell\" so\n * PATH additions (nvm/pnpm/brew) resolve. The caller still owns cwd/env/detached.\n */\nexport function buildShellInvocation(command: string): { file: string; args: string[] } {\n const shell = resolveUserShell()\n if (platform() === 'win32') return { file: shell, args: ['/c', command] }\n const isFish = shell.endsWith('/fish')\n return { file: shell, args: [...(isFish ? ['-i', '-l'] : ['-l']), '-c', command] }\n}\n", "/**\n * slz-file:// is a custom Chromium-privileged scheme (registered with\n * `standard: true, secure: true, supportFetchAPI: true, stream: true,\n * bypassCSP: true`) used to serve local files into webviews + iframes\n * where `file://` is blocked.\n *\n * `standard: true` makes Chromium parse URLs as authority + path. Without a\n * sentinel host, the first path segment gets moved into the authority slot\n * (lowercased, Unicode-mangled) \u2014 breaking the home-dir security check in\n * the main-process handler. So every renderer-side constructor goes through\n * `toSlzFileUrl()` to fill the authority with `SLZ_FILE_HOST` and the\n * handler rejects requests whose host is anything else.\n */\n\nexport const SLZ_FILE_HOST = 'app'\nexport const SLZ_FILE_PREFIX = `slz-file://${SLZ_FILE_HOST}`\n\n/**\n * Build a slz-file URL from an absolute path. Pass `version` to cache-bust.\n * Pass `theme` ('light' | 'dark') to have the main-process handler force that\n * color scheme onto `.html`/`.htm` responses (task-artifacts HTML preview);\n * every other consumer omits it and gets the unmodified file, unchanged.\n */\nexport function toSlzFileUrl(\n absolutePath: string,\n version?: string | number,\n theme?: 'light' | 'dark'\n): string {\n const path = absolutePath.startsWith('/') ? absolutePath : `/${absolutePath}`\n const params: string[] = []\n if (version !== undefined) params.push(`v=${encodeURIComponent(String(version))}`)\n if (theme !== undefined) params.push(`theme=${theme}`)\n const query = params.length > 0 ? `?${params.join('&')}` : ''\n return `${SLZ_FILE_PREFIX}${path}${query}`\n}\n\n/**\n * Rewrite a `file://` URL into our scheme. Only handles the empty-host form\n * (`file:///abs/path`) used on macOS + Linux. Windows UNC paths\n * (`file://host/share/...`) would produce a broken URL \u2014 not supported.\n */\nexport function fileUrlToSlzFileUrl(url: string): string {\n // Heal URLs corrupted by a past round-trip bug that left one or more stray\n // `app` host segments (`file://app/...`, `file://appapp/...`). Collapse them\n // back to the empty-host form before transforming. `app` is never a valid\n // file:// host on the platforms we support, so this is safe.\n const healed = url.replace(/^file:\\/\\/(?:app)+\\//, 'file:///')\n return healed.replace(/^file:\\/\\//, SLZ_FILE_PREFIX)\n}\n\n/**\n * Inverse of `fileUrlToSlzFileUrl`. Strips the whole `slz-file://app` prefix\n * (scheme + sentinel host) back to the empty-host `file:///abs/path` form.\n * Stripping only the scheme would leave `app` stranded in the path, and a\n * later round-trip through `fileUrlToSlzFileUrl` would compound it into\n * `slz-file://appapp/...`. Non-matching URLs pass through unchanged.\n */\nexport function slzFileUrlToFileUrl(url: string): string {\n return url.startsWith(SLZ_FILE_PREFIX) ? `file://${url.slice(SLZ_FILE_PREFIX.length)}` : url\n}\n", "/**\n * CSS that forces a color scheme onto HTML the app doesn't control (task\n * artifacts, browser tabs) \u2014 content that may not honor `prefers-color-scheme`\n * or was authored for only one scheme.\n *\n * `dark` inverts the whole page, then re-inverts media elements so images,\n * video, canvas, svg and nested iframes don't come out with wrong colors.\n * `light` only asserts `color-scheme: light` \u2014 it can't undo colors an\n * already-dark-authored page set explicitly; there's no way to do that\n * without understanding the page's own styles.\n *\n * Single source of truth shared by task-browser's per-tab theme override\n * (applied live via `webContents.insertCSS`) and task-artifacts' HTML\n * preview (injected as text at serve time \u2014 that iframe has no webContents\n * handle to call `insertCSS` on).\n */\nexport type ForcedHtmlTheme = 'light' | 'dark'\n\nexport const FORCED_HTML_THEME_CSS: Record<ForcedHtmlTheme, string> = {\n dark: [\n 'html{filter:invert(90%) hue-rotate(180deg)!important}',\n 'img,video,canvas,svg,iframe{filter:invert(90%) hue-rotate(180deg)!important}'\n ].join(''),\n light: ':root{color-scheme:light!important}'\n}\n", "/**\n * Cross-process result dedup for IPC handlers.\n *\n * Wraps an `ipcMain.handle` listener so that consecutive calls with the same\n * args returning identical content return a tiny sentinel instead of the full\n * payload. The renderer-side preload wrapper detects the sentinel and reuses\n * its cached previous value \u2014 eliminating both the IPC serialization cost on\n * the main side and the deserialization cost on the renderer side when state\n * is unchanged.\n *\n * Use only on read-only handlers whose return values are JSON-serializable.\n * Mutation handlers (anything writing state) should NOT be wrapped \u2014 the\n * caller usually wants the raw return regardless.\n */\n\nexport const IPC_UNCHANGED_SENTINEL = '__ipc_unchanged__' as const\n\nexport interface IpcUnchangedSentinel {\n readonly __ipc_unchanged__: true\n}\n\nexport function isIpcUnchangedSentinel(value: unknown): value is IpcUnchangedSentinel {\n return (\n value !== null &&\n typeof value === 'object' &&\n (value as { __ipc_unchanged__?: unknown }).__ipc_unchanged__ === true\n )\n}\n\nconst UNCHANGED: IpcUnchangedSentinel = Object.freeze({ __ipc_unchanged__: true })\n\nexport interface SenderLifecycle<E> {\n /** Stable per-sender identifier. Return null to bypass dedup for this call. */\n getKey: (event: E) => number | string | null\n /**\n * Subscribe once per sender to lifecycle events that invalidate the cache\n * (e.g. renderer reload, sender destroyed). Called at most once per sender \u2014\n * the wrapper deduplicates registration internally.\n */\n subscribe: (event: E, onClear: () => void) => void\n}\n\ninterface DedupOptions<E, R = unknown> {\n /**\n * Per-key entry cap. Defaults to 64 \u2014 enough for typical args (project paths,\n * branch names) without unbounded growth.\n */\n maxEntries?: number\n /**\n * Override the hash function used to compare results. Defaults to\n * `JSON.stringify`. Provide a stable hash when the result contains\n * time-sensitive fields (e.g. relative date strings) that drift over time\n * but don't represent a real content change.\n */\n hashFn?: (result: R) => string\n /**\n * Optional sender-scoped cache. When provided, the dedup cache is keyed by\n * sender identity and cleared via the lifecycle callback \u2014 so a renderer\n * reload invalidates main's cache in lockstep with the renderer's wiped\n * preload cache. Without this, the cache is process-global and renderer\n * reloads will cause `IPC_UNCHANGED_SENTINEL` to be returned to a preload\n * that has no cached value (preload then returns `undefined`).\n */\n sender?: SenderLifecycle<E>\n}\n\n/**\n * Wraps an `ipcMain.handle` listener with content-hash dedup. The wrapped\n * listener:\n * - Calls the underlying handler exactly once per invocation (no caching of\n * the work itself \u2014 only the comparison).\n * - Hashes the result and args via `JSON.stringify`, ignoring the first\n * argument (the Electron `IpcMainInvokeEvent`, which is non-serializable).\n * - Returns `IPC_UNCHANGED_SENTINEL` when args+result hash matches the\n * previous call for the same args; otherwise returns the result and stores\n * the new hash.\n *\n * When `options.sender` is provided, the cache is sender-scoped and lifecycle\n * events clear it \u2014 required to stay in sync with the preload-side cache\n * across renderer reloads (otherwise the preload returns `undefined` for\n * unchanged sentinels it never cached). See `SenderLifecycle`.\n */\nexport function withResultDedup<E, A extends unknown[], R>(\n handler: (event: E, ...args: A) => R | Promise<R>,\n options: DedupOptions<E, R> = {}\n): (event: E, ...args: A) => Promise<R | IpcUnchangedSentinel> {\n const maxEntries = options.maxEntries ?? 64\n const hashFn = options.hashFn ?? ((r: R) => JSON.stringify(r))\n const sender = options.sender\n\n const globalCache = new Map<string, string>()\n const scopedCache = new Map<number | string, Map<string, string>>()\n const registered = new Set<number | string>()\n\n const evictIfFull = (bucket: Map<string, string>) => {\n if (bucket.size > maxEntries) {\n const oldestKey = bucket.keys().next().value\n if (oldestKey !== undefined) bucket.delete(oldestKey)\n }\n }\n\n return async (event: E, ...args: A): Promise<R | IpcUnchangedSentinel> => {\n const result = await handler(event, ...args)\n\n let argsKey: string\n try {\n argsKey = JSON.stringify(args)\n } catch {\n return result\n }\n let resultHash: string\n try {\n resultHash = hashFn(result)\n } catch {\n return result\n }\n\n if (!sender) {\n if (globalCache.get(argsKey) === resultHash) return UNCHANGED\n globalCache.set(argsKey, resultHash)\n evictIfFull(globalCache)\n return result\n }\n\n const senderKey = sender.getKey(event)\n if (senderKey === null) return result\n\n let bucket = scopedCache.get(senderKey)\n if (!bucket) {\n bucket = new Map<string, string>()\n scopedCache.set(senderKey, bucket)\n }\n if (!registered.has(senderKey)) {\n registered.add(senderKey)\n sender.subscribe(event, () => {\n scopedCache.delete(senderKey)\n registered.delete(senderKey)\n })\n }\n if (bucket.get(argsKey) === resultHash) return UNCHANGED\n bucket.set(argsKey, resultHash)\n evictIfFull(bucket)\n return result\n }\n}\n", "/**\n * Computer-side ring buffer for pty output. A faithful mirror of the terminal\n * domain's RingBuffer (`@slayzone/terminal` server/ring-buffer.ts): fixed byte\n * cap, oldest-first eviction, and a MONOTONIC per-session sequence number\n * assigned at append time. The computer owns seq assignment so the hub can detect\n * gaps and request replay via `pty.getBufferSince`.\n *\n * It is re-implemented here (rather than imported) to keep the computer a\n * lightweight standalone bundle \u2014 the terminal package drags in the full\n * React/electron app tree, which must never leak into the computer.\n *\n * @module computer/ring-buffer\n */\n\n/** A single buffered output chunk with its monotonic sequence number. */\nexport interface BufferChunk {\n seq: number\n data: string\n}\n\n/**\n * Ring buffer for terminal output with a fixed maximum size. Drops the oldest\n * content when capacity is exceeded. Each chunk carries a monotonic sequence\n * number for gap detection / ordering.\n *\n * **Chunks are immutable once appended.** `handlers/pty.ts` states that live and\n * backfilled frames \"are interchangeable by contract\", and the hub's demux keeps\n * whichever copy of a seq lands first (`exec-proxies.ts`) \u2014 so a buffered copy\n * that differs from the bytes streamed live under the same seq makes the rendered\n * output depend on delivery timing.\n *\n * This buffer therefore does NOT do eviction-boundary resync (it used to prepend\n * `ESC[0m` to the surviving head chunk, and truncate an oversized single chunk in\n * place). Neither is meaningful here: this buffer exists solely for short-range\n * gap backfill via `getChunksSince`, and the HUB's own RingBuffer\n * (`@slayzone/terminal` server/ring-buffer.ts) owns replay-prelude resync, which\n * is where a real terminal is being repopulated from scratch.\n */\nexport class RingBuffer {\n private chunks: BufferChunk[] = []\n private totalSize = 0\n private readonly maxSize: number\n private nextSeq = 0\n\n constructor(maxSize: number) {\n this.maxSize = maxSize\n }\n\n /**\n * Append data to the buffer, dropping oldest chunks if over capacity.\n * Returns the sequence number assigned to this chunk.\n */\n append(data: string): number {\n const seq = this.nextSeq++\n this.chunks.push({ seq, data })\n this.totalSize += data.length\n\n // Drop oldest chunks until under max size.\n while (this.totalSize > this.maxSize && this.chunks.length > 1) {\n const dropped = this.chunks.shift()!\n this.totalSize -= dropped.data.length\n }\n\n // A single chunk over the cap is DROPPED, not truncated \u2014 see the immutability\n // note below. Its seq is not reused, so the hub sees an honest gap, fails to\n // backfill it, and skips forward; truncating would instead hand back different\n // bytes under a seq it may already have delivered verbatim.\n if (this.totalSize > this.maxSize && this.chunks.length === 1) {\n this.chunks = []\n this.totalSize = 0\n }\n\n return seq\n }\n\n /**\n * Get all chunks with sequence number > afterSeq. Returns an empty array when\n * afterSeq >= the latest seq (or the requested tail has been evicted).\n */\n getChunksSince(afterSeq: number): BufferChunk[] {\n return this.chunks.filter((c) => c.seq > afterSeq)\n }\n\n /** Latest assigned sequence number, or -1 when the buffer is empty. */\n getCurrentSeq(): number {\n return this.nextSeq - 1\n }\n\n /** Full buffer contents joined as a string. */\n toString(): string {\n return this.chunks.map((c) => c.data).join('')\n }\n\n /** Clear the buffer; keeps nextSeq advancing to avoid seq reuse. */\n clear(): void {\n this.chunks = []\n this.totalSize = 0\n }\n\n /** Current buffered size in characters. */\n get size(): number {\n return this.totalSize\n }\n}\n", "/**\n * Computer-side project \u2192 path handlers.\n *\n * The hub asks \"where is project X on you?\" instead of telling each computer where\n * a project lives. That inversion is the whole point: a hub holding one path\n * column had to be wrong about at least one machine as soon as two computers laid\n * the same project out differently.\n *\n * `path: null` is a first-class answer, not an error \u2014 \"this computer has no\n * checkout of that project\" is exactly the state the single column could never\n * express, since it always had *a* path even for a machine that had never seen\n * the project.\n *\n * Every path passes {@link assertPathAllowed} before it is recorded, so a stored\n * mapping can never point outside the jail the computer enforces everywhere else.\n *\n * @module computer/handlers/project\n */\n\nimport { existsSync } from 'node:fs'\nimport {\n HubToComputerMethods,\n projectForgetPathParamsSchema,\n projectListParamsSchema,\n projectResolvePathParamsSchema,\n projectSetPathParamsSchema,\n type ProjectListResult,\n type ProjectResolvePathResult,\n type ProjectSetPathResult\n} from '@slayzone/computer-transport/shared'\nimport { assertPathAllowed } from '../config'\nimport type { ProjectPathStore } from '../project-paths'\nimport type { HandlerContext, HubMethodTable } from './types'\n\n/**\n * `getStore` rather than a store, because the map is read from disk and the\n * dispatch table is built synchronously. Registering the methods immediately and\n * failing with \"not loaded yet\" is more honest than leaving them out and\n * answering `unimplemented` \u2014 the method exists, its backing file just has not\n * arrived. Same late-bind shape as `setAgentHookUrl`.\n */\nexport function createProjectHandlers(\n ctx: HandlerContext,\n getStore: () => ProjectPathStore | null\n): HubMethodTable {\n const allow = (candidate: string): string => assertPathAllowed(candidate, ctx.config.allowedRoots)\n const store = (): ProjectPathStore => {\n const s = getStore()\n if (!s) throw new Error('project path store is still loading')\n return s\n }\n\n /**\n * `exists` is reported separately from `path` on purpose. A recorded path whose\n * directory has since been deleted is NOT the same as no mapping: the first is\n * something to re-clone or re-point, the second is a project this machine has\n * simply never held. Collapsing them is how a moved folder turns into a\n * silently wrong answer.\n */\n function resolvePath(rawParams: unknown): ProjectResolvePathResult {\n const { projectId } = projectResolvePathParamsSchema.parse(rawParams)\n const entry = store().get(projectId)\n if (!entry) return { path: null }\n return { path: entry.path, exists: existsSync(entry.path) }\n }\n\n async function setPath(rawParams: unknown): Promise<ProjectSetPathResult> {\n const { projectId, path } = projectSetPathParamsSchema.parse(rawParams)\n // Jail first: a mapping that points outside allowedRoots would be recorded\n // as fact and then refused by every op that used it.\n const resolved = allow(path)\n const entry = await store().set(projectId, resolved)\n ctx.log('project path recorded', { projectId, path: entry.path })\n return { path: entry.path }\n }\n\n async function forgetPath(rawParams: unknown): Promise<{ ok: true }> {\n const { projectId } = projectForgetPathParamsSchema.parse(rawParams)\n // Forgets the MAPPING only. The checkout stays on disk \u2014 deleting a user's\n // code on a machine they are not sitting at is unrecoverable, and nothing\n // here has been told to do it.\n await store().forget(projectId)\n ctx.log('project path forgotten', { projectId })\n return { ok: true }\n }\n\n function list(rawParams: unknown): ProjectListResult {\n projectListParamsSchema.parse(rawParams ?? {})\n return {\n projects: store()\n .list()\n .map((e) => ({\n projectId: e.projectId,\n path: e.path,\n exists: existsSync(e.path)\n }))\n }\n }\n\n return {\n [HubToComputerMethods.projectResolvePath]: resolvePath,\n [HubToComputerMethods.projectSetPath]: setPath,\n [HubToComputerMethods.projectForgetPath]: forgetPath,\n [HubToComputerMethods.projectList]: list\n }\n}\n", "/**\n * Computer-side pty exec handlers. Spawns node-pty processes on the computer\n * machine and streams their output back to the hub as `pty.data` notifications,\n * each carrying a MONOTONIC per-session sequence number (assigned by a\n * per-session {@link RingBuffer}). The hub detects gaps and replays them via\n * `pty.getBufferSince`; on process exit the computer emits `pty.exit`.\n *\n * This mirrors the terminal domain's pty-manager seq/buffer semantics, scoped\n * down to the exec surface the computer protocol exposes.\n *\n * @module computer/handlers/pty\n */\n\nimport {\n HubToComputerMethods,\n ptyGetBufferSinceParamsSchema,\n ptyKillParamsSchema,\n type PtyListResult,\n ptyResizeParamsSchema,\n ptySpawnParamsSchema,\n ptyWarmAdoptParamsSchema,\n ptyWarmKillParamsSchema,\n ptyWarmSpawnParamsSchema,\n ptyWriteParamsSchema,\n RpcError,\n ComputerNotificationMethods,\n ComputerTransportErrorCodes\n} from '@slayzone/computer-transport/shared'\nimport * as pty from 'node-pty'\nimport { sanitizeSpawnEnv } from '@slayzone/platform/env-manifest'\nimport { RingBuffer } from '../ring-buffer'\nimport type { HandlerContext, HubMethodTable } from './types'\n\n/** Matches the terminal domain's per-session buffer cap (750 KiB). */\nconst MAX_BUFFER_SIZE = 750 * 1024\n\ninterface PtySession {\n proc: pty.IPty\n buffer: RingBuffer\n /**\n * The key this session is currently filed under, read by its own onData/onExit.\n *\n * MUTABLE and read live, not captured: `pty.warmAdopt` promotes a warm session\n * by rekeying it (`warmId` \u2192 real `sessionId`) so the process, pid, buffer and\n * seq counter all survive. Closures that had captured the spawn-time id would\n * keep emitting under the dead `warmId` after that swap.\n */\n id: string\n /** Set for a warm (unadopted) session; cleared on adopt. */\n warm?: { cwd: string; startedAt: number }\n}\n\nexport interface PtyHandlers {\n handlers: HubMethodTable\n /** Kill every live pty (called on computer shutdown). */\n disposeAll(): void\n}\n\n/**\n * Build the pty handler table. Sessions are tracked in a Map keyed by\n * `sessionId` and cleaned up on process exit.\n */\n/**\n * `getProjectPaths` lets a cwd-less spawn resolve its own directory. The hub no\n * longer knows where a project lives on this machine \u2014 it held one path column\n * covering every computer \u2014 so `pty.spawn` may arrive carrying `projectId` instead\n * of `cwd`, and this side does the lookup.\n */\nexport function createPtyHandlers(\n ctx: HandlerContext,\n getProjectPaths?: () => { get(projectId: string): { path: string } | null } | null\n): PtyHandlers {\n const sessions = new Map<string, PtySession>()\n\n /**\n * An explicit `cwd` wins: it is either a worktree this computer created or a\n * `task.base_dir` the user set, never a hub guess about someone else's disk.\n * Otherwise resolve the project's own checkout here.\n *\n * A project with no mapping fails LOUDLY. Falling back to the computer's launch\n * directory would start the agent in the wrong tree and look like it worked,\n * which is the exact failure this whole seam removes.\n */\n function resolveCwd(opts: { cwd?: string; projectId?: string }): string {\n if (opts.cwd) return opts.cwd\n if (!opts.projectId) throw new Error('pty.spawn needs either cwd or projectId')\n const entry = getProjectPaths?.()?.get(opts.projectId)\n if (!entry) {\n throw new Error(\n `project ${opts.projectId} is not checked out on this computer \u2014 adopt a folder or enable remote git for it`\n )\n }\n return entry.path\n }\n\n function buildEnv(overrides?: Record<string, string>): Record<string, string> {\n // Base channel: the computer inherits its parent (supervisor) process.env, so\n // sanitize it through the shared manifest \u2014 keep the user env (PATH/HOME/\n // toolchains) but strip every SlayZone infra/secret/identity var (and any\n // unmanifested SLAYZONE_*, fail closed) so nothing the computer was configured\n // with leaks into a spawned agent, which would reinterpret it. The hub's\n // per-spawn `overrides` (the identity overlay) apply AFTER and are the\n // authoritative source for anything an agent legitimately needs.\n const merged: Record<string, string> = overrides\n ? { ...sanitizeSpawnEnv(process.env), ...overrides }\n : sanitizeSpawnEnv(process.env)\n // Override channel: force the agent's lifecycle hook to the computer's OWN\n // loopback relay (which forwards to the hub over the authed ws channel), and\n // strip any hub bearer the hub baked into `overrides` \u2014 no per-agent token in\n // subprocess env, and the agent env is byte-identical to a local spawn's hook\n // wiring. Distinct from the base sanitize above: this guards a token the HUB\n // passed in, which sanitizeSpawnEnv (base-only) never sees.\n if (ctx.agentHookUrl) {\n merged.SLAYZONE_AGENT_HOOK_URL = ctx.agentHookUrl\n delete merged.SLAYZONE_HUB_TOKEN\n }\n return merged\n }\n\n /**\n * Spawn a pty and file it under `id`. Shared by `pty.spawn` and\n * `pty.warmSpawn` so a warm session is byte-for-byte an ordinary session \u2014\n * same buffering, same seq assignment, same exit handling \u2014 differing only in\n * the key it is filed under and (until adopted) the `warm` marker.\n */\n function spawnSession(\n id: string,\n opts: {\n command: string\n args?: string[]\n cwd?: string\n env?: Record<string, string>\n cols?: number\n rows?: number\n projectId?: string\n warm?: { cwd: string; startedAt: number }\n }\n ): PtySession {\n const cwd = resolveCwd(opts)\n // Replace any pre-existing session with the same id (defensive against a\n // stale session that never signalled exit).\n const existing = sessions.get(id)\n if (existing) {\n try {\n existing.proc.kill()\n } catch {\n // Already dead \u2014 ignore.\n }\n sessions.delete(id)\n }\n\n const proc = pty.spawn(opts.command, opts.args ?? [], {\n name: 'xterm-color',\n cwd,\n env: buildEnv(opts.env),\n cols: opts.cols ?? 80,\n rows: opts.rows ?? 24\n })\n\n const buffer = new RingBuffer(MAX_BUFFER_SIZE)\n const session: PtySession = { proc, buffer, id, ...(opts.warm ? { warm: opts.warm } : {}) }\n sessions.set(id, session)\n\n proc.onData((data) => {\n // Ignore output from a session that has since been superseded/disposed.\n // `session.id` is read LIVE so a rekey (warm adopt) redirects the stream.\n if (sessions.get(session.id) !== session) return\n // Output is buffered and streamed BYTE-IDENTICALLY, deliberately. The two\n // are interchangeable by contract, not redundant: the hub's demux keeps\n // whichever copy of a seq arrives first and drops the other, then emits that\n // seq exactly once, so a stream can be assembled from live frame 3 +\n // backfilled frame 4 + live frame 5. Any per-seq divergence corrupts the\n // result \u2014 and a filter that holds a torn escape tail diverges by\n // construction (`two` vs `two ESC [ ? 6`), losing bytes in one interleaving\n // and stranding a half-sequence in the other.\n //\n // So device-status filtering does NOT belong here. It belongs where the\n // stream is consumed, and it already lives there: every remote frame \u2014\n // live or backfilled \u2014 re-enters the hub's own pty onData\n // (`attachPtyHandlers` wraps remote handles too), which answers what it\n // answers via `interceptSyncQueries` and strips cursor-status queries via\n // `filterBufferData` before anything is buffered or rendered. Stripping on\n // the computer would only risk starving a remote program of an answer the hub\n // would otherwise have given it.\n const seq = buffer.append(data)\n // A WARM session buffers but does not stream: the hub has no session to\n // route it to yet, and `pty.warmAdopt` hands the whole buffer over at\n // adopt. Emitting under a `warmId` the hub never registered would be\n // dropped anyway \u2014 and would burn a seq the adopt handover then replays.\n if (session.warm) return\n ctx.dialer.notify(ComputerNotificationMethods.ptyData, {\n sessionId: session.id,\n seq,\n data\n })\n })\n\n proc.onExit(({ exitCode, signal }) => {\n // Only the CURRENTLY-active session for this id may clear the map and\n // emit exit \u2014 a superseded/disposed pty exiting must stay silent, else it\n // would tear down the replacement and confuse the hub.\n if (sessions.get(session.id) !== session) return\n sessions.delete(session.id)\n // A warm session dying before adoption is the computer's business: the hub\n // holds no session for it. It re-warms on its own reconcile.\n if (session.warm) {\n ctx.log('warm pty exited before adoption', { warmId: session.id })\n return\n }\n ctx.dialer.notify(ComputerNotificationMethods.ptyExit, {\n sessionId: session.id,\n exitCode: typeof exitCode === 'number' ? exitCode : null,\n signal: signal != null ? String(signal) : null\n })\n })\n\n return session\n }\n\n function spawn(rawParams: unknown): { pid: number } {\n const params = ptySpawnParamsSchema.parse(rawParams)\n const session = spawnSession(params.sessionId, params)\n ctx.log('pty spawned', {\n sessionId: params.sessionId,\n pid: session.proc.pid,\n command: params.command\n })\n return { pid: session.proc.pid }\n }\n\n function warmSpawn(rawParams: unknown): { pid: number } {\n const params = ptyWarmSpawnParamsSchema.parse(rawParams)\n const session = spawnSession(params.warmId, {\n ...params,\n warm: { cwd: params.cwd, startedAt: Date.now() }\n })\n // Pre-boot the agent inside the warm shell. Written to stdin rather than\n // spawned directly so the shell's rc init (PATH, toolchain shims) has already\n // run \u2014 the whole point of warming.\n if (params.postSpawnCommand) session.proc.write(`${params.postSpawnCommand}\\r`)\n ctx.log('warm pty spawned', { warmId: params.warmId, pid: session.proc.pid })\n return { pid: session.proc.pid }\n }\n\n function warmAdopt(rawParams: unknown): { pid: number; data: string; seq: number } {\n const params = ptyWarmAdoptParamsSchema.parse(rawParams)\n const session = sessions.get(params.warmId)\n if (!session || !session.warm) {\n throw new RpcError(\n ComputerTransportErrorCodes.unknownComputer,\n `no warm session ${params.warmId} to adopt`\n )\n }\n // Rekey in place. The process, pid, RingBuffer and seq counter all carry\n // over, so the hub's gap detection continues across the boundary instead of\n // restarting under a stream it is already tracking.\n sessions.delete(params.warmId)\n session.id = params.sessionId\n delete session.warm\n sessions.set(params.sessionId, session)\n // `getCurrentSeq()` is -1 on an empty buffer \u2014 the same \"nothing seen yet\"\n // sentinel the hub's gap detector starts from, so an adopt with no output\n // needs no special case.\n const data = session.buffer.toString()\n const seq = session.buffer.getCurrentSeq()\n ctx.log('warm pty adopted', {\n warmId: params.warmId,\n sessionId: params.sessionId,\n pid: session.proc.pid\n })\n return { pid: session.proc.pid, data, seq }\n }\n\n function warmKill(rawParams: unknown): { ok: true } {\n const params = ptyWarmKillParamsSchema.parse(rawParams)\n const session = sessions.get(params.warmId)\n if (!session) return { ok: true }\n sessions.delete(params.warmId)\n try {\n session.proc.kill()\n } catch {\n // Already dead \u2014 ignore.\n }\n return { ok: true }\n }\n\n function warmList(): {\n warms: Array<{ warmId: string; cwd: string; pid: number; startedAt: number }>\n } {\n const warms: Array<{ warmId: string; cwd: string; pid: number; startedAt: number }> = []\n for (const [id, session] of sessions) {\n if (!session.warm) continue\n warms.push({\n warmId: id,\n cwd: session.warm.cwd,\n pid: session.proc.pid,\n startedAt: session.warm.startedAt\n })\n }\n return { warms }\n }\n\n function kill(rawParams: unknown): { ok: true } {\n const params = ptyKillParamsSchema.parse(rawParams)\n const session = sessions.get(params.sessionId)\n if (!session) {\n // Idempotent: the session may already have exited (network race).\n ctx.log('pty kill on unknown session', { sessionId: params.sessionId })\n return { ok: true }\n }\n try {\n session.proc.kill(params.signal)\n } catch (err) {\n ctx.log('pty kill failed', { sessionId: params.sessionId, error: String(err) })\n }\n return { ok: true }\n }\n\n function resize(rawParams: unknown): { ok: true } {\n const params = ptyResizeParamsSchema.parse(rawParams)\n const session = sessions.get(params.sessionId)\n if (!session) {\n ctx.log('pty resize on unknown session', { sessionId: params.sessionId })\n return { ok: true }\n }\n session.proc.resize(params.cols, params.rows)\n return { ok: true }\n }\n\n function write(rawParams: unknown): { ok: true } {\n const params = ptyWriteParamsSchema.parse(rawParams)\n const session = sessions.get(params.sessionId)\n if (!session) {\n ctx.log('pty write on unknown session', { sessionId: params.sessionId })\n return { ok: true }\n }\n session.proc.write(params.data)\n return { ok: true }\n }\n\n /**\n * Every live session this computer still holds, for hub reattach after a\n * dropped connection. The computer is the authority here \u2014 the hub's registry\n * is only a belief about this list, and a disconnect lets the two diverge in\n * both directions (sessions the hub gave up on that are still running;\n * sessions it still tracks that have since exited).\n *\n * Warm sessions are excluded by design: the hub holds no identity for one\n * until `pty.warmAdopt`, so offering it here would invent a session the hub\n * never had. They keep their own reconcile path.\n */\n function list(): PtyListResult {\n const live: PtyListResult['sessions'] = []\n for (const [id, session] of sessions) {\n if (session.warm) continue\n live.push({\n sessionId: id,\n pid: session.proc.pid,\n // -1 on an empty buffer \u2014 the same \"nothing seen yet\" sentinel the hub's\n // gap detector starts from, so a session that has emitted nothing needs\n // no special case on either side.\n seq: session.buffer.getCurrentSeq()\n })\n }\n return { sessions: live }\n }\n\n function getBufferSince(rawParams: unknown): { frames: Array<{ seq: number; data: string }> } {\n const params = ptyGetBufferSinceParamsSchema.parse(rawParams)\n const session = sessions.get(params.sessionId)\n if (!session) return { frames: [] }\n const frames = session.buffer\n .getChunksSince(params.seq)\n .map((c) => ({ seq: c.seq, data: c.data }))\n return { frames }\n }\n\n function disposeAll(): void {\n for (const [sessionId, session] of sessions) {\n try {\n session.proc.kill()\n } catch {\n // ignore\n }\n ctx.log('pty disposed on shutdown', { sessionId })\n }\n sessions.clear()\n }\n\n const handlers: HubMethodTable = {\n [HubToComputerMethods.ptySpawn]: spawn,\n [HubToComputerMethods.ptyKill]: kill,\n [HubToComputerMethods.ptyResize]: resize,\n [HubToComputerMethods.ptyWrite]: write,\n [HubToComputerMethods.ptyGetBufferSince]: getBufferSince,\n [HubToComputerMethods.ptyList]: list,\n [HubToComputerMethods.ptyWarmSpawn]: warmSpawn,\n [HubToComputerMethods.ptyWarmAdopt]: warmAdopt,\n [HubToComputerMethods.ptyWarmKill]: warmKill,\n [HubToComputerMethods.ptyWarmList]: warmList\n }\n\n return { handlers, disposeAll }\n}\n", "/**\n * Computer self-configuration handlers \u2014 currently just the path-jail.\n *\n * `allowedRoots` bounds every fs/git/proc path this computer will touch. Before\n * the filesystem ops were routed, the desktop app read and wrote the user's disk\n * directly with no jail at all, so routing them through the co-resident computer \u2014\n * whose supervised default is `[homedir()]` \u2014 would have silently stopped\n * working for any project on `/Volumes`, `/opt`, or an external drive. Rather\n * than accept that as a cap, the jail became editable.\n *\n * Writes are applied two ways at once, and both matter:\n * - persisted to `computer.config.json`, so a restart keeps them;\n * - written into the LIVE `ctx.config`, so they take effect immediately.\n * The handler modules read `ctx.config.allowedRoots` per call for exactly this\n * reason \u2014 a captured array would keep enforcing the boot-time set while the UI\n * reported success.\n *\n * @module computer/handlers/computer-config\n */\n\nimport { realpathSync } from 'node:fs'\nimport { isAbsolute, resolve } from 'node:path'\nimport { updateComputerConfigFile } from '@slayzone/platform/slayzone-config'\nimport {\n HubToComputerMethods,\n computerSetAllowedRootsParamsSchema,\n type ComputerSetAllowedRootsResult\n} from '@slayzone/computer-transport/shared'\nimport type { HandlerContext, HubMethodTable } from './types'\n\nexport function createComputerConfigHandlers(ctx: HandlerContext): HubMethodTable {\n /**\n * Validate, canonicalize, persist, and apply a new jail.\n *\n * A root is rejected rather than silently kept when it is relative (the jail\n * compares canonical absolute prefixes, so a relative entry could never match\n * anything) or absent from disk (`assertPathAllowed` skips unresolvable roots,\n * so keeping one would look configured while containing nothing). Both come\n * back in `rejected` so the UI can say which entry did not take, instead of\n * showing a saved list that quietly differs from the enforced one.\n */\n function setAllowedRoots(rawParams: unknown): ComputerSetAllowedRootsResult {\n const { roots } = computerSetAllowedRootsParamsSchema.parse(rawParams)\n\n const applied: string[] = []\n const rejected: { path: string; reason: string }[] = []\n for (const root of roots) {\n if (!isAbsolute(root)) {\n rejected.push({ path: root, reason: 'not an absolute path' })\n continue\n }\n let real: string\n try {\n real = realpathSync.native(resolve(root))\n } catch {\n rejected.push({ path: root, reason: 'does not exist on this computer' })\n continue\n }\n if (!applied.includes(real)) applied.push(real)\n }\n\n // An empty set is refused rather than saved. `coerceComputerConfig` reads\n // `allowedRoots: []` back as \"unset\" and falls through to the defaults, so\n // persisting it would apply now and silently revert on the next restart \u2014\n // the worst of both. Say so instead; revoking the computer is the real way to\n // stop it doing work.\n if (applied.length === 0) {\n throw new Error(\n rejected.length > 0\n ? `no usable roots: ${rejected.map((r) => `${r.path} (${r.reason})`).join(', ')}`\n : 'a computer needs at least one allowed root; revoke the computer to stop it entirely'\n )\n }\n\n // Persist first: a crash between the two leaves the on-disk config ahead of\n // the live one, which a restart reconciles. The reverse \u2014 live ahead of\n // disk \u2014 silently reverts on restart with no trace of why.\n updateComputerConfigFile({ allowedRoots: applied })\n ctx.config.allowedRoots = applied\n ctx.log('computer allowedRoots updated', { applied, rejected: rejected.length })\n\n return { roots: applied, rejected }\n }\n\n return {\n [HubToComputerMethods.computerSetAllowedRoots]: setAllowedRoots\n }\n}\n", "/**\n * Where THIS computer keeps each project on its own disk.\n *\n * The hub used to hold one `projects.path` column: a directory it cannot see, on\n * a machine it does not own, with no room for a second answer. Two computers laying\n * the same project out differently made the hub necessarily wrong about one of\n * them, and a Windows computer does not even agree on the separator. So the mapping\n * moved here, where the disk is.\n *\n * Persisted at `<ROOT>/computer.projects.json`, keyed by hub host then project id \u2014\n * the same two-level shape as `computer.state.json`, and for the same reason: a\n * computer can be enrolled with several hubs, and dropping one hub's entry must not\n * disturb another's.\n *\n * Not a secret, but written 0600 through the same atomic replace anyway: a\n * half-written map would strand every project on this machine, which is a worse\n * failure than a slightly over-tight mode bit.\n *\n * @module computer/project-paths\n */\n\nimport { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises'\nimport { homedir } from 'node:os'\nimport { dirname, join } from 'node:path'\nimport { z } from 'zod'\n\n/** Mirrors the credential store's precedence: `SLAYZONE_ROOT` > `$HOME/.slayzone`. */\nfunction slayzoneRootDir(): string {\n if (process.env.SLAYZONE_ROOT) return process.env.SLAYZONE_ROOT\n const home = process.env.HOME ?? process.env.USERPROFILE ?? homedir()\n return join(home, '.slayzone')\n}\n\nexport const projectPathEntrySchema = z.object({\n /** Absolute, realpath-resolved at write time. */\n path: z.string().min(1),\n updatedAt: z.number()\n})\nexport type ProjectPathEntry = z.infer<typeof projectPathEntrySchema>\n\nconst projectMapSchema = z.record(z.string(), projectPathEntrySchema)\ntype ProjectMap = z.infer<typeof projectMapSchema>\n\nexport interface ProjectPathStore {\n /** Null when this computer has no checkout of that project \u2014 a real state. */\n get(projectId: string): ProjectPathEntry | null\n set(projectId: string, path: string): Promise<ProjectPathEntry>\n forget(projectId: string): Promise<void>\n list(): Array<{ projectId: string } & ProjectPathEntry>\n /** Absolute path of the backing file (diagnostics). */\n readonly filePath: string\n}\n\nexport function projectsFilePath(baseDir?: string): string {\n return join(baseDir ?? slayzoneRootDir(), 'computer.projects.json')\n}\n\n/** Whole file: `{ [hubHost]: { [projectId]: entry } }`. */\nconst fileSchema = z.record(z.string(), projectMapSchema)\n\nasync function readFileMap(filePath: string): Promise<Record<string, ProjectMap>> {\n let raw: string\n try {\n raw = await readFile(filePath, 'utf8')\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return {}\n throw err\n }\n let parsed: unknown\n try {\n parsed = JSON.parse(raw)\n } catch {\n return {}\n }\n // Drop only the entries that fail validation, never the whole file \u2014 one bad\n // row must not orphan every other project on this machine.\n const out: Record<string, ProjectMap> = {}\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) return {}\n for (const [host, projects] of Object.entries(parsed as Record<string, unknown>)) {\n if (typeof projects !== 'object' || projects === null) continue\n const map: ProjectMap = {}\n for (const [projectId, entry] of Object.entries(projects as Record<string, unknown>)) {\n const ok = projectPathEntrySchema.safeParse(entry)\n if (ok.success) map[projectId] = ok.data\n }\n out[host] = map\n }\n return fileSchema.parse(out)\n}\n\nasync function writeFileMap(filePath: string, map: Record<string, ProjectMap>): Promise<void> {\n await mkdir(dirname(filePath), { recursive: true, mode: 0o700 })\n const tmpPath = `${filePath}.tmp-${process.pid}-${Date.now()}`\n await writeFile(tmpPath, `${JSON.stringify(map, null, 2)}\\n`, { mode: 0o600 })\n try {\n await rename(tmpPath, filePath)\n } catch (err) {\n await rm(tmpPath, { force: true })\n throw err\n }\n}\n\n/**\n * Load the store for one hub.\n *\n * Reads once at construction and serves `get` from memory: resolving a cwd sits\n * directly in the agent-spawn path, and a disk read per spawn would put file I/O\n * between the user pressing start and the pty existing. Writes are write-through,\n * and re-read the whole file first so a concurrent computer for a DIFFERENT hub\n * cannot be clobbered by this one's write.\n */\nexport async function createProjectPathStore(\n hubHost: string,\n options: { baseDir?: string } = {}\n): Promise<ProjectPathStore> {\n if (!hubHost.trim()) throw new Error(`invalid hub host for project map: '${hubHost}'`)\n const filePath = projectsFilePath(options.baseDir)\n let cache: ProjectMap = (await readFileMap(filePath))[hubHost] ?? {}\n\n return {\n filePath,\n\n get(projectId) {\n return cache[projectId] ?? null\n },\n\n async set(projectId, path) {\n const entry: ProjectPathEntry = { path, updatedAt: Date.now() }\n const all = await readFileMap(filePath)\n all[hubHost] = { ...(all[hubHost] ?? {}), [projectId]: entry }\n await writeFileMap(filePath, all)\n cache = all[hubHost]\n return entry\n },\n\n async forget(projectId) {\n const all = await readFileMap(filePath)\n const forHub = { ...(all[hubHost] ?? {}) }\n delete forHub[projectId]\n all[hubHost] = forHub\n await writeFileMap(filePath, all)\n cache = forHub\n },\n\n list() {\n return Object.entries(cache).map(([projectId, entry]) => ({ projectId, ...entry }))\n }\n }\n}\n", "/**\n * Computer main \u2014 wires config + credential store + hub dialer into a running\n * exec node. The transport, enrollment, heartbeats, and reconnect logic live in\n * `@slayzone/computer-transport`; this module owns the hub\u2192computer request DISPATCH TABLE that\n * routes each method to its exec handler (pty.*, git.*, fs.*, proc.*), plus a\n * graceful `computer.shutdown`. Unknown methods answer `-32001 unimplemented`.\n *\n * @module computer/main\n */\n\nimport {\n createFileCredentialStore,\n HubDialer,\n hubHostFromUrl,\n type ComputerCredentialStore,\n type ComputerIdentity\n} from '@slayzone/computer-transport/client'\nimport {\n ComputerTransportErrorCodes,\n HubToComputerMethods,\n RpcError,\n computerShutdownParamsSchema\n} from '@slayzone/computer-transport/shared'\nimport { effectiveHubUrls, type ComputerConfig } from './config'\nimport { startHostIdReconciler } from './host-id'\nimport { type AgentHookServer, createAgentHookServer } from './handlers/agent-hook'\nimport { createFsHandlers } from './handlers/fs'\nimport { createGhHandlers } from './handlers/gh'\nimport { createGitHandlers } from './handlers/git'\nimport { createProcHandlers } from './handlers/proc'\nimport { createProjectHandlers } from './handlers/project'\nimport { createPtyHandlers } from './handlers/pty'\nimport { createComputerConfigHandlers } from './handlers/computer-config'\nimport { createProjectPathStore, type ProjectPathStore } from './project-paths'\nimport type { HandlerContext, HubMethodTable, ComputerDialer, ComputerLog } from './handlers/types'\n\n/** Version advertised at enrollment; wave-1 skeleton is pre-release. */\nexport const COMPUTER_VERSION = '0.0.0'\n\nexport interface ComputerRuntimeDeps {\n log?: ComputerLog\n /** Invoked after a graceful `computer.shutdown` stop completes. */\n onShutdown?: (reason: string) => void\n /** Override the credential store (tests). */\n credentialStore?: ComputerCredentialStore\n}\n\nexport interface ComputerHandle {\n /** The primary hub's dialer \u2014 `hubUrls[0]`, or the single `hubUrl`. */\n dialer: HubDialer\n /** One per hub this computer serves. Length 1 unless `hubUrls` is configured. */\n dialers: HubDialer[]\n stop(): Promise<void>\n}\n\n/** One hub's worth of runtime: its dialer, and how to tear it down. */\ninterface HubConnection {\n dialer: HubDialer\n dispose: () => Promise<void>\n}\n\nexport interface HubRequestHandlerDeps {\n /** Trigger a graceful stop (after the ack flushes). */\n shutdown: (reason: string) => void\n /** Dialer used by streaming handlers (pty.data/exit, proc.data/exit, \u2026). */\n dialer: ComputerDialer\n config: ComputerConfig\n log?: ComputerLog\n /** Computer loopback agent-hook URL \u2014 overlaid into every spawned agent's env\n * (see HandlerContext.agentHookUrl). Absent \u2192 env passthrough (tests). */\n agentHookUrl?: string\n /**\n * Where this computer keeps each project on disk. Read lazily: the map comes\n * from a file and the dispatch table is built synchronously, so the handlers\n * register immediately and report \"still loading\" until it arrives.\n */\n getProjectPaths?: () => ProjectPathStore | null\n}\n\nexport interface HubRequestDispatch {\n /** Route one hub\u2192computer request to its handler. */\n handle(method: string, params: unknown): Promise<unknown>\n /** Tear down live sessions/processes (computer shutdown). */\n dispose(): void\n /** Late-bind the computer loopback agent-hook URL once its listener has bound\n * (the port is ephemeral, resolved async after the dispatch is built). The\n * ctx is shared by reference, so pty spawns issued after this see the URL. */\n setAgentHookUrl(url: string): void\n}\n\n/**\n * Build the hub\u2192computer dispatch table. `computer.shutdown` acks then triggers the\n * graceful stop; pty/git/fs/proc methods route to their handler modules;\n * everything else throws `-32001 unimplemented`.\n */\nexport function createHubRequestHandler(deps: HubRequestHandlerDeps): HubRequestDispatch {\n const log =\n deps.log ??\n (() => {\n // Logging is opt-in \u2014 with no sink, handler diagnostics are discarded.\n })\n const ctx: HandlerContext = {\n dialer: deps.dialer,\n config: deps.config,\n log,\n ...(deps.agentHookUrl ? { agentHookUrl: deps.agentHookUrl } : {})\n }\n\n const pty = createPtyHandlers(ctx, deps.getProjectPaths)\n const proc = createProcHandlers(ctx, deps.getProjectPaths)\n\n const shutdownHandler = async (params: unknown): Promise<{ ok: true }> => {\n const parsed = computerShutdownParamsSchema.safeParse(params ?? {})\n const reason = parsed.success ? (parsed.data.reason ?? 'hub-requested') : 'hub-requested'\n // Ack first; the dialer flushes the response before the socket drops.\n queueMicrotask(() => deps.shutdown(reason))\n return { ok: true }\n }\n\n const table: HubMethodTable = {\n [HubToComputerMethods.computerShutdown]: shutdownHandler,\n ...pty.handlers,\n ...proc.handlers,\n ...createGitHandlers(ctx),\n ...createFsHandlers(ctx),\n ...createComputerConfigHandlers(ctx),\n ...createGhHandlers(ctx),\n ...createProjectHandlers(ctx, deps.getProjectPaths ?? (() => null))\n }\n\n const handle = async (method: string, params: unknown): Promise<unknown> => {\n const entry = table[method]\n if (!entry) {\n throw new RpcError(ComputerTransportErrorCodes.unimplemented, `unimplemented: ${method}`)\n }\n return entry(params)\n }\n\n const dispose = (): void => {\n pty.disposeAll()\n proc.disposeAll()\n }\n\n const setAgentHookUrl = (url: string): void => {\n ctx.agentHookUrl = url\n }\n\n return { handle, dispose, setAgentHookUrl }\n}\n\nexport function startComputer(\n config: ComputerConfig,\n deps: ComputerRuntimeDeps = {}\n): ComputerHandle {\n const log =\n deps.log ??\n (() => {\n // Logging is opt-in \u2014 with no sink, computer lifecycle diagnostics are discarded.\n })\n\n // `startComputer` is synchronous, and resolving the host id is file I/O. Rather\n // than make the whole entrypoint async, the identity object is MUTABLE and the\n // dialer reads `hostId` when it builds an enroll/hello frame \u2014 not when the\n // dialer is constructed. Local file reads finish long before a socket does, so\n // in practice the first enroll carries it; if it ever loses that race the field\n // is optional and the computer is simply ungrouped until its next connect.\n //\n // Failure is never fatal: grouping is cosmetic.\n const identity = {\n name: config.name,\n platform: `${process.platform}-${process.arch}`,\n version: COMPUTER_VERSION,\n capabilities: config.capabilities\n } as ComputerIdentity\n let hostIdStop: (() => void) | undefined\n void startHostIdReconciler({ log })\n .then((r) => {\n identity.hostId = r.hostId\n hostIdStop = r.stop\n })\n .catch((err: unknown) => {\n log('host id unavailable \u2014 this computer will not be grouped onto a machine', {\n error: err instanceof Error ? err.message : String(err)\n })\n })\n\n let handle: ComputerHandle\n\n /**\n * Everything that belongs to ONE hub.\n *\n * All of it is per-hub, including the agent-hook relay: a pty spawned by hub A\n * is dispatched by A's table and must post its hooks back over A's socket, so a\n * shared relay would forward another hub's agent lifecycle to the wrong place.\n * The two persistence layers were already keyed by hub host, so nothing new is\n * stored \u2014 this is the runtime catching up with a shape the files always had.\n */\n const connectHub = (hubUrl: string, isPrimary: boolean): HubConnection => {\n // Creds always derive from the ROOT anchor, keyed by hub host. The injected\n // store (tests) applies to the PRIMARY hub only \u2014 one store cannot stand in\n // for several hubs' credentials without silently sharing one entry.\n const credentialStore =\n (isPrimary ? deps.credentialStore : undefined) ??\n createFileCredentialStore(hubHostFromUrl(hubUrl))\n\n // Pinning is meaningless without TLS. An EXPLICIT pin on a ws:// url already\n // failed loudly in loadComputerConfig, so a pin reaching here on ws:// can only\n // be the join-token-decoded one (the auto path) \u2014 softly dropped so a ws token\n // stays usable for loopback/dev. Evaluated PER HUB: one hub may be wss and\n // another loopback ws.\n const isSecureUrl = (() => {\n try {\n return new URL(hubUrl).protocol === 'wss:'\n } catch {\n return false\n }\n })()\n const pinnedCertSha256 =\n config.pinnedCertSha256 && isSecureUrl ? config.pinnedCertSha256 : undefined\n if (config.pinnedCertSha256 && !isSecureUrl) {\n log(\n 'ignoring token-decoded cert fingerprint on a non-wss hub url (pinning requires wss://)',\n {\n hubUrl\n }\n )\n }\n\n let dispatch: HubRequestDispatch\n const dialer = new HubDialer({\n url: hubUrl,\n identity,\n credentialStore,\n ...(config.joinToken && isPrimary ? { joinToken: config.joinToken } : {}),\n ...(pinnedCertSha256 ? { pinnedCertSha256 } : {}),\n onHubRequest: (method, params) => dispatch.handle(method, params),\n log\n })\n\n // Where this computer keeps THIS hub's projects. Loaded async (one file read)\n // and late-bound, like the agent-hook URL \u2014 the dispatch table is synchronous.\n let projectPaths: ProjectPathStore | null = null\n void createProjectPathStore(hubHostFromUrl(hubUrl))\n .then((store) => {\n projectPaths = store\n log('project path map loaded', {\n hubUrl,\n file: store.filePath,\n count: store.list().length\n })\n })\n .catch((err) => log('project path map failed to load', { hubUrl, error: String(err) }))\n\n dispatch = createHubRequestHandler({\n shutdown: (reason) => {\n log('computer shutdown requested by hub', { hubUrl, reason })\n void handle.stop().then(() => deps.onShutdown?.(reason))\n },\n dialer,\n config,\n log,\n getProjectPaths: () => projectPaths\n })\n\n // Every line carries the hub, because with more than one connection \"reconnect\n // scheduled\" on its own does not say which peer went away.\n dialer.events.on('connected', ({ computerId, mode }) =>\n log('connected to hub', { hubUrl, computerId, mode })\n )\n dialer.events.on('disconnected', ({ reason }) =>\n log('disconnected from hub', { hubUrl, reason })\n )\n dialer.events.on('reconnect-scheduled', ({ attempt, delayMs }) =>\n log('reconnect scheduled', { hubUrl, attempt, delayMs })\n )\n dialer.events.on('error', ({ error, fatal, reason }) => {\n // `needs-re-enrollment` is the one failure an operator can act on: that hub no\n // longer recognizes this computer (its storage was deleted, one of its two DBs\n // was restored without the other, or the computer was revoked). Log it as its\n // own thing rather than burying it in a generic fatal, because the message\n // carries the fix.\n if (reason === 'needs-re-enrollment') {\n log('NEEDS RE-ENROLLMENT \u2014 this computer will not reconnect until it is enrolled again', {\n hubUrl,\n error: error.message,\n reason\n })\n return\n }\n log(fatal ? 'fatal error' : 'error', { hubUrl, error: error.message, fatal })\n })\n\n // Agent-hook loopback relay: host /api/agent-hook on this computer's own\n // loopback and forward each envelope to THIS hub over its authed ws channel.\n // Its ephemeral port binds async; feed the URL into the dispatch so ptys\n // spawned after the bind overlay it into the agent env. Best-effort \u2014 a bind\n // failure only degrades remote hooks, it does not stop exec.\n let agentHookServer: AgentHookServer | null = null\n void createAgentHookServer({ dialer, config, log })\n .then((srv) => {\n agentHookServer = srv\n dispatch.setAgentHookUrl(srv.url)\n })\n .catch((err) => log('agent-hook relay failed to start', { hubUrl, error: String(err) }))\n\n dialer.start()\n\n return {\n dialer,\n dispose: async () => {\n // Kill live ptys/processes before the socket drops so nothing is orphaned.\n dispatch.dispose()\n if (agentHookServer) await agentHookServer.close()\n await dialer.stop()\n }\n }\n }\n\n const hubUrls = effectiveHubUrls(config)\n const connections = hubUrls.map((url, i) => connectHub(url, i === 0))\n\n handle = {\n // The primary hub's dialer. Kept as a named field because a computer serving\n // exactly one hub is the overwhelming case and every existing caller reads it;\n // `dialers` is what multi-hub callers iterate.\n dialer: connections[0].dialer,\n dialers: connections.map((c) => c.dialer),\n stop: async () => {\n hostIdStop?.()\n await Promise.all(connections.map((c) => c.dispose()))\n }\n }\n return handle\n}\n"],
|
|
5
|
+
"mappings": "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AAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA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",
|
|
6
|
+
"names": ["os", "path", "exports", "module", "createWebSocketStream", "error", "err", "open", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "data", "exports", "module", "exports", "module", "Receiver", "error", "exports", "module", "Sender", "merge", "exports", "module", "error", "exports", "module", "parse", "exports", "module", "http", "createHash", "URL", "Receiver", "Sender", "parse", "WebSocket", "key", "exports", "module", "parse", "protocol", "exports", "module", "http", "createHash", "WebSocket", "WebSocketServer", "version", "map", "exports", "module", "object", "path", "fs", "path", "crypto", "merge", "resolve", "stat", "import_promises", "import_path", "path", "import_path", "execFileAsync", "stripManagedFromEntry", "buildManagedEntry", "MARKER_KEY", "TOOL_MATCHED_EVENTS", "isManagedSlayzoneHook", "import_node_child_process", "config", "stripManagedFromEntry", "buildManagedEntry", "MARKER_KEY", "TOOL_MATCHED_EVENTS", "isManagedSlayzoneHook", "path", "fs", "isENOENT", "stdout", "sep", "import_promises", "import_path", "import_child_process", "import_util", "execFileAsync", "TOOL_MATCHED_EVENTS", "import_node_child_process", "import_node_util", "init_agent_hooks", "import_node_os", "import_node_path", "path", "path", "path", "config", "path", "url", "resolve", "_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", "path", "Class", "_a", "config", "base64", "base64url", "hex", "error", "issue", "path", "_a", "version", "delimiter", "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", "path", "zodSchema", "objectSchema", "version", "bigint", "boolean", "date", "number", "string", "string", "number", "boolean", "bigint", "date", "set", "resolve", "unsubscribe", "import_promises", "import_node_path", "url", "map", "import_node_crypto", "WebSocket", "resolve", "error", "result", "import_node_fs", "import_node_os", "import_node_path", "url", "config", "import_node_crypto", "import_promises", "import_node_os", "import_node_path", "slayzoneRootDir", "fh", "http", "aborted", "resolve", "import_node_fs", "import_promises", "import_node_os", "import_node_path", "path", "cached", "ignore", "error", "readFile", "stat", "writeFile", "resolve", "fs", "path", "import_node_child_process", "import_node_fs", "import_promises", "import_node_path", "resolve", "stdout", "path", "path", "readFile", "writeFile", "import_node_child_process", "resolve", "stdout", "import_node_child_process", "import_node_fs", "import_promises", "import_node_path", "import_node_child_process", "resolve", "stdout", "path", "fsConstants", "import_node_child_process", "import_util", "import_node_fs", "import_os", "fs", "import_node_fs", "path", "MAX_BUFFER_SIZE", "spawn", "import_node_fs", "import_node_path", "import_promises", "import_node_os", "import_node_path", "slayzoneRootDir", "map", "path", "pty", "url", "config", "error", "config", "meta", "installAgentHooks"]
|
|
7
|
+
}
|