@studiometa/forge-mcp 0.3.0 → 0.4.1
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 +7 -6
- package/dist/formatters.d.ts +101 -36
- package/dist/formatters.d.ts.map +1 -1
- package/dist/handlers/backups.d.ts.map +1 -1
- package/dist/handlers/batch.d.ts.map +1 -1
- package/dist/handlers/certificates.d.ts.map +1 -1
- package/dist/handlers/commands.d.ts.map +1 -1
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/daemons.d.ts.map +1 -1
- package/dist/handlers/database-users.d.ts.map +1 -1
- package/dist/handlers/databases.d.ts.map +1 -1
- package/dist/handlers/deployments.d.ts.map +1 -1
- package/dist/handlers/env.d.ts.map +1 -1
- package/dist/handlers/factory.d.ts +7 -37
- package/dist/handlers/factory.d.ts.map +1 -1
- package/dist/handlers/firewall-rules.d.ts.map +1 -1
- package/dist/handlers/help.d.ts.map +1 -1
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/monitors.d.ts.map +1 -1
- package/dist/handlers/nginx-config.d.ts.map +1 -1
- package/dist/handlers/nginx-templates.d.ts.map +1 -1
- package/dist/handlers/recipes.d.ts.map +1 -1
- package/dist/handlers/redirect-rules.d.ts.map +1 -1
- package/dist/handlers/scheduled-jobs.d.ts.map +1 -1
- package/dist/handlers/security-rules.d.ts.map +1 -1
- package/dist/handlers/servers.d.ts.map +1 -1
- package/dist/handlers/sites.d.ts.map +1 -1
- package/dist/handlers/ssh-keys.d.ts.map +1 -1
- package/dist/handlers/user.d.ts.map +1 -1
- package/dist/handlers/utils.d.ts +1 -1
- package/dist/handlers/utils.d.ts.map +1 -1
- package/dist/hints.d.ts +1 -1
- package/dist/hints.d.ts.map +1 -1
- package/dist/{http-Cwp91mT-.js → http-BhU5Kdf3.js} +16 -12
- package/dist/http-BhU5Kdf3.js.map +1 -0
- package/dist/http.d.ts +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -10
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +1 -1
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +42 -41
- package/dist/oauth.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/sessions.d.ts.map +1 -1
- package/dist/stdio.d.ts +4 -2
- package/dist/stdio.d.ts.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/{version-CIiN0iJr.js → version-Bs3iU4Ei.js} +922 -364
- package/dist/version-Bs3iU4Ei.js.map +1 -0
- package/package.json +4 -4
- package/skills/SKILL.md +14 -12
- package/dist/http-Cwp91mT-.js.map +0 -1
- package/dist/version-CIiN0iJr.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-Bs3iU4Ei.js","names":[],"sources":["../src/instructions.ts","../../../node_modules/valibot/dist/index.mjs","../src/formatters.ts","../src/errors.ts","../src/handlers/utils.ts","../src/handlers/factory.ts","../src/handlers/backups.ts","../src/tools.ts","../src/handlers/batch.ts","../src/hints.ts","../src/handlers/certificates.ts","../src/handlers/commands.ts","../src/handlers/daemons.ts","../src/handlers/databases.ts","../src/handlers/database-users.ts","../src/handlers/deployments.ts","../src/handlers/env.ts","../src/handlers/firewall-rules.ts","../src/handlers/help.ts","../src/handlers/monitors.ts","../src/handlers/nginx-config.ts","../src/handlers/nginx-templates.ts","../src/handlers/recipes.ts","../src/handlers/redirect-rules.ts","../src/handlers/scheduled-jobs.ts","../src/handlers/schema.ts","../src/handlers/security-rules.ts","../src/handlers/context.ts","../src/handlers/servers.ts","../src/handlers/sites.ts","../src/handlers/ssh-keys.ts","../src/handlers/user.ts","../src/handlers/auto-resolve.ts","../src/handlers/index.ts","../src/version.ts"],"sourcesContent":["/**\n * MCP Server Instructions\n *\n * These instructions are sent to MCP clients during initialization\n * and used as context/hints for the LLM. Ensures the AI agent\n * knows how to properly use the Forge MCP server.\n *\n * The content is derived from skills/SKILL.md (without YAML frontmatter).\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\n/**\n * Load instructions from SKILL.md file.\n * Removes YAML frontmatter (content between --- markers).\n */\nfunction loadInstructions(): string {\n try {\n // In dist/, go up to package root, then to skills/\n const skillPath = join(__dirname, \"..\", \"skills\", \"SKILL.md\");\n const content = readFileSync(skillPath, \"utf-8\");\n\n // Remove YAML frontmatter (between --- markers at start of file)\n const withoutFrontmatter = content.replace(/^---\\n[\\s\\S]*?\\n---\\n+/, \"\");\n\n return withoutFrontmatter.trim();\n } catch {\n return 'Laravel Forge MCP Server - Use the forge tool with resource and action parameters. Call action=\"help\" for documentation.';\n }\n}\n\nexport const INSTRUCTIONS = loadInstructions();\n","//#region src/storages/globalConfig/globalConfig.ts\nlet store$4;\n/**\n* Sets the global configuration.\n*\n* @param config The configuration.\n*/\nfunction setGlobalConfig(config$1) {\n\tstore$4 = {\n\t\t...store$4,\n\t\t...config$1\n\t};\n}\n/**\n* Returns the global configuration.\n*\n* @param config The config to merge.\n*\n* @returns The configuration.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalConfig(config$1) {\n\treturn {\n\t\tlang: config$1?.lang ?? store$4?.lang,\n\t\tmessage: config$1?.message,\n\t\tabortEarly: config$1?.abortEarly ?? store$4?.abortEarly,\n\t\tabortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly\n\t};\n}\n/**\n* Deletes the global configuration.\n*/\nfunction deleteGlobalConfig() {\n\tstore$4 = void 0;\n}\n\n//#endregion\n//#region src/storages/globalMessage/globalMessage.ts\nlet store$3;\n/**\n* Sets a global error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setGlobalMessage(message$1, lang) {\n\tif (!store$3) store$3 = /* @__PURE__ */ new Map();\n\tstore$3.set(lang, message$1);\n}\n/**\n* Returns a global error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalMessage(lang) {\n\treturn store$3?.get(lang);\n}\n/**\n* Deletes a global error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteGlobalMessage(lang) {\n\tstore$3?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/schemaMessage/schemaMessage.ts\nlet store$2;\n/**\n* Sets a schema error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSchemaMessage(message$1, lang) {\n\tif (!store$2) store$2 = /* @__PURE__ */ new Map();\n\tstore$2.set(lang, message$1);\n}\n/**\n* Returns a schema error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSchemaMessage(lang) {\n\treturn store$2?.get(lang);\n}\n/**\n* Deletes a schema error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteSchemaMessage(lang) {\n\tstore$2?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/specificMessage/specificMessage.ts\nlet store$1;\n/**\n* Sets a specific error message.\n*\n* @param reference The identifier reference.\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSpecificMessage(reference, message$1, lang) {\n\tif (!store$1) store$1 = /* @__PURE__ */ new Map();\n\tif (!store$1.get(reference)) store$1.set(reference, /* @__PURE__ */ new Map());\n\tstore$1.get(reference).set(lang, message$1);\n}\n/**\n* Returns a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSpecificMessage(reference, lang) {\n\treturn store$1?.get(reference)?.get(lang);\n}\n/**\n* Deletes a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*/\nfunction deleteSpecificMessage(reference, lang) {\n\tstore$1?.get(reference)?.delete(lang);\n}\n\n//#endregion\n//#region src/utils/_stringify/_stringify.ts\n/**\n* Stringifies an unknown input to a literal or type string.\n*\n* @param input The unknown input.\n*\n* @returns A literal or type string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _stringify(input) {\n\tconst type = typeof input;\n\tif (type === \"string\") return `\"${input}\"`;\n\tif (type === \"number\" || type === \"bigint\" || type === \"boolean\") return `${input}`;\n\tif (type === \"object\" || type === \"function\") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n\treturn type;\n}\n\n//#endregion\n//#region src/utils/_addIssue/_addIssue.ts\n/**\n* Adds an issue to the dataset.\n*\n* @param context The issue context.\n* @param label The issue label.\n* @param dataset The input dataset.\n* @param config The configuration.\n* @param other The optional props.\n*\n* @internal\n*/\nfunction _addIssue(context, label, dataset, config$1, other) {\n\tconst input = other && \"input\" in other ? other.input : dataset.value;\n\tconst expected = other?.expected ?? context.expects ?? null;\n\tconst received = other?.received ?? /* @__PURE__ */ _stringify(input);\n\tconst issue = {\n\t\tkind: context.kind,\n\t\ttype: context.type,\n\t\tinput,\n\t\texpected,\n\t\treceived,\n\t\tmessage: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n\t\trequirement: context.requirement,\n\t\tpath: other?.path,\n\t\tissues: other?.issues,\n\t\tlang: config$1.lang,\n\t\tabortEarly: config$1.abortEarly,\n\t\tabortPipeEarly: config$1.abortPipeEarly\n\t};\n\tconst isSchema = context.kind === \"schema\";\n\tconst message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);\n\tif (message$1 !== void 0) issue.message = typeof message$1 === \"function\" ? message$1(issue) : message$1;\n\tif (isSchema) dataset.typed = false;\n\tif (dataset.issues) dataset.issues.push(issue);\n\telse dataset.issues = [issue];\n}\n\n//#endregion\n//#region src/utils/_cloneDataset/_cloneDataset.ts\n/**\n* Creates a shallow copy of a dataset.\n*\n* Hint: The `value` is copied by reference, but the `issues` array is cloned\n* to avoid reusing mutable dataset state across multiple runs. Mutating a\n* returned object or array value can therefore affect later cache hits that\n* reuse the same cached output.\n*\n* @param dataset The output dataset.\n*\n* @returns The copied output dataset.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cloneDataset(dataset) {\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tvalue: dataset.value,\n\t\tissues: dataset.issues && [...dataset.issues]\n\t};\n}\n\n//#endregion\n//#region src/utils/_getByteCount/_getByteCount.ts\nlet textEncoder;\n/**\n* Returns the byte count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The byte count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getByteCount(input) {\n\tif (!textEncoder) textEncoder = new TextEncoder();\n\treturn textEncoder.encode(input).length;\n}\n\n//#endregion\n//#region src/utils/_getGraphemeCount/_getGraphemeCount.ts\nlet segmenter;\n/**\n* Returns the grapheme count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The grapheme count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getGraphemeCount(input) {\n\tif (!segmenter) segmenter = new Intl.Segmenter();\n\tconst segments = segmenter.segment(input);\n\tlet count = 0;\n\tfor (const _ of segments) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_getLastMetadata/_getLastMetadata.ts\n/**\n* Returns the last top-level value of a given metadata type from a schema\n* using a breadth-first search that starts with the last item in the pipeline.\n*\n* @param schema The schema to search.\n* @param type The metadata type.\n*\n* @returns The value, if any.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getLastMetadata(schema, type) {\n\tif (\"pipe\" in schema) {\n\t\tconst nestedSchemas = [];\n\t\tfor (let index = schema.pipe.length - 1; index >= 0; index--) {\n\t\t\tconst item = schema.pipe[index];\n\t\t\tif (item.kind === \"schema\" && \"pipe\" in item) nestedSchemas.push(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === type) return item[type];\n\t\t}\n\t\tfor (const nestedSchema of nestedSchemas) {\n\t\t\tconst result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/utils/_getStandardProps/_getStandardProps.ts\n/**\n* Returns the Standard Schema properties.\n*\n* @param context The schema context.\n*\n* @returns The Standard Schema properties.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getStandardProps(context) {\n\treturn {\n\t\tversion: 1,\n\t\tvendor: \"valibot\",\n\t\tvalidate(value$1) {\n\t\t\treturn context[\"~run\"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig());\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/utils/_getWordCount/_getWordCount.ts\nlet store;\n/**\n* Returns the word count of the input.\n*\n* @param locales The locales to be used.\n* @param input The input to be measured.\n*\n* @returns The word count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getWordCount(locales, input) {\n\tif (!store) store = /* @__PURE__ */ new Map();\n\tif (!store.get(locales)) store.set(locales, new Intl.Segmenter(locales, { granularity: \"word\" }));\n\tconst segments = store.get(locales).segment(input);\n\tlet count = 0;\n\tfor (const segment of segments) if (segment.isWordLike) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\n/**\n* Non-digit regex.\n*/\nconst NON_DIGIT_REGEX = /\\D/gu;\n/**\n* Checks whether a string with numbers corresponds to the luhn algorithm.\n*\n* @param input The input to be checked.\n*\n* @returns Whether input is valid.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isLuhnAlgo(input) {\n\tconst number$1 = input.replace(NON_DIGIT_REGEX, \"\");\n\tlet length$1 = number$1.length;\n\tlet bit = 1;\n\tlet sum = 0;\n\twhile (length$1) {\n\t\tconst value$1 = +number$1[--length$1];\n\t\tbit ^= 1;\n\t\tsum += bit ? [\n\t\t\t0,\n\t\t\t2,\n\t\t\t4,\n\t\t\t6,\n\t\t\t8,\n\t\t\t1,\n\t\t\t3,\n\t\t\t5,\n\t\t\t7,\n\t\t\t9\n\t\t][value$1] : value$1;\n\t}\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/utils/_isValidObjectKey/_isValidObjectKey.ts\n/**\n* Disallows inherited object properties and prevents object prototype\n* pollution by disallowing certain keys.\n*\n* @param object The object to check.\n* @param key The key to check.\n*\n* @returns Whether the key is allowed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isValidObjectKey(object$1, key) {\n\treturn Object.hasOwn(object$1, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n//#endregion\n//#region src/utils/_joinExpects/_joinExpects.ts\n/**\n* Joins multiple `expects` values with the given separator.\n*\n* @param values The `expects` values.\n* @param separator The separator.\n*\n* @returns The joined `expects` property.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _joinExpects(values$1, separator) {\n\tconst list = [...new Set(values$1)];\n\tif (list.length > 1) return `(${list.join(` ${separator} `)})`;\n\treturn list[0] ?? \"never\";\n}\n\n//#endregion\n//#region src/utils/entriesFromList/entriesFromList.ts\n/**\n* Creates an object entries definition from a list of keys and a schema.\n*\n* @param list A list of keys.\n* @param schema The schema of the keys.\n*\n* @returns The object entries.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromList(list, schema) {\n\tconst entries$1 = {};\n\tfor (const key of list) entries$1[key] = schema;\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/entriesFromObjects/entriesFromObjects.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromObjects(schemas) {\n\tconst entries$1 = {};\n\tfor (const schema of schemas) Object.assign(entries$1, schema.entries);\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/getDotPath/getDotPath.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDotPath(issue) {\n\tif (issue.path) {\n\t\tlet key = \"\";\n\t\tfor (const item of issue.path) if (typeof item.key === \"string\" || typeof item.key === \"number\") if (key) key += `.${item.key}`;\n\t\telse key += item.key;\n\t\telse return null;\n\t\treturn key;\n\t}\n\treturn null;\n}\n\n//#endregion\n//#region src/utils/isOfKind/isOfKind.ts\n/**\n* A generic type guard to check the kind of an object.\n*\n* @param kind The kind to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfKind(kind, object$1) {\n\treturn object$1.kind === kind;\n}\n\n//#endregion\n//#region src/utils/isOfType/isOfType.ts\n/**\n* A generic type guard to check the type of an object.\n*\n* @param type The type to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfType(type, object$1) {\n\treturn object$1.type === type;\n}\n\n//#endregion\n//#region src/utils/isValiError/isValiError.ts\n/**\n* A type guard to check if an error is a ValiError.\n*\n* @param error The error to check.\n*\n* @returns Whether its a ValiError.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isValiError(error) {\n\treturn error instanceof ValiError;\n}\n\n//#endregion\n//#region src/utils/ValiError/ValiError.ts\n/**\n* A Valibot error with useful information.\n*/\nvar ValiError = class extends Error {\n\t/**\n\t* Creates a Valibot error with useful information.\n\t*\n\t* @param issues The error issues.\n\t*/\n\tconstructor(issues) {\n\t\tsuper(issues[0].message);\n\t\tthis.name = \"ValiError\";\n\t\tthis.issues = issues;\n\t}\n};\n\n//#endregion\n//#region src/actions/args/args.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction args(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: args,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst argsDataset = this.schema[\"~run\"]({ value: args_ }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/args/argsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction argsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: argsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args$1) => {\n\t\t\t\tconst argsDataset = await schema[\"~run\"]({ value: args$1 }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/await/awaitAsync.ts\n/**\n* Creates an await transformation action.\n*\n* @returns An await action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction awaitAsync() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"await\",\n\t\treference: awaitAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/regex.ts\n/**\n* [Base64](https://en.wikipedia.org/wiki/Base64) regex.\n*/\nconst BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\n/**\n* [BIC](https://en.wikipedia.org/wiki/ISO_9362) regex.\n*/\nconst BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\n/**\n* [Cuid2](https://github.com/paralleldrive/cuid2) regex.\n*/\nconst CUID2_REGEX = /^[a-z][\\da-z]*$/u;\n/**\n* [Decimal](https://en.wikipedia.org/wiki/Decimal) regex.\n*/\nconst DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\n/**\n* [Digits](https://en.wikipedia.org/wiki/Numerical_digit) regex.\n*/\nconst DIGITS_REGEX = /^\\d+$/u;\n/**\n* [Domain name](https://en.wikipedia.org/wiki/Domain_name) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n* ASCII-only validation. Internationalized domain names (IDNs) are not\n* supported, including Punycode-encoded labels.\n*/\nconst DOMAIN_REGEX = /^(?=.{1,253}$)(?:(?![Xx][Nn]--)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$/u;\n/**\n* [Email address](https://en.wikipedia.org/wiki/Email_address) regex.\n*/\nconst EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\n/**\n* Emoji regex from [emoji-regex-xs](https://github.com/slevithan/emoji-regex-xs) v1.0.0 (MIT license).\n*\n* Hint: We decided against the newer `/^\\p{RGI_Emoji}+$/v` regex because it is\n* not supported in older runtimes and does not match all emoji.\n*/\nconst EMOJI_REGEX = /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$/u;\n/**\n* [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\n/**\n* [Hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\n/**\n* [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) regex.\n*/\nconst IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\n/**\n* [IPv4](https://en.wikipedia.org/wiki/IPv4) regex.\n*/\nconst IPV4_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u;\n/**\n* [IPv6](https://en.wikipedia.org/wiki/IPv6) regex.\n*/\nconst IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [IP](https://en.wikipedia.org/wiki/IP_address) regex.\n*/\nconst IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date regex.\n*/\nconst ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.\n*/\nconst ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time regex.\n*/\nconst ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time with seconds regex.\n*/\nconst ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp regex. Allows a\n* space as a date/time separator and an optional space before the UTC offset.\n*/\nconst ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z| ?[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week regex.\n*/\nconst ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\n/**\n* [JWS compact serialization](https://datatracker.ietf.org/doc/html/rfc7515#section-3.1)\n* regex.\n*\n* Hint: Empty payload and signature segments are allowed because the\n* Base64URL-encoded representation of an empty octet sequence is an empty\n* string.\n*/\nconst JWS_COMPACT_REGEX = /^(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?$/u;\n/**\n* [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) regex.\n*/\nconst ISRC_REGEX = /^(?:[A-Z]{2}[A-Z\\d]{3}\\d{7}|[A-Z]{2}-[A-Z\\d]{3}-\\d{2}-\\d{5})$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 48 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC48_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 64 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC64_REGEX = /^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [Nano ID](https://github.com/ai/nanoid) regex.\n*/\nconst NANO_ID_REGEX = /^[\\w-]+$/u;\n/**\n* [Octal](https://en.wikipedia.org/wiki/Octal) regex.\n*/\nconst OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\n/**\n* [RFC 5322 email address](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) regex.\n*\n* Hint: This regex was taken from the [HTML Living Standard Specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) and does not perfectly represent RFC 5322.\n*/\nconst RFC_EMAIL_REGEX = /^[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/**\n* [Slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) regex.\n*/\nconst SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\n/**\n* [ULID](https://github.com/ulid/spec) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst ULID_REGEX = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\n/**\n* [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) regex.\n*/\nconst UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n//#endregion\n//#region src/actions/base64/base64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction base64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"base64\",\n\t\treference: base64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BASE64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Base64\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bic/bic.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bic(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bic\",\n\t\treference: bic,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BIC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"BIC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/brand/brand.ts\n/**\n* Creates a brand transformation action.\n*\n* @param name The brand name.\n*\n* @returns A brand action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction brand(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"brand\",\n\t\treference: brand,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bytes/bytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bytes\",\n\t\treference: bytes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 !== this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/check.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction check(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: check,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/checkAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: checkAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItems(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItems,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) for (let index = 0; index < dataset.value.length; index++) {\n\t\t\t\tconst item = dataset.value[index];\n\t\t\t\tif (!this.requirement(item, index, dataset.value)) _addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\tinput: item,\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\tvalue: item\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItemsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItemsAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItemsAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst requirementResults = await Promise.all(dataset.value.map(this.requirement));\n\t\t\t\tfor (let index = 0; index < dataset.value.length; index++) if (!requirementResults[index]) {\n\t\t\t\t\tconst item = dataset.value[index];\n\t\t\t\t\t_addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\t\tinput: item,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\tvalue: item\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/creditCard/creditCard.ts\n/**\n* Credit card regex.\n*/\nconst CREDIT_CARD_REGEX = /^(?:\\d{13,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\n/**\n* Sanitize regex.\n*/\nconst SANITIZE_REGEX = /[- ]/gu;\n/**\n* Provider regex list.\n*/\nconst PROVIDER_REGEX_LIST = [\n\t/^3[47]\\d{13}$/u,\n\t/^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n\t/^6(?:011|5\\d{2})\\d{12,15}$/u,\n\t/^(?:2131|1800|35\\d{3})\\d{11}$/u,\n\t/^5[1-5]\\d{2}|(?:222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n\t/^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n\t/^4\\d{12}(?:\\d{3,6})?$/u\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction creditCard(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"credit_card\",\n\t\treference: creditCard,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tlet sanitized;\n\t\t\treturn CREDIT_CARD_REGEX.test(input) && (sanitized = input.replace(SANITIZE_REGEX, \"\")) && PROVIDER_REGEX_LIST.some((regex$1) => regex$1.test(sanitized)) && /* @__PURE__ */ _isLuhnAlgo(sanitized);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"credit card\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/cuid2/cuid2.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cuid2(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"cuid2\",\n\t\treference: cuid2,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: CUID2_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Cuid2\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/decimal/decimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction decimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"decimal\",\n\t\treference: decimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"decimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/description/description.ts\n/**\n* Creates a description metadata action.\n*\n* @param description_ The description text.\n*\n* @returns A description action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction description(description_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"description\",\n\t\treference: description,\n\t\tdescription: description_\n\t};\n}\n\n//#endregion\n//#region src/actions/digits/digits.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction digits(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"digits\",\n\t\treference: digits,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DIGITS_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"digits\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/domain/domain.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction domain(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"domain\",\n\t\treference: domain,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: DOMAIN_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"domain\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/email/email.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction email(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"email\",\n\t\treference: email,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/emoji/emoji.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction emoji(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"emoji\",\n\t\treference: emoji,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: EMOJI_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"emoji\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/empty/empty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction empty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"empty\",\n\t\treference: empty,\n\t\tasync: false,\n\t\texpects: \"0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > 0) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/endsWith/endsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction endsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ends_with\",\n\t\treference: endsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.endsWith(this.requirement)) _addIssue(this, \"end\", dataset, config$1, { received: `\"${dataset.value.slice(-this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/entries/entries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"entries\",\n\t\treference: entries,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count !== this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/everyItem/everyItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction everyItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"every_item\",\n\t\treference: everyItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.every(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/examples/examples.ts\n/**\n* Creates an examples metadata action.\n*\n* @param examples_ The examples.\n*\n* @returns An examples action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction examples(examples_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"examples\",\n\t\treference: examples,\n\t\texamples: examples_\n\t};\n}\n\n//#endregion\n//#region src/actions/excludes/excludes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction excludes(requirement, message$1) {\n\tconst received = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"excludes\",\n\t\treference: excludes,\n\t\tasync: false,\n\t\texpects: `!${received}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/filterItems/filterItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction filterItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"filter_items\",\n\t\treference: filterItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.filter(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/findItem/findItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction findItem(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"find_item\",\n\t\treference: findItem,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.find(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/finite/finite.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction finite(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"finite\",\n\t\treference: finite,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isFinite,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"finite\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/flavor/flavor.ts\n/**\n* Creates a flavor transformation action.\n*\n* @param name The flavor name.\n*\n* @returns A flavor action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction flavor(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"flavor\",\n\t\treference: flavor,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/graphemes/graphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction graphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"graphemes\",\n\t\treference: graphemes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/gtValue/gtValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction gtValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"gt_value\",\n\t\treference: gtValue,\n\t\tasync: false,\n\t\texpects: `>${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value > this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/guard/guard.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction guard(requirement, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"guard\",\n\t\treference: guard,\n\t\tasync: false,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) {\n\t\t\t\t_addIssue(this, \"input\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hash/hash.ts\n/**\n* Hash lengths object.\n*/\nconst HASH_LENGTHS = {\n\tmd4: 32,\n\tmd5: 32,\n\tsha1: 40,\n\tsha256: 64,\n\tsha384: 96,\n\tsha512: 128,\n\tripemd128: 32,\n\tripemd160: 40,\n\ttiger128: 32,\n\ttiger160: 40,\n\ttiger192: 48,\n\tcrc32: 8,\n\tcrc32b: 8,\n\tadler32: 8\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction hash(types, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hash\",\n\t\treference: hash,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RegExp(types.map((type) => `^[a-fA-F0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"), \"u\"),\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hash\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexadecimal/hexadecimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexadecimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hexadecimal\",\n\t\treference: hexadecimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEXADECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hexadecimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexColor/hexColor.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexColor(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hex_color\",\n\t\treference: hexColor,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEX_COLOR_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hex color\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/imei/imei.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction imei(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"imei\",\n\t\treference: imei,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\treturn IMEI_REGEX.test(input) && /* @__PURE__ */ _isLuhnAlgo(input);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"IMEI\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/includes/includes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction includes(requirement, message$1) {\n\tconst expects = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"includes\",\n\t\treference: includes,\n\t\tasync: false,\n\t\texpects,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received: `!${expects}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/integer/integer.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction integer(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"integer\",\n\t\treference: integer,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ip/ip.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ip(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ip\",\n\t\treference: ip,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IP\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv4/ipv4.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv4(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv4\",\n\t\treference: ipv4,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV4_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv4\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv6/ipv6.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv6(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv6\",\n\t\treference: ipv6,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV6_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv6\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn10.ts\n/**\n* [Validates an ISBN-10](https://en.wikipedia.org/wiki/ISBN#ISBN-10_check_digits).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-10, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn10(input) {\n\tconst digits$1 = input.split(\"\").map((c) => c === \"X\" ? 10 : parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 10; i++) sum += digits$1[i] * (10 - i);\n\treturn sum % 11 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn13.ts\n/**\n* [Validates an ISBN-13](https://en.wikipedia.org/wiki/ISBN#ISBN-13_check_digit_calculation).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-13, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn13(input) {\n\tconst digits$1 = input.split(\"\").map((c) => parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 13; i++) sum += digits$1[i] * (i % 2 === 0 ? 1 : 3);\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/isbn.ts\n/**\n* ISBN separator regex.\n*/\nconst ISBN_SEPARATOR_REGEX = /[- ]/gu;\n/**\n* ISBN-10 detection regex.\n*/\nconst ISBN_10_DETECTION_REGEX = /^\\d{9}[\\dX]$/u;\n/**\n* ISBN-13 detection regex.\n*/\nconst ISBN_13_DETECTION_REGEX = /^\\d{13}$/u;\n/* @__NO_SIDE_EFFECTS__ */\nfunction isbn(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isbn\",\n\t\treference: isbn,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tconst replacedInput = input.replace(ISBN_SEPARATOR_REGEX, \"\");\n\t\t\tif (ISBN_10_DETECTION_REGEX.test(replacedInput)) return _isIsbn10(replacedInput);\n\t\t\telse if (ISBN_13_DETECTION_REGEX.test(replacedInput)) return _isIsbn13(replacedInput);\n\t\t\treturn false;\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"ISBN\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isrc/isrc.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isrc(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isrc\",\n\t\treference: isrc,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISRC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ISRC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDate/isoDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDate(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date\",\n\t\treference: isoDate,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTime/isoDateTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time\",\n\t\treference: isoDateTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTime/isoTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time\",\n\t\treference: isoTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimeSecond/isoTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time_second\",\n\t\treference: isoTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimestamp/isoTimestamp.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimestamp(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_timestamp\",\n\t\treference: isoTimestamp,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIMESTAMP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"timestamp\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoWeek/isoWeek.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoWeek(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_week\",\n\t\treference: isoWeek,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_WEEK_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"week\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/jwsCompact/jwsCompact.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction jwsCompact(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"jws_compact\",\n\t\treference: jwsCompact,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: JWS_COMPACT_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"JWS compact\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/length/length.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction length(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"length\",\n\t\treference: length,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length !== this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ltValue/ltValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ltValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"lt_value\",\n\t\treference: ltValue,\n\t\tasync: false,\n\t\texpects: `<${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value < this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac/mac.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac\",\n\t\treference: mac,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac48/mac48.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac48(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac48\",\n\t\treference: mac48,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC48_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"48-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac64/mac64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac64\",\n\t\treference: mac64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"64-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mapItems/mapItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"map_items\",\n\t\treference: mapItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.map(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxBytes/maxBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_bytes\",\n\t\treference: maxBytes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 > this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxEntries/maxEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_entries\",\n\t\treference: maxEntries,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count > this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxGraphemes/maxGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_graphemes\",\n\t\treference: maxGraphemes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxLength/maxLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_length\",\n\t\treference: maxLength,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxSize/maxSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_size\",\n\t\treference: maxSize,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size > this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxValue/maxValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_value\",\n\t\treference: maxValue,\n\t\tasync: false,\n\t\texpects: `<=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value <= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxWords/maxWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_words\",\n\t\treference: maxWords,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/metadata/metadata.ts\n/**\n* Creates a custom metadata action.\n*\n* @param metadata_ The metadata object.\n*\n* @returns A metadata action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction metadata(metadata_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"metadata\",\n\t\treference: metadata,\n\t\tmetadata: metadata_\n\t};\n}\n\n//#endregion\n//#region src/actions/mimeType/mimeType.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mimeType(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mime_type\",\n\t\treference: mimeType,\n\t\tasync: false,\n\t\texpects: /* @__PURE__ */ _joinExpects(requirement.map((option) => `\"${option}\"`), \"|\"),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.includes(dataset.value.type)) _addIssue(this, \"MIME type\", dataset, config$1, { received: `\"${dataset.value.type}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minBytes/minBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_bytes\",\n\t\treference: minBytes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 < this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minEntries/minEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_entries\",\n\t\treference: minEntries,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count < this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minGraphemes/minGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_graphemes\",\n\t\treference: minGraphemes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minLength/minLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: minLength,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minSize/minSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_size\",\n\t\treference: minSize,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size < this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minValue/minValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_value\",\n\t\treference: minValue,\n\t\tasync: false,\n\t\texpects: `>=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value >= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minWords/minWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_words\",\n\t\treference: minWords,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/multipleOf/multipleOf.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction multipleOf(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"multiple_of\",\n\t\treference: multipleOf,\n\t\tasync: false,\n\t\texpects: `%${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value % this.requirement != 0) _addIssue(this, \"multiple\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nanoid/nanoid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nanoid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"nanoid\",\n\t\treference: nanoid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: NANO_ID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Nano ID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nonEmpty/nonEmpty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonEmpty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"non_empty\",\n\t\treference: nonEmpty,\n\t\tasync: false,\n\t\texpects: \"!0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === 0) _addIssue(this, \"length\", dataset, config$1, { received: \"0\" });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/normalize/normalize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction normalize(form) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"normalize\",\n\t\treference: normalize,\n\t\tasync: false,\n\t\tform,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.normalize(this.form);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notBytes/notBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_bytes\",\n\t\treference: notBytes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 === this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notEntries/notEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_entries\",\n\t\treference: notEntries,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count === this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notGraphemes/notGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_graphemes\",\n\t\treference: notGraphemes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notLength/notLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_length\",\n\t\treference: notLength,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notSize/notSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_size\",\n\t\treference: notSize,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size === this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValue/notValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_value\",\n\t\treference: notValue,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${/* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement <= dataset.value && this.requirement >= dataset.value) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValues/notValues.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValues(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_values\",\n\t\treference: notValues,\n\t\tasync: false,\n\t\texpects: `!${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notWords/notWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_words\",\n\t\treference: notWords,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/octal/octal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction octal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"octal\",\n\t\treference: octal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: OCTAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"octal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseBoolean/parseBoolean.ts\nconst TRUTHY = [\n\ttrue,\n\t1,\n\t\"true\",\n\t\"1\",\n\t\"yes\",\n\t\"y\",\n\t\"on\",\n\t\"enabled\"\n];\nconst FALSY = [\n\tfalse,\n\t0,\n\t\"false\",\n\t\"0\",\n\t\"no\",\n\t\"n\",\n\t\"off\",\n\t\"disabled\"\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseBoolean(config$1, message$1) {\n\tconst normalize$1 = (v) => typeof v === \"string\" ? v.toLowerCase() : v;\n\tconst truthyRaw = config$1?.truthy ?? TRUTHY;\n\tconst falsyRaw = config$1?.falsy ?? FALSY;\n\tconst truthy = config$1?.truthy ? config$1.truthy.map(normalize$1) : TRUTHY;\n\tconst falsy = config$1?.falsy ? config$1.falsy.map(normalize$1) : FALSY;\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_boolean\",\n\t\treference: parseBoolean,\n\t\texpects: /* @__PURE__ */ _joinExpects([...truthyRaw, ...falsyRaw].map(_stringify), \"|\"),\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\tconst input = normalize$1(dataset.value);\n\t\t\tif (truthy.includes(input)) dataset.value = true;\n\t\t\telse if (falsy.includes(input)) dataset.value = false;\n\t\t\telse {\n\t\t\t\t_addIssue(this, \"boolean\", dataset, config$2);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseJson/parseJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_json\",\n\t\treference: parseJson,\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tdataset.value = JSON.parse(dataset.value, this.config?.reviver);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n/**\n* Checks if a dataset is partially typed.\n*\n* @param dataset The dataset to check.\n* @param paths The paths to check.\n*\n* @returns Whether it is partially typed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isPartiallyTyped(dataset, paths) {\n\tif (dataset.issues) for (const path of paths) for (const issue of dataset.issues) {\n\t\tlet typed = false;\n\t\tconst bound = Math.min(path.length, issue.path?.length ?? 0);\n\t\tfor (let index = 0; index < bound; index++) if (path[index] !== issue.path[index].key && (path[index] !== \"$\" || issue.path[index].type !== \"array\")) {\n\t\t\ttyped = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!typed) return false;\n\t}\n\treturn true;\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheck.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheck(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheckAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheckAsync(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheck.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheck(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\taction({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheckAsync.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheckAsync(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tawait action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransform.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransform(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransform,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst output = action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransformAsync.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransformAsync(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransformAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst output = await action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/readonly/readonly.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction readonly() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"readonly\",\n\t\treference: readonly,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/reduceItems/reduceItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction reduceItems(operation, initial) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"reduce_items\",\n\t\treference: reduceItems,\n\t\tasync: false,\n\t\toperation,\n\t\tinitial,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.reduce(this.operation, this.initial);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/regex/regex.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction regex(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"regex\",\n\t\treference: regex,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"format\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returns.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returns(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returns,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst returnsDataset = this.schema[\"~run\"]({ value: func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returnsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returnsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returnsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args_) => {\n\t\t\t\tconst returnsDataset = await this.schema[\"~run\"]({ value: await func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rfcEmail/rfcEmail.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction rfcEmail(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"rfc_email\",\n\t\treference: rfcEmail,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RFC_EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/safeInteger/safeInteger.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeInteger(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"safe_integer\",\n\t\treference: safeInteger,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isSafeInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"safe integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/size/size.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction size(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"size\",\n\t\treference: size,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size !== this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/slug/slug.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction slug(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"slug\",\n\t\treference: slug,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: SLUG_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"slug\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/someItem/someItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction someItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"some_item\",\n\t\treference: someItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.some(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/sortItems/sortItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction sortItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"sort_items\",\n\t\treference: sortItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.sort(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/startsWith/startsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction startsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"starts_with\",\n\t\treference: startsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.startsWith(this.requirement)) _addIssue(this, \"start\", dataset, config$1, { received: `\"${dataset.value.slice(0, this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/stringifyJson/stringifyJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction stringifyJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"stringify_json\",\n\t\treference: stringifyJson,\n\t\tmessage: message$1,\n\t\tconfig: config$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tconst output = JSON.stringify(dataset.value, this.config?.replacer, this.config?.space);\n\t\t\t\tif (output === void 0) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t\tdataset.value = output;\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/title/title.ts\n/**\n* Creates a title metadata action.\n*\n* @param title_ The title text.\n*\n* @returns A title action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction title(title_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"title\",\n\t\treference: title,\n\t\ttitle: title_\n\t};\n}\n\n//#endregion\n//#region src/actions/toBigint/toBigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBigint(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_bigint\",\n\t\treference: toBigint,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = BigInt(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"bigint\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toBoolean/toBoolean.ts\n/**\n* Creates a to boolean transformation action.\n*\n* @returns A to boolean action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBoolean() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_boolean\",\n\t\treference: toBoolean,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = Boolean(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toDate/toDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toDate(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_date\",\n\t\treference: toDate,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = new Date(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"date\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"date\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toLowerCase/toLowerCase.ts\n/**\n* Creates a to lower case transformation action.\n*\n* @returns A to lower case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toLowerCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_lower_case\",\n\t\treference: toLowerCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toLowerCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMaxValue/toMaxValue.ts\n/**\n* Creates a to max value transformation action.\n*\n* @param requirement The maximum value.\n*\n* @returns A to max value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMaxValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_max_value\",\n\t\treference: toMaxValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMinValue/toMinValue.ts\n/**\n* Creates a to min value transformation action.\n*\n* @param requirement The minimum value.\n*\n* @returns A to min value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMinValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_min_value\",\n\t\treference: toMinValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toNumber/toNumber.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toNumber(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_number\",\n\t\treference: toNumber,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = Number(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toString/toString.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toString(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_string\",\n\t\treference: toString,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = String(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"string\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toUpperCase/toUpperCase.ts\n/**\n* Creates a to upper case transformation action.\n*\n* @returns A to upper case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toUpperCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_upper_case\",\n\t\treference: toUpperCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toUpperCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transform.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transform(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transform,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transformAsync.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transformAsync(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transformAsync,\n\t\tasync: true,\n\t\toperation,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trim/trim.ts\n/**\n* Creates a trim transformation action.\n*\n* @returns A trim action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trim() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim\",\n\t\treference: trim,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trim();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimEnd/trimEnd.ts\n/**\n* Creates a trim end transformation action.\n*\n* @returns A trim end action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimEnd() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_end\",\n\t\treference: trimEnd,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimEnd();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimStart/trimStart.ts\n/**\n* Creates a trim start transformation action.\n*\n* @returns A trim start action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimStart() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_start\",\n\t\treference: trimStart,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimStart();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ulid/ulid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ulid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ulid\",\n\t\treference: ulid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ULID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ULID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/url/url.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction url(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"url\",\n\t\treference: url,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\ttry {\n\t\t\t\tnew URL(input);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"URL\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/uuid/uuid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction uuid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"uuid\",\n\t\treference: uuid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: UUID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"UUID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/value/value.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction value(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"value\",\n\t\treference: value,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(this.requirement <= dataset.value && this.requirement >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/values/values.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction values(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"values\",\n\t\treference: values,\n\t\tasync: false,\n\t\texpects: `${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/words/words.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction words(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"words\",\n\t\treference: words,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/assert/assert.ts\n/**\n* Checks if the input matches the schema. As this is an assertion function, it\n* can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*/\nfunction assert(schema, input) {\n\tconst issues = schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n\tif (issues) throw new ValiError(issues);\n}\n\n//#endregion\n//#region src/methods/cache/_LruCache.ts\n/**\n* Efficient LRU cache using Map iteration order.\n*/\nvar _LruCache = class {\n\tconstructor(config$1) {\n\t\tthis.refCount = 0;\n\t\tthis.maxSize = config$1?.maxSize ?? 1e3;\n\t\tthis.maxAge = config$1?.maxAge ?? Infinity;\n\t\tthis.hasMaxAge = isFinite(this.maxAge);\n\t}\n\t/**\n\t* Stringifies an unknown input to a cache key component.\n\t*\n\t* @param input The unknown input.\n\t*\n\t* @returns A cache key component.\n\t*/\n\t#stringify(input) {\n\t\tconst type = typeof input;\n\t\tif (type === \"string\") return `\"${input}\"`;\n\t\tif (type === \"number\" || type === \"boolean\") return `${input}`;\n\t\tif (type === \"bigint\") return `${input}n`;\n\t\tif (type === \"object\" || type === \"function\") {\n\t\t\tif (input) {\n\t\t\t\tthis.refIds ??= /* @__PURE__ */ new WeakMap();\n\t\t\t\tlet id = this.refIds.get(input);\n\t\t\t\tif (!id) {\n\t\t\t\t\tid = ++this.refCount;\n\t\t\t\t\tthis.refIds.set(input, id);\n\t\t\t\t}\n\t\t\t\treturn `#${id}`;\n\t\t\t}\n\t\t\treturn \"null\";\n\t\t}\n\t\treturn type;\n\t}\n\t/**\n\t* Creates a cache key from input and config.\n\t*\n\t* @param input The input value.\n\t* @param config The parse configuration.\n\t*\n\t* @returns The cache key.\n\t*/\n\tkey(input, config$1 = {}) {\n\t\treturn `${this.#stringify(input)}|${this.#stringify(config$1.lang)}|${this.#stringify(config$1.message)}|${this.#stringify(config$1.abortEarly)}|${this.#stringify(config$1.abortPipeEarly)}`;\n\t}\n\t/**\n\t* Gets a value from the cache by key.\n\t*\n\t* @param key The cache key.\n\t*\n\t* @returns The cached value.\n\t*/\n\tget(key) {\n\t\tif (!this.store) return void 0;\n\t\tconst entry = this.store.get(key);\n\t\tif (!entry) return void 0;\n\t\tif (this.hasMaxAge && Date.now() - entry[1] > this.maxAge) {\n\t\t\tthis.store.delete(key);\n\t\t\treturn;\n\t\t}\n\t\tthis.store.delete(key);\n\t\tthis.store.set(key, entry);\n\t\treturn entry[0];\n\t}\n\t/**\n\t* Sets a value in the cache by key.\n\t*\n\t* @param key The cache key.\n\t* @param value The cached value.\n\t*/\n\tset(key, value$1) {\n\t\tthis.store ??= /* @__PURE__ */ new Map();\n\t\tthis.store.delete(key);\n\t\tconst timestamp = this.hasMaxAge ? Date.now() : 0;\n\t\tthis.store.set(key, [value$1, timestamp]);\n\t\tif (this.store.size > this.maxSize) this.store.delete(this.store.keys().next().value);\n\t}\n\t/**\n\t* Clears all entries from the cache.\n\t*/\n\tclear() {\n\t\tthis.store?.clear();\n\t}\n};\n\n//#endregion\n//#region src/methods/cache/cache.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cache(schema, config$1) {\n\treturn {\n\t\t...schema,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tlet outputDataset = this.cache.get(key);\n\t\t\tif (!outputDataset) this.cache.set(key, outputDataset = schema[\"~run\"](dataset, runConfig));\n\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/cache/cacheAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cacheAsync(schema, config$1) {\n\tlet activeRuns;\n\treturn {\n\t\t...schema,\n\t\tasync: true,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tconst cached = this.cache.get(key);\n\t\t\tif (cached) return /* @__PURE__ */ _cloneDataset(cached);\n\t\t\tlet promise$1 = activeRuns?.get(key);\n\t\t\tif (!promise$1) {\n\t\t\t\tactiveRuns ??= /* @__PURE__ */ new Map();\n\t\t\t\tpromise$1 = Promise.resolve(schema[\"~run\"](dataset, runConfig));\n\t\t\t\tactiveRuns.set(key, promise$1);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst outputDataset = await promise$1;\n\t\t\t\tthis.cache.set(key, outputDataset);\n\t\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t\t} finally {\n\t\t\t\tactiveRuns?.delete(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/config/config.ts\n/**\n* Changes the local configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param config The parse configuration.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction config(schema, config$1) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config_) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config_,\n\t\t\t\t...config$1\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getFallback/getFallback.ts\n/**\n* Returns the fallback value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The output dataset if available.\n* @param config The config if available.\n*\n* @returns The fallback value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallback(schema, dataset, config$1) {\n\treturn typeof schema.fallback === \"function\" ? schema.fallback(dataset, config$1) : schema.fallback;\n}\n\n//#endregion\n//#region src/methods/fallback/fallback.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallback(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/fallback/fallbackAsync.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallbackAsync(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = await schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: await /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/flatten/flatten.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction flatten(issues) {\n\tconst flatErrors = {};\n\tfor (const issue of issues) if (issue.path) {\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) {\n\t\t\tif (!flatErrors.nested) flatErrors.nested = {};\n\t\t\tif (flatErrors.nested[dotPath]) flatErrors.nested[dotPath].push(issue.message);\n\t\t\telse flatErrors.nested[dotPath] = [issue.message];\n\t\t} else if (flatErrors.other) flatErrors.other.push(issue.message);\n\t\telse flatErrors.other = [issue.message];\n\t} else if (flatErrors.root) flatErrors.root.push(issue.message);\n\telse flatErrors.root = [issue.message];\n\treturn flatErrors;\n}\n\n//#endregion\n//#region src/methods/forward/forward.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forward(action, path) {\n\treturn {\n\t\t...action,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/forward/forwardAsync.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forwardAsync(action, path) {\n\treturn {\n\t\t...action,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = await action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getDefault/getDefault.ts\n/**\n* Returns the default value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The input dataset if available.\n* @param config The config if available.\n*\n* @returns The default value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefault(schema, dataset, config$1) {\n\treturn typeof schema.default === \"function\" ? schema.default(dataset, config$1) : schema.default;\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaults.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefaults(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getDefaults);\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaultsAsync.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getDefaultsAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getDefaultsAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getDefaultsAsync));\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDescription/getDescription.ts\n/**\n* Returns the description of the schema.\n*\n* If multiple descriptions are defined, the last one of the highest level is\n* returned. If no description is defined, `undefined` is returned.\n*\n* @param schema The schema to get the description from.\n*\n* @returns The description, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDescription(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"description\");\n}\n\n//#endregion\n//#region src/methods/getExamples/getExamples.ts\n/**\n* Returns the examples of a schema.\n*\n* If multiple examples are defined, it concatenates them using depth-first\n* search. If no examples are defined, an empty array is returned.\n*\n* @param schema The schema to get the examples from.\n*\n* @returns The examples, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getExamples(schema) {\n\tconst examples$1 = [];\n\tfunction depthFirstCollect(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstCollect(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"examples\") examples$1.push(...item.examples);\n\t\t}\n\t}\n\tdepthFirstCollect(schema);\n\treturn examples$1;\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacks.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallbacks(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getFallbacks);\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacksAsync.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getFallbacksAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getFallbacksAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getFallbacksAsync));\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getMetadata/getMetadata.ts\n/**\n* Returns the metadata of a schema.\n*\n* If multiple metadata are defined, it shallowly merges them using depth-first\n* search. If no metadata is defined, an empty object is returned.\n*\n* @param schema Schema to get the metadata from.\n*\n* @returns The metadata, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getMetadata(schema) {\n\tconst result = {};\n\tfunction depthFirstMerge(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstMerge(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"metadata\") Object.assign(result, item.metadata);\n\t\t}\n\t}\n\tdepthFirstMerge(schema);\n\treturn result;\n}\n\n//#endregion\n//#region src/methods/getTitle/getTitle.ts\n/**\n* Returns the title of the schema.\n*\n* If multiple titles are defined, the last one of the highest level is\n* returned. If no title is defined, `undefined` is returned.\n*\n* @param schema The schema to get the title from.\n*\n* @returns The title, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getTitle(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"title\");\n}\n\n//#endregion\n//#region src/methods/is/is.ts\n/**\n* Checks if the input matches the schema. By using a type predicate, this\n* function can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*\n* @returns Whether the input matches the schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction is(schema, input) {\n\treturn !schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n}\n\n//#endregion\n//#region src/schemas/any/any.ts\n/**\n* Creates an any schema.\n*\n* Hint: This schema function exists only for completeness and is not\n* recommended in practice. Instead, `unknown` should be used to accept\n* unknown data.\n*\n* @returns An any schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction any() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"any\",\n\t\treference: any,\n\t\texpects: \"any\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/array.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction array(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: array,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.item[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/arrayAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction arrayAsync(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: arrayAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(input.map((value$1) => this.item[\"~run\"]({ value: value$1 }, config$1)));\n\t\t\t\tfor (let key = 0; key < itemDatasets.length; key++) {\n\t\t\t\t\tconst itemDataset = itemDatasets[key];\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/bigint/bigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bigint(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"bigint\",\n\t\treference: bigint,\n\t\texpects: \"bigint\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"bigint\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/blob/blob.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction blob(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"blob\",\n\t\treference: blob,\n\t\texpects: \"Blob\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Blob) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/boolean/boolean.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction boolean(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: boolean,\n\t\texpects: \"boolean\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"boolean\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/custom.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction custom(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: custom,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/customAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction customAsync(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: customAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (await this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/date/date.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction date(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"date\",\n\t\treference: date,\n\t\texpects: \"Date\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Date) if (!isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/enum/enum.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction enum_(enum__, message$1) {\n\tconst options = [];\n\tfor (const key in enum__) if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) options.push(enum__[key]);\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"enum\",\n\t\treference: enum_,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\tenum: enum__,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptional,\n\t\texpects: wrapped.expects,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptionalAsync,\n\t\texpects: wrapped.expects,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/file/file.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction file(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"file\",\n\t\treference: file,\n\t\texpects: \"File\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof File) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/function/function.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction function_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"function\",\n\t\treference: function_,\n\t\texpects: \"Function\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"function\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/instance/instance.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction instance(class_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"instance\",\n\t\treference: instance,\n\t\texpects: class_.name,\n\t\tasync: false,\n\t\tclass: class_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof this.class) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/utils/_merge/_merge.ts\n/**\n* Merges two values into one single output.\n*\n* @param value1 First value.\n* @param value2 Second value.\n*\n* @returns The merge dataset.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _merge(value1, value2) {\n\tif (typeof value1 === typeof value2) {\n\t\tif (value1 === value2 || value1 instanceof Date && value2 instanceof Date && +value1 === +value2) return { value: value1 };\n\t\tif (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n\t\t\tfor (const key in value2) if (key in value1) {\n\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\tvalue1[key] = dataset.value;\n\t\t\t} else value1[key] = value2[key];\n\t\t\treturn { value: value1 };\n\t\t}\n\t\tif (Array.isArray(value1) && Array.isArray(value2)) {\n\t\t\tif (value1.length === value2.length) {\n\t\t\t\tfor (let index = 0; index < value1.length; index++) {\n\t\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n\t\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\t\tvalue1[index] = dataset.value;\n\t\t\t\t}\n\t\t\t\treturn { value: value1 };\n\t\t\t}\n\t\t}\n\t}\n\treturn { issue: true };\n}\n\n//#endregion\n//#region src/schemas/intersect/intersect.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersect(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersect,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tfor (const schema of this.options) {\n\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) dataset.issues.push(...optionDataset.issues);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/intersectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersectAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersectAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tconst optionDatasets = await Promise.all(this.options.map((schema) => schema[\"~run\"]({ value: input }, config$1)));\n\t\t\t\tfor (const optionDataset of optionDatasets) {\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) dataset.issues.push(...optionDataset.issues);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazy.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazy(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazy,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.getter(dataset.value)[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazyAsync.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazyAsync(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazyAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn (await this.getter(dataset.value))[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/literal/literal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction literal(literal_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: literal,\n\t\texpects: /* @__PURE__ */ _stringify(literal_),\n\t\tasync: false,\n\t\tliteral: literal_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === this.literal) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/map.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction map(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: map,\n\t\texpects: \"Map\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const [inputKey, inputValue] of input) {\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: inputKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/mapAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: mapAsync,\n\t\texpects: \"Map\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tconst datasets = await Promise.all([...input].map(([inputKey, inputValue]) => Promise.all([\n\t\t\t\t\tinputKey,\n\t\t\t\t\tinputValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: inputKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: inputValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [inputKey, inputValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nan/nan.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nan(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nan\",\n\t\treference: nan,\n\t\texpects: \"NaN\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (Number.isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/never/never.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction never(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"never\",\n\t\treference: never,\n\t\texpects: \"never\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\t_addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullable(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullable,\n\t\texpects: \"!null\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullableAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullableAsync,\n\t\texpects: \"!null\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullish(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullish,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullishAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullishAsync,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptional(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptional,\n\t\texpects: \"!undefined\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptionalAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptionalAsync,\n\t\texpects: \"!undefined\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/null/null.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction null_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"null\",\n\t\treference: null_,\n\t\texpects: \"null\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullable,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullableAsync,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullish(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullish,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullishAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullishAsync,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/number/number.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction number(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: number,\n\t\texpects: \"number\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"number\" && !isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/object.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction object(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: object,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/objectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: objectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRest(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRest,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) {\n\t\t\t\t\t\tconst valueDataset = this.rest[\"~run\"]({ value: input[key] }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRestAsync(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRestAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(Object.entries(input).filter(([key]) => /* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)).map(async ([key, value$1]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue$1,\n\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t]))]);\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of normalDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, valueDataset] of restDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optional,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optionalAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/picklist/picklist.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction picklist(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"picklist\",\n\t\treference: picklist,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/promise/promise.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction promise(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"promise\",\n\t\treference: promise,\n\t\texpects: \"Promise\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Promise) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/record.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction record(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: record,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {\n\t\t\t\t\tconst entryValue = input[entryKey];\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: entryKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: entryValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/recordAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction recordAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: recordAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst datasets = await Promise.all(Object.entries(input).filter(([key$1]) => /* @__PURE__ */ _isValidObjectKey(input, key$1)).map(([entryKey, entryValue]) => Promise.all([\n\t\t\t\t\tentryKey,\n\t\t\t\t\tentryValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: entryKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: entryValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [entryKey, entryValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/set.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction set(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: set,\n\t\texpects: \"Set\",\n\t\tasync: false,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const inputValue of input) {\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/setAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction setAsync(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: setAsync,\n\t\texpects: \"Set\",\n\t\tasync: true,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tconst valueDatasets = await Promise.all([...input].map(async (inputValue) => [inputValue, await this.value[\"~run\"]({ value: inputValue }, config$1)]));\n\t\t\t\tfor (const [inputValue, valueDataset] of valueDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/string/string.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction string(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: string,\n\t\texpects: \"string\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"string\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/symbol/symbol.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction symbol(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"symbol\",\n\t\treference: symbol,\n\t\texpects: \"symbol\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"symbol\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRest(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRest,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.rest[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRestAsync(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRestAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(input.slice(this.items.length).map(async (value$1, key) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey + this.items.length,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}))]);\n\t\t\t\tfor (const [key, value$1, itemDataset] of normalDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, itemDataset] of restDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefined/undefined.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefined_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefined\",\n\t\treference: undefined_,\n\t\texpects: \"undefined\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedable,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedableAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/utils/_subIssues/_subIssues.ts\n/**\n* Returns the sub issues of the provided datasets for the union issue.\n*\n* @param datasets The datasets.\n*\n* @returns The sub issues.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _subIssues(datasets) {\n\tlet issues;\n\tif (datasets) for (const dataset of datasets) if (issues) issues.push(...dataset.issues);\n\telse issues = dataset.issues;\n\treturn issues;\n}\n\n//#endregion\n//#region src/schemas/union/union.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction union(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: union,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/unionAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction unionAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: unionAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/unknown/unknown.ts\n/**\n* Creates a unknown schema.\n*\n* @returns A unknown schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unknown() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"unknown\",\n\t\treference: unknown,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variant.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variant(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variant,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, { abortEarly: true }).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tparseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variantAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variantAsync(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variantAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = async (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") await parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? (await discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, { abortEarly: true })).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tawait parseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/void/void.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction void_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"void\",\n\t\treference: void_,\n\t\texpects: \"void\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/keyof/keyof.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction keyof(schema, message$1) {\n\treturn /* @__PURE__ */ picklist(Object.keys(schema.entries), message$1);\n}\n\n//#endregion\n//#region src/methods/message/message.ts\n/**\n* Changes the local message configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param message_ The error message.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction message(schema, message_) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config$1,\n\t\t\t\tmessage: message_\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/omit/omit.ts\n/**\n* Creates a modified copy of an object schema that does not contain the\n* selected entries.\n*\n* @param schema The schema to omit from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction omit(schema, keys) {\n\tconst entries$1 = { ...schema.entries };\n\tfor (const key of keys) delete entries$1[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/parse/parse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nfunction parse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parse/parseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nasync function parseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parser/parser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parser(schema, config$1) {\n\tconst func = (input) => parse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/parser/parserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parserAsync(schema, config$1) {\n\tconst func = (input) => parseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/partial/partial.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partial(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optional(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/partial/partialAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialAsync(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optionalAsync(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pick/pick.ts\n/**\n* Creates a modified copy of an object schema that contains only the selected\n* entries.\n*\n* @param schema The schema to pick from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction pick(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key of keys) entries$1[key] = schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipe.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipe(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipeAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipeAsync(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = await item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/required.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction required(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptional(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/requiredAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction requiredAsync(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptionalAsync(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function safeParseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParser(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParserAsync(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/summarize/summarize.ts\n/**\n* Summarize the error messages of issues in a pretty-printable multi-line string.\n*\n* @param issues The list of issues.\n*\n* @returns A summary of the issues.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction summarize(issues) {\n\tlet summary = \"\";\n\tfor (const issue of issues) {\n\t\tif (summary) summary += \"\\n\";\n\t\tsummary += `× ${issue.message}`;\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) summary += `\\n → at ${dotPath}`;\n\t}\n\treturn summary;\n}\n\n//#endregion\n//#region src/methods/unwrap/unwrap.ts\n/**\n* Unwraps the wrapped schema.\n*\n* @param schema The schema to be unwrapped.\n*\n* @returns The unwrapped schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unwrap(schema) {\n\treturn schema.wrapped;\n}\n\n//#endregion\nexport { BASE64_REGEX, BIC_REGEX, CUID2_REGEX, DECIMAL_REGEX, DIGITS_REGEX, DOMAIN_REGEX, EMAIL_REGEX, EMOJI_REGEX, HEXADECIMAL_REGEX, HEX_COLOR_REGEX, IMEI_REGEX, IPV4_REGEX, IPV6_REGEX, IP_REGEX, ISO_DATE_REGEX, ISO_DATE_TIME_REGEX, ISO_TIMESTAMP_REGEX, ISO_TIME_REGEX, ISO_TIME_SECOND_REGEX, ISO_WEEK_REGEX, ISRC_REGEX, JWS_COMPACT_REGEX, MAC48_REGEX, MAC64_REGEX, MAC_REGEX, NANO_ID_REGEX, OCTAL_REGEX, RFC_EMAIL_REGEX, SLUG_REGEX, ULID_REGEX, UUID_REGEX, ValiError, _addIssue, _cloneDataset, _getByteCount, _getGraphemeCount, _getLastMetadata, _getStandardProps, _getWordCount, _isLuhnAlgo, _isValidObjectKey, _joinExpects, _stringify, any, args, argsAsync, array, arrayAsync, assert, awaitAsync, base64, bic, bigint, blob, boolean, brand, bytes, cache, cacheAsync, check, checkAsync, checkItems, checkItemsAsync, config, creditCard, cuid2, custom, customAsync, date, decimal, deleteGlobalConfig, deleteGlobalMessage, deleteSchemaMessage, deleteSpecificMessage, description, digits, domain, email, emoji, empty, endsWith, entries, entriesFromList, entriesFromObjects, enum_ as enum, enum_, everyItem, exactOptional, exactOptionalAsync, examples, excludes, fallback, fallbackAsync, file, filterItems, findItem, finite, flatten, flavor, forward, forwardAsync, function_ as function, function_, getDefault, getDefaults, getDefaultsAsync, getDescription, getDotPath, getExamples, getFallback, getFallbacks, getFallbacksAsync, getGlobalConfig, getGlobalMessage, getMetadata, getSchemaMessage, getSpecificMessage, getTitle, graphemes, gtValue, guard, hash, hexColor, hexadecimal, imei, includes, instance, integer, intersect, intersectAsync, ip, ipv4, ipv6, is, isOfKind, isOfType, isValiError, isbn, isoDate, isoDateTime, isoTime, isoTimeSecond, isoTimestamp, isoWeek, isrc, jwsCompact, keyof, lazy, lazyAsync, length, literal, looseObject, looseObjectAsync, looseTuple, looseTupleAsync, ltValue, mac, mac48, mac64, map, mapAsync, mapItems, maxBytes, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, message, metadata, mimeType, minBytes, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nan, nanoid, never, nonEmpty, nonNullable, nonNullableAsync, nonNullish, nonNullishAsync, nonOptional, nonOptionalAsync, normalize, notBytes, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, null_ as null, null_, nullable, nullableAsync, nullish, nullishAsync, number, object, objectAsync, objectWithRest, objectWithRestAsync, octal, omit, optional, optionalAsync, parse, parseAsync, parseBoolean, parseJson, parser, parserAsync, partial, partialAsync, partialCheck, partialCheckAsync, pick, picklist, pipe, pipeAsync, promise, rawCheck, rawCheckAsync, rawTransform, rawTransformAsync, readonly, record, recordAsync, reduceItems, regex, required, requiredAsync, returns, returnsAsync, rfcEmail, safeInteger, safeParse, safeParseAsync, safeParser, safeParserAsync, set, setAsync, setGlobalConfig, setGlobalMessage, setSchemaMessage, setSpecificMessage, size, slug, someItem, sortItems, startsWith, strictObject, strictObjectAsync, strictTuple, strictTupleAsync, string, stringifyJson, summarize, symbol, title, toBigint, toBoolean, toDate, toLowerCase, toMaxValue, toMinValue, toNumber, toString, toUpperCase, transform, transformAsync, trim, trimEnd, trimStart, tuple, tupleAsync, tupleWithRest, tupleWithRestAsync, ulid, undefined_ as undefined, undefined_, undefinedable, undefinedableAsync, union, unionAsync, unknown, unwrap, url, uuid, value, values, variant, variantAsync, void_ as void, void_, words };","/**\n * Response formatters for MCP tool output.\n *\n * This module contains per-resource formatter functions that convert\n * executor data payloads into human-readable text for MCP responses.\n *\n * Keeping formatting in the MCP layer ensures executors remain pure data\n * functions that can be reused by any adapter (CLI, SDK, etc.).\n */\n\nimport type {\n BackupConfigAttributes,\n BackgroundProcessAttributes,\n CertificateAttributes,\n CommandAttributes,\n DatabaseAttributes,\n DatabaseUserAttributes,\n DeploymentAttributes,\n FirewallRuleAttributes,\n MonitorAttributes,\n NginxTemplateAttributes,\n RecipeAttributes,\n RedirectRuleAttributes,\n ScheduledJobAttributes,\n SecurityRuleAttributes,\n ServerAttributes,\n SiteAttributes,\n SshKeyAttributes,\n UserAttributes,\n} from \"@studiometa/forge-api\";\n\n// ── Servers ──────────────────────────────────────────\n\n/**\n * Format a list of servers.\n */\nexport function formatServerList(servers: (ServerAttributes & { id: number })[]): string {\n if (servers.length === 0) {\n return \"No servers found.\";\n }\n const lines = servers.map(\n (s) =>\n `• ${s.name} (ID: ${s.id}) — ${s.provider} ${s.region} — ${s.ip_address} — ${s.is_ready ? \"ready\" : \"provisioning\"}`,\n );\n return `${servers.length} server(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single server.\n */\nexport function formatServer(server: ServerAttributes & { id: number }): string {\n return [\n `Server: ${server.name} (ID: ${server.id})`,\n `Provider: ${server.provider} (${server.region})`,\n `IP: ${server.ip_address}`,\n `PHP: ${server.php_version}`,\n `Ubuntu: ${server.ubuntu_version}`,\n `Status: ${server.is_ready ? \"ready\" : \"provisioning\"}`,\n `Created: ${server.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Sites ────────────────────────────────────────────\n\n/**\n * Format a list of sites.\n */\nexport function formatSiteList(\n sites: (SiteAttributes & { id: number })[],\n serverId?: string,\n): string {\n if (sites.length === 0) {\n return serverId ? `No sites on server ${serverId}.` : \"No sites found.\";\n }\n const lines = sites.map((s) => `• ${s.name} (ID: ${s.id}) — ${s.app_type} — ${s.status}`);\n const header = serverId\n ? `${sites.length} site(s) on server ${serverId}:`\n : `${sites.length} site(s):`;\n return `${header}\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single site.\n */\nexport function formatSite(site: SiteAttributes & { id: number }): string {\n return [\n `Site: ${site.name} (ID: ${site.id})`,\n `Type: ${site.app_type}`,\n `Directory: ${site.root_directory}`,\n `Repository: ${site.repository?.url ?? \"none\"}`,\n `Status: ${site.status}`,\n `Deploy status: ${site.deployment_status ?? \"none\"}`,\n `Quick deploy: ${site.quick_deploy ? \"enabled\" : \"disabled\"}`,\n `PHP: ${site.php_version}`,\n `Created: ${site.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Databases ────────────────────────────────────────\n\n/**\n * Format a list of databases.\n */\nexport function formatDatabaseList(databases: (DatabaseAttributes & { id: number })[]): string {\n if (databases.length === 0) {\n return \"No databases found.\";\n }\n const lines = databases.map((d) => `• ${d.name} (ID: ${d.id}) — ${d.status}`);\n return `${databases.length} database(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single database.\n */\nexport function formatDatabase(db: DatabaseAttributes & { id: number }): string {\n return `Database: ${db.name} (ID: ${db.id})\\nStatus: ${db.status}\\nCreated: ${db.created_at}`;\n}\n\n// ── Database Users ────────────────────────────────────\n\n/**\n * Format a list of database users.\n */\nexport function formatDatabaseUserList(users: (DatabaseUserAttributes & { id: number })[]): string {\n if (users.length === 0) {\n return \"No database users found.\";\n }\n const lines = users.map((u) => `• ${u.name} (ID: ${u.id}) — ${u.status}`);\n return `${users.length} database user(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single database user.\n */\nexport function formatDatabaseUser(user: DatabaseUserAttributes & { id: number }): string {\n return [\n `Database User: ${user.name} (ID: ${user.id})`,\n `Status: ${user.status}`,\n `Created: ${user.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Deployments ──────────────────────────────────────\n\n/**\n * Format a list of deployments.\n */\nexport function formatDeploymentList(\n deployments: (DeploymentAttributes & { id: number })[],\n): string {\n if (deployments.length === 0) {\n return \"No deployments found.\";\n }\n const lines = deployments.map(\n (d) =>\n `• #${d.id} — ${d.status} — ${d.commit?.hash?.slice(0, 7) ?? \"no commit\"} — ${d.started_at}`,\n );\n return `${deployments.length} deployment(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a deployment action result.\n *\n * When a `DeployResult` is provided the output includes status, elapsed time,\n * and the deployment log. When called with just IDs (legacy) it falls back to\n * the simple confirmation message so existing tests keep passing.\n */\nexport function formatDeployAction(\n siteId: string,\n serverId: string,\n result?: { status: \"success\" | \"failed\"; log: string; elapsed_ms: number },\n): string {\n if (!result) {\n return `Deployment triggered for site ${siteId} on server ${serverId}.`;\n }\n\n const elapsedSec = (result.elapsed_ms / 1000).toFixed(1);\n const statusLabel = result.status === \"success\" ? \"✓ succeeded\" : \"✗ failed\";\n const lines = [\n `Deployment ${statusLabel} for site ${siteId} on server ${serverId} (${elapsedSec}s).`,\n ];\n\n if (result.log) {\n lines.push(\"\", \"Deployment log:\", result.log);\n }\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Format deployment script content.\n */\nexport function formatDeploymentScript(script: string): string {\n return `Deployment script:\\n${script}`;\n}\n\n/**\n * Format deployment output.\n */\nexport function formatDeploymentOutput(deploymentId: string, output: string): string {\n return `Deployment ${deploymentId} output:\\n${output}`;\n}\n\n/**\n * Format a deployment script update confirmation.\n */\nexport function formatDeploymentScriptUpdated(siteId: string, serverId: string): string {\n return `Deployment script updated for site ${siteId} on server ${serverId}.`;\n}\n\n// ── Certificates ─────────────────────────────────────\n\n/**\n * Format a list of certificates.\n */\n/**\n * Format a single certificate (v2: one certificate per domain).\n */\nexport function formatCertificate(cert: CertificateAttributes & { id: number }): string {\n return `Certificate (ID: ${cert.id})\\nType: ${cert.type}\\nStatus: ${cert.status}\\nRequest: ${cert.request_status}`;\n}\n\n// ── Daemons ──────────────────────────────────────────\n\n/**\n * Format a list of daemons.\n */\nexport function formatDaemonList(\n daemons: (BackgroundProcessAttributes & { id: number })[],\n): string {\n if (daemons.length === 0) {\n return \"No daemons found.\";\n }\n const lines = daemons.map((d) => `• ${d.command} (ID: ${d.id}) — user: ${d.user} — ${d.status}`);\n return `${daemons.length} daemon(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single daemon.\n */\nexport function formatDaemon(daemon: BackgroundProcessAttributes & { id: number }): string {\n return `Daemon: ${daemon.command} (ID: ${daemon.id})\\nUser: ${daemon.user}\\nProcesses: ${daemon.processes}\\nStatus: ${daemon.status}`;\n}\n\n// ── Firewall Rules ───────────────────────────────────\n\n/**\n * Format a list of firewall rules.\n */\nexport function formatFirewallRuleList(rules: (FirewallRuleAttributes & { id: number })[]): string {\n if (rules.length === 0) {\n return \"No firewall rules found.\";\n }\n const lines = rules.map(\n (r) => `• ${r.name} (ID: ${r.id}) — port: ${r.port} — ${r.ip_address} — ${r.status}`,\n );\n return `${rules.length} firewall rule(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single firewall rule.\n */\nexport function formatFirewallRule(rule: FirewallRuleAttributes & { id: number }): string {\n return `Firewall Rule: ${rule.name} (ID: ${rule.id})\\nPort: ${rule.port}\\nType: ${rule.type}\\nIP: ${rule.ip_address}\\nStatus: ${rule.status}`;\n}\n\n// ── Monitors ─────────────────────────────────────────\n\n/**\n * Format a list of monitors.\n */\nexport function formatMonitorList(monitors: (MonitorAttributes & { id: number })[]): string {\n if (monitors.length === 0) {\n return \"No monitors found.\";\n }\n const lines = monitors.map(\n (m) => `• ${m.type} ${m.operator} ${m.threshold} (ID: ${m.id}) — ${m.state}`,\n );\n return `${monitors.length} monitor(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single monitor.\n */\nexport function formatMonitor(monitor: MonitorAttributes & { id: number }): string {\n return `Monitor: ${monitor.type} ${monitor.operator} ${monitor.threshold} (ID: ${monitor.id})\\nState: ${monitor.state}\\nMinutes: ${monitor.minutes}`;\n}\n\n// ── SSH Keys ─────────────────────────────────────────\n\n/**\n * Format a list of SSH keys.\n */\nexport function formatSshKeyList(keys: (SshKeyAttributes & { id: number })[]): string {\n if (keys.length === 0) {\n return \"No SSH keys found.\";\n }\n const lines = keys.map((k) => `• ${k.name} (ID: ${k.id}) — ${k.status}`);\n return `${keys.length} SSH key(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single SSH key.\n */\nexport function formatSshKey(key: SshKeyAttributes & { id: number }): string {\n return `SSH Key: ${key.name} (ID: ${key.id})\\nStatus: ${key.status}\\nCreated: ${key.created_at}`;\n}\n\n// ── Scheduled Jobs ───────────────────────────────────\n\n/**\n * Format a list of scheduled jobs.\n */\nexport function formatScheduledJobList(jobs: (ScheduledJobAttributes & { id: number })[]): string {\n if (jobs.length === 0) {\n return \"No scheduled jobs found.\";\n }\n const lines = jobs.map(\n (j) => `• ${j.command} (ID: ${j.id}) — ${j.frequency} — ${j.status} — user: ${j.user}`,\n );\n return `${jobs.length} scheduled job(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single scheduled job.\n */\nexport function formatScheduledJob(job: ScheduledJobAttributes & { id: number }): string {\n return [\n `Job: ${job.command} (ID: ${job.id})`,\n `User: ${job.user}`,\n `Frequency: ${job.frequency}`,\n `Cron: ${job.cron}`,\n `Status: ${job.status}`,\n `Created: ${job.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Security Rules ───────────────────────────────────\n\n/**\n * Format a list of security rules.\n */\nexport function formatSecurityRuleList(rules: (SecurityRuleAttributes & { id: number })[]): string {\n if (rules.length === 0) {\n return \"No security rules found.\";\n }\n const lines = rules.map((r) => `• ${r.name} (ID: ${r.id}) — path: ${r.path ?? \"/\"}`);\n return `${rules.length} security rule(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single security rule.\n */\nexport function formatSecurityRule(rule: SecurityRuleAttributes & { id: number }): string {\n return `Security Rule: ${rule.name} (ID: ${rule.id})\\nPath: ${rule.path ?? \"/\"}`;\n}\n\n// ── Redirect Rules ───────────────────────────────────\n\n/**\n * Format a list of redirect rules.\n */\nexport function formatRedirectRuleList(rules: (RedirectRuleAttributes & { id: number })[]): string {\n if (rules.length === 0) {\n return \"No redirect rules found.\";\n }\n const lines = rules.map((r) => `• ${r.from} → ${r.to} (ID: ${r.id}) — ${r.type}`);\n return `${rules.length} redirect rule(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single redirect rule.\n */\nexport function formatRedirectRule(rule: RedirectRuleAttributes & { id: number }): string {\n return `Redirect Rule: ${rule.from} → ${rule.to} (ID: ${rule.id})\\nType: ${rule.type}`;\n}\n\n// ── Nginx ────────────────────────────────────────────\n\n/**\n * Format nginx configuration content.\n */\nexport function formatNginxConfig(content: string): string {\n return `Nginx configuration:\\n${content}`;\n}\n\n// ── Nginx Templates ──────────────────────────────────\n\n/**\n * Format a list of nginx templates.\n */\nexport function formatNginxTemplateList(\n templates: (NginxTemplateAttributes & { id: number })[],\n): string {\n if (templates.length === 0) {\n return \"No nginx templates found.\";\n }\n const lines = templates.map((t) => `• ${t.name} (ID: ${t.id})`);\n return `${templates.length} nginx template(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single nginx template.\n */\nexport function formatNginxTemplate(template: NginxTemplateAttributes & { id: number }): string {\n return `Nginx Template: ${template.name} (ID: ${template.id})\\n\\n${template.content}`;\n}\n\n// ── Backup Configs ───────────────────────────────────\n\n/**\n * Format a list of backup configurations.\n */\nexport function formatBackupConfigList(\n backups: (BackupConfigAttributes & { id: number })[],\n): string {\n if (backups.length === 0) {\n return \"No backup configurations found.\";\n }\n const lines = backups.map(\n (b) =>\n `• ${b.name} (ID: ${b.id}) — ${b.schedule} — ${b.status} — next: ${b.next_run_time ?? \"—\"}`,\n );\n return `${backups.length} backup config(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single backup configuration.\n */\nexport function formatBackupConfig(backup: BackupConfigAttributes & { id: number }): string {\n return [\n `Backup Config: ${backup.name} (ID: ${backup.id})`,\n `Schedule: ${backup.displayable_schedule}`,\n `Status: ${backup.status}`,\n `Retention: ${backup.retention} backups`,\n `Next run: ${backup.next_run_time ?? \"—\"}`,\n ].join(\"\\n\");\n}\n\n// ── Recipes ──────────────────────────────────────────\n\n/**\n * Format a list of recipes.\n */\nexport function formatRecipeList(recipes: (RecipeAttributes & { id: number })[]): string {\n if (recipes.length === 0) {\n return \"No recipes found.\";\n }\n const lines = recipes.map((r) => `• ${r.name} (ID: ${r.id}) — user: ${r.user}`);\n return `${recipes.length} recipe(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single recipe.\n */\nexport function formatRecipe(recipe: RecipeAttributes & { id: number }): string {\n return `Recipe: ${recipe.name} (ID: ${recipe.id})\\nUser: ${recipe.user}\\nScript:\\n${recipe.script}`;\n}\n\n// ── Commands ─────────────────────────────────────────\n\n/**\n * Format a list of commands.\n */\nexport function formatCommandList(commands: (CommandAttributes & { id: number })[]): string {\n if (commands.length === 0) {\n return \"No commands found.\";\n }\n const lines = commands.map(\n (c) => `• #${c.id} — ${c.status} — user ${c.user_id} — ${c.command.slice(0, 60)}`,\n );\n return `${commands.length} command(s):\\n${lines.join(\"\\n\")}`;\n}\n\n/**\n * Format a single command.\n */\nexport function formatCommand(command: CommandAttributes & { id: number }): string {\n return [\n `Command #${command.id}`,\n `Command: ${command.command}`,\n `Status: ${command.status}`,\n `User ID: ${command.user_id}`,\n `Duration: ${command.duration}`,\n `Created: ${command.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Env ──────────────────────────────────────────────\n\n/**\n * Format environment variables content.\n */\nexport function formatEnv(content: string): string {\n return `Environment variables:\\n${content}`;\n}\n\n// ── User ─────────────────────────────────────────────\n\n/**\n * Format the authenticated user.\n */\nexport function formatUser(user: UserAttributes & { id: number }): string {\n return [\n `User: ${user.name} (ID: ${user.id})`,\n `Email: ${user.email}`,\n `Created: ${user.created_at}`,\n ].join(\"\\n\");\n}\n\n// ── Generic helpers ──────────────────────────────────\n\n/**\n * Format a deleted resource confirmation.\n */\nexport function formatDeleted(resource: string, id: string): string {\n return `${resource} ${id} deleted.`;\n}\n\n/**\n * Format a created resource confirmation (for simple cases).\n */\nexport function formatCreated(resource: string, name: string, id: number | string): string {\n return `${resource} created: ${name} (ID: ${id})`;\n}\n","/**\n * Custom error classes for MCP server\n *\n * These provide structured error handling with LLM-friendly messages\n * that include guidance on how to resolve issues.\n */\n\n/**\n * Error thrown when user input validation fails.\n * These errors should be returned to the user directly.\n *\n * Includes optional hints for how to resolve the issue.\n */\nexport class UserInputError extends Error {\n public readonly hints?: string[];\n\n constructor(message: string, hints?: string[]) {\n super(message);\n this.name = \"UserInputError\";\n this.hints = hints;\n }\n\n /**\n * Format error message with hints for LLM consumption\n */\n toFormattedMessage(): string {\n let msg = `**Input Error:** ${this.message}`;\n if (this.hints && this.hints.length > 0) {\n msg += \"\\n\\n**Hints:**\\n\" + this.hints.map((h) => `- ${h}`).join(\"\\n\");\n }\n return msg;\n }\n}\n\n/**\n * Error messages with guidance for common validation failures\n */\nexport const ErrorMessages = {\n // Required field errors\n missingId: (action: string) =>\n new UserInputError(`id is required for ${action} action`, [\n `Use action=\"list\" first to find the resource ID`,\n `Then use action=\"${action}\" with the id parameter`,\n ]),\n\n missingRequiredFields: (resource: string, fields: string[]) =>\n new UserInputError(\n `${fields.join(\", \")} ${fields.length === 1 ? \"is\" : \"are\"} required for creating ${resource}`,\n [\n `Provide all required fields: ${fields.join(\", \")}`,\n `Use action=\"help\" for detailed documentation on ${resource}`,\n ],\n ),\n\n // Invalid action errors\n invalidAction: (action: string, resource: string, validActions: string[]) =>\n new UserInputError(`Invalid action \"${action}\" for ${resource}`, [\n `Valid actions are: ${validActions.join(\", \")}`,\n `Use action=\"help\" with resource=\"${resource}\" for detailed documentation`,\n ]),\n\n // Unknown resource errors\n unknownResource: (resource: string, validResources: string[]) =>\n new UserInputError(`Unknown resource: ${resource}`, [\n `Valid resources are: ${validResources.join(\", \")}`,\n `Use action=\"help\" without a resource for an overview of all resources`,\n ]),\n\n // Update-specific errors\n noUpdateFieldsSpecified: (allowedFields: string[]) =>\n new UserInputError(\n `No updates specified. Provide at least one of: ${allowedFields.join(\", \")}`,\n [\"Specify at least one field to update\", `Updatable fields are: ${allowedFields.join(\", \")}`],\n ),\n\n // API errors\n apiError: (statusCode: number, message: string) => {\n const hints: string[] = [];\n\n if (statusCode === 401) {\n hints.push(\"Check that your API token is valid and not expired\");\n } else if (statusCode === 403) {\n hints.push(\"You may not have permission to access this resource\");\n hints.push(\"Check your API token permissions\");\n } else if (statusCode === 404) {\n hints.push(\"The resource may not exist or you may not have access\");\n hints.push(\"Verify the resource ID is correct\");\n hints.push('Use action=\"list\" to find valid resource IDs');\n } else if (statusCode === 422) {\n hints.push(\"The request data may be invalid\");\n hints.push(\"Check the field values and types\");\n hints.push('Use action=\"help\" for field documentation');\n } else if (statusCode >= 500) {\n hints.push(\"This is a server error - try again later\");\n }\n\n return new UserInputError(`API error (${statusCode}): ${message}`, hints);\n },\n} as const;\n\n/**\n * Check if an error is a UserInputError\n */\nexport function isUserInputError(error: unknown): error is UserInputError {\n return error instanceof UserInputError;\n}\n","import type { ToolResult } from \"./types.ts\";\n\nimport { UserInputError } from \"../errors.ts\";\n\n/**\n * Create a successful result with both human-readable text and structured content.\n *\n * - When `data` is a string, `structuredContent` wraps it as `{ result: data }`.\n * - When `data` is an object/array, `structuredContent` is `{ result: data }` and\n * the text representation is the JSON-serialized form.\n */\nexport function jsonResult(data: unknown): ToolResult {\n const text = typeof data === \"string\" ? data : JSON.stringify(data, null, 2);\n return {\n content: [{ type: \"text\", text }],\n structuredContent: { success: true, result: data },\n };\n}\n\n/**\n * Validate an ID-like value (must be alphanumeric/dashes only).\n * Prevents path traversal via `../` in URL segments.\n *\n * @returns true if the value is safe, false otherwise.\n */\nexport function sanitizeId(value: string): boolean {\n return /^[\\w-]+$/.test(value);\n}\n\n/**\n * Create an error result with structured error content.\n */\nexport function errorResult(message: string): ToolResult {\n return {\n content: [{ type: \"text\", text: `Error: ${message}` }],\n structuredContent: { success: false, error: message },\n isError: true,\n };\n}\n\n/**\n * Create an input error result from a UserInputError or a plain message with an optional suggestion.\n *\n * When a UserInputError is passed, its formatted message (including hints) is used.\n * When a plain string is passed, the optional suggestion is appended.\n */\nexport function inputErrorResult(error: UserInputError | string, suggestion?: string): ToolResult {\n let text: string;\n let errorMessage: string;\n if (error instanceof UserInputError) {\n text = error.toFormattedMessage();\n errorMessage = error.message;\n } else {\n errorMessage = error;\n text = suggestion ? `Error: ${error}\\n\\nSuggestion: ${suggestion}` : `Error: ${error}`;\n }\n return {\n content: [{ type: \"text\", text }],\n structuredContent: { success: false, error: errorMessage },\n isError: true,\n };\n}\n","/**\n * Factory for creating Forge resource handlers.\n *\n * Encapsulates the repetitive list/get/create/update/delete pattern\n * shared by all MCP resource handlers.\n */\n\nimport * as v from \"valibot\";\nimport type { ExecutorContext, ExecutorResult } from \"@studiometa/forge-core\";\n\nimport type { ContextualHints } from \"../hints.ts\";\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nimport { errorResult, jsonResult, sanitizeId } from \"./utils.ts\";\n\n/**\n * Configuration for a resource handler.\n */\nexport interface ResourceHandlerConfig {\n /** Resource name for error messages */\n resource: string;\n\n /** Valid actions for this resource */\n actions: string[];\n\n /**\n * Valibot schemas for input validation per action.\n * When provided, args are validated through the schema before calling the executor.\n */\n inputSchemas?: Record<string, v.GenericSchema>;\n\n /** Executor functions keyed by action name */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- contravariant: executors accept specific option subtypes\n executors: Record<\n string,\n (options: any, ctx: ExecutorContext) => Promise<ExecutorResult<unknown>>\n >;\n\n /**\n * Generate contextual hints for the get action response.\n */\n hints?: (data: unknown, id: string, args: CommonArgs) => ContextualHints;\n\n /** Map tool args to executor options. Defaults to pass-through. */\n mapOptions?: (action: string, args: CommonArgs) => Record<string, unknown>;\n\n /**\n * Format the executor result data into human-readable text for MCP output.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- data type varies per resource/action\n formatResult?: (action: string, data: any, args: CommonArgs) => string;\n}\n\n/**\n * Format Valibot validation issues into field-level error messages.\n */\nfunction formatValidationIssues(issues: v.BaseIssue<unknown>[]): string {\n return issues\n .map((issue) => {\n const path = issue.path?.map((p) => p.key).join(\".\") || \"(root)\";\n return `${path}: ${issue.message}`;\n })\n .join(\", \");\n}\n\n/**\n * Create a resource handler from configuration.\n */\nexport function createResourceHandler(\n config: ResourceHandlerConfig,\n): (action: string, args: CommonArgs, ctx: HandlerContext) => Promise<ToolResult> {\n const {\n resource,\n actions,\n inputSchemas = {},\n executors,\n hints,\n mapOptions,\n formatResult,\n } = config;\n\n return async (action: string, args: CommonArgs, ctx: HandlerContext): Promise<ToolResult> => {\n // Validate action\n if (!actions.includes(action)) {\n return errorResult(\n `Unknown action \"${action}\" for ${resource}. Valid actions: ${actions.join(\", \")}.`,\n );\n }\n\n // Validate input through Valibot schema if available\n const schema = inputSchemas[action];\n if (schema) {\n const parsed = v.safeParse(schema, args);\n if (!parsed.success) {\n return errorResult(`Invalid input: ${formatValidationIssues(parsed.issues)}`);\n }\n }\n\n // Validate ID-like fields to prevent path traversal\n for (const field of [\"id\", \"server_id\", \"site_id\"]) {\n const value = args[field];\n const idStr = typeof value === \"string\" || typeof value === \"number\" ? String(value) : \"\";\n if (value !== undefined && !sanitizeId(idStr)) {\n return errorResult(`Invalid ${field}: \"${idStr}\". IDs must be alphanumeric.`);\n }\n }\n\n // Get executor\n const executor = executors[action];\n if (!executor) {\n return errorResult(`Action \"${action}\" is not yet implemented for ${resource}.`);\n }\n\n // Map args to executor options — strip MCP-specific fields from passthrough\n let options: Record<string, unknown>;\n if (mapOptions) {\n options = mapOptions(action, args);\n } else {\n const { resource: _r, action: _a, compact: _c, ...rest } = args;\n options = rest;\n }\n\n // Execute\n const result = await executor(options, ctx.executorContext);\n\n // Format result\n if (result.data === undefined) {\n const text = formatResult ? formatResult(action, undefined, args) : \"Done.\";\n return jsonResult(text);\n }\n\n if (ctx.compact && formatResult) {\n return jsonResult(formatResult(action, result.data, args));\n }\n\n // For non-compact get responses, inject contextual hints when enabled\n if (action === \"get\" && ctx.includeHints && hints) {\n /* v8 ignore start */\n const id = args.id ?? args.server_id ?? \"\";\n /* v8 ignore stop */\n const responseData = {\n ...(typeof result.data === \"object\" && result.data !== null\n ? (result.data as Record<string, unknown>)\n : {}),\n _hints: hints(result.data, String(id), args),\n };\n return jsonResult(responseData);\n }\n\n return jsonResult(result.data);\n };\n}\n","import * as v from \"valibot\";\nimport {\n createBackupConfig,\n deleteBackupConfig,\n getBackupConfig,\n listBackupConfigs,\n updateBackupConfig,\n} from \"@studiometa/forge-core\";\n\nimport { formatBackupConfig, formatBackupConfigList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleBackups = createResourceHandler({\n resource: \"backups\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({\n server_id: v.string(),\n provider: v.string(),\n frequency: v.string(),\n credentials: v.unknown(),\n databases: v.unknown(),\n }),\n update: v.object({\n server_id: v.string(),\n id: v.string(),\n storage_provider_id: v.number(),\n frequency: v.string(),\n retention: v.number(),\n database_ids: v.array(v.number()),\n name: v.optional(v.nullable(v.string())),\n bucket: v.optional(v.nullable(v.string())),\n directory: v.optional(v.nullable(v.string())),\n day: v.optional(v.string()),\n time: v.optional(v.string()),\n cron: v.optional(v.string()),\n notification_email: v.optional(v.nullable(v.string())),\n }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listBackupConfigs,\n get: getBackupConfig,\n create: createBackupConfig,\n update: updateBackupConfig,\n delete: deleteBackupConfig,\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatBackupConfigList(data);\n case \"get\":\n return formatBackupConfig(data);\n case \"create\":\n return \"Done.\";\n case \"update\":\n return \"Done.\";\n case \"delete\":\n return `Backup config ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import type { Tool } from \"@modelcontextprotocol/sdk/types.js\";\n\nimport { RESOURCES } from \"@studiometa/forge-core\";\n\n/**\n * Read-only actions — safe operations that don't modify server state.\n */\nexport const READ_ACTIONS = [\"list\", \"get\", \"resolve\", \"help\", \"schema\", \"context\"] as const;\n\n/**\n * Write actions — operations that modify server state.\n * These are separated into the `forge_write` tool for safety.\n */\nexport const WRITE_ACTIONS = [\n \"create\",\n \"update\",\n \"delete\",\n \"deploy\",\n \"reboot\",\n \"restart\",\n \"activate\",\n \"run\",\n] as const;\n\nexport type ReadAction = (typeof READ_ACTIONS)[number];\nexport type WriteAction = (typeof WRITE_ACTIONS)[number];\n\n/**\n * Check if an action is a write action.\n */\nexport function isWriteAction(action: string): action is WriteAction {\n return WRITE_ACTIONS.includes(action as WriteAction);\n}\n\n/**\n * Check if an action is a read action.\n */\nexport function isReadAction(action: string): action is ReadAction {\n return READ_ACTIONS.includes(action as ReadAction);\n}\n\n/**\n * Output schema shared by all forge tools.\n *\n * All tools return a consistent envelope:\n * - success: true/false\n * - result: the resource data (shape varies by resource and action)\n * - error: error message (only when success is false)\n *\n * The `result` field contains resource-specific data:\n * - list actions → array of resource objects\n * - get actions → single resource object (or string for env/nginx/scripts)\n * - help/schema → documentation text or schema object\n * - write actions → confirmation message or updated resource\n */\nconst OUTPUT_SCHEMA = {\n type: \"object\" as const,\n properties: {\n success: {\n type: \"boolean\" as const,\n description: \"Whether the operation succeeded\",\n } as object,\n result: {\n description:\n \"Operation result — shape varies by resource and action (array for list, object for get, string for text content)\",\n } as object,\n error: {\n type: \"string\" as const,\n description: \"Error message (only present on failure)\",\n } as object,\n },\n required: [\"success\"],\n};\n\n/**\n * Shared input schema properties used by both forge and forge_write tools.\n */\nconst SHARED_INPUT_PROPERTIES = {\n resource: {\n type: \"string\" as const,\n enum: [...RESOURCES],\n description: \"Forge resource to operate on\",\n },\n id: { type: \"string\" as const, description: \"Resource ID (for get, delete, update actions)\" },\n server_id: {\n type: \"string\" as const,\n description:\n \"Server ID or name (names are auto-resolved via partial match, requires unique match)\",\n },\n site_id: {\n type: \"string\" as const,\n description: \"Site ID or domain name (auto-resolved via partial match, requires server_id)\",\n },\n compact: {\n type: \"boolean\" as const,\n description: \"Compact output (default: true for list, false for get)\",\n },\n query: {\n type: \"string\" as const,\n description:\n \"Search query for resolve action (matches by name, case-insensitive partial match)\",\n },\n};\n\n/**\n * Read-only tool for querying Forge resources.\n *\n * Annotated with readOnlyHint so MCP clients like Claude Desktop\n * can auto-approve read operations.\n */\nconst FORGE_READ_TOOL: Tool = {\n name: \"forge\",\n title: \"Laravel Forge\",\n description: [\n \"Laravel Forge API — read operations.\",\n `Resources: ${RESOURCES.join(\", \")}.`,\n `Actions: ${[...READ_ACTIONS].join(\", \")}.`,\n \"Discovery: action=help with any resource for filters and examples.\",\n \"Context: action=context on servers or sites fetches all sub-resources in one call.\",\n \"Server operations require id. Site operations require server_id.\",\n \"Deployment operations require server_id and site_id.\",\n \"Batch: use resource=batch action=run with an operations array to execute multiple reads in one call.\",\n \"resolve: find resources by name (partial, case-insensitive) — provide query field.\",\n ].join(\"\\n\"),\n annotations: {\n title: \"Laravel Forge\",\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n inputSchema: {\n type: \"object\" as const,\n properties: {\n ...SHARED_INPUT_PROPERTIES,\n action: {\n type: \"string\" as const,\n enum: [...READ_ACTIONS],\n description: 'Read action to perform. Use \"help\" for resource documentation.',\n },\n operations: {\n type: \"array\" as const,\n description:\n \"Array of operations for batch execution (max 10). Each operation needs resource, action, and any additional params.\",\n items: {\n type: \"object\" as const,\n properties: {\n resource: { type: \"string\" as const },\n action: { type: \"string\" as const },\n },\n required: [\"resource\", \"action\"],\n },\n },\n },\n required: [\"resource\", \"action\"],\n },\n outputSchema: OUTPUT_SCHEMA,\n};\n\n/**\n * Write tool for mutating Forge resources.\n *\n * Annotated with destructiveHint so MCP clients always prompt\n * for confirmation before executing writes.\n */\nconst FORGE_WRITE_TOOL: Tool = {\n name: \"forge_write\",\n title: \"Laravel Forge (Write)\",\n description: [\n \"Laravel Forge API — write operations (create, update, delete, deploy, reboot, etc.).\",\n `Resources: ${RESOURCES.join(\", \")}.`,\n `Actions: ${[...WRITE_ACTIONS].join(\", \")}.`,\n \"Server operations require id. Site operations require server_id.\",\n \"Deployment operations require server_id and site_id.\",\n \"Use forge tool with action=help for resource documentation.\",\n ].join(\"\\n\"),\n annotations: {\n title: \"Laravel Forge (Write)\",\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n inputSchema: {\n type: \"object\" as const,\n properties: {\n ...SHARED_INPUT_PROPERTIES,\n action: {\n type: \"string\" as const,\n enum: [...WRITE_ACTIONS],\n description: \"Write action to perform\",\n },\n // Server fields\n name: {\n type: \"string\" as const,\n description: \"Resource name (servers, databases, daemons, etc.)\",\n },\n provider: {\n type: \"string\" as const,\n description: \"Server provider (e.g. ocean2, linode, aws)\",\n },\n region: { type: \"string\" as const, description: \"Server region (e.g. nyc3, us-east-1)\" },\n size: { type: \"string\" as const, description: \"Server size (e.g. s-1vcpu-1gb)\" },\n credential_id: {\n type: \"string\" as const,\n description: \"Provider credential ID for server creation\",\n },\n type: {\n type: \"string\" as const,\n description:\n \"Resource type (e.g. app, web, worker for servers; mysql, postgres for databases; disk_usage, used_memory for monitors)\",\n },\n // Site fields\n domain: {\n type: \"string\" as const,\n description: \"Site domain name (alias for name, e.g. example.com)\",\n },\n web_directory: {\n type: \"string\" as const,\n description: \"Web directory relative to site root (e.g. /public)\",\n },\n // Content fields (env, nginx, deployment script)\n content: {\n type: \"string\" as const,\n description: \"Content body for env variables, nginx config, or deployment script updates\",\n },\n // Daemon fields\n command: {\n type: \"string\" as const,\n description:\n \"Shell command to execute (daemons: background process command; recipes: bash script inline; commands: site command)\",\n },\n user: {\n type: \"string\" as const,\n description: \"Unix user to run as (daemons, scheduled jobs; e.g. forge, root)\",\n },\n // Firewall fields\n port: {\n type: [\"string\", \"number\"] as unknown as string,\n description: \"Port number or range (firewall rules, e.g. 80 or 8000-9000)\",\n },\n ip_address: {\n type: \"string\" as const,\n description: \"IP address to allow/block (firewall rules, e.g. 192.168.1.1)\",\n },\n // SSH key fields\n key: {\n type: \"string\" as const,\n description: \"Public SSH key content (ssh-rsa ... or ssh-ed25519 ...)\",\n },\n // Redirect fields\n from: {\n type: \"string\" as const,\n description: \"Source path for redirect rules (e.g. /old-page)\",\n },\n to: {\n type: \"string\" as const,\n description: \"Destination URL for redirect rules (e.g. /new-page)\",\n },\n // Security rule fields\n credentials: {\n type: \"array\" as const,\n description: \"HTTP basic auth credentials for security rules [{username, password}]\",\n items: { type: \"object\" as const },\n },\n // Monitor fields\n operator: {\n type: \"string\" as const,\n description: \"Comparison operator for monitors (e.g. gte, lte)\",\n },\n threshold: {\n type: \"number\" as const,\n description: \"Threshold value that triggers the monitor alert\",\n },\n minutes: {\n type: \"number\" as const,\n description: \"Check interval in minutes for monitors (e.g. 5)\",\n },\n // Scheduled job fields\n frequency: {\n type: \"string\" as const,\n description: \"Cron frequency for scheduled jobs (e.g. minutely, hourly, nightly, custom)\",\n },\n // Recipe fields\n script: { type: \"string\" as const, description: \"Bash script content for recipes\" },\n servers: {\n type: \"array\" as const,\n description: \"Server IDs to run a recipe on (e.g. [123, 456])\",\n items: { type: \"number\" as const },\n },\n },\n required: [\"resource\", \"action\"],\n },\n outputSchema: OUTPUT_SCHEMA,\n};\n\n/**\n * Core tools available in both stdio and HTTP transports.\n *\n * Split into two tools for safety:\n * - `forge` — read-only operations (auto-approvable by MCP clients)\n * - `forge_write` — write operations (always requires confirmation)\n */\nexport const TOOLS: Tool[] = [FORGE_READ_TOOL, FORGE_WRITE_TOOL];\n\n/**\n * Options for filtering available tools.\n */\nexport interface GetToolsOptions {\n /** When true, only read-only tools are returned (forge_write is excluded). */\n readOnly?: boolean;\n}\n\n/**\n * Get the list of core tools, optionally filtered.\n *\n * In read-only mode, forge_write is excluded entirely — it won't appear\n * in the tool listing and cannot be called.\n */\nexport function getTools(options?: GetToolsOptions): Tool[] {\n if (options?.readOnly) {\n return TOOLS.filter((t) => t.name !== \"forge_write\");\n }\n return [...TOOLS];\n}\n\n/**\n * Additional tools only available in stdio mode.\n */\nexport const STDIO_ONLY_TOOLS: Tool[] = [\n {\n name: \"forge_configure\",\n title: \"Configure Forge\",\n description:\n \"Configure Laravel Forge API credentials. The token is stored locally in the XDG config directory.\",\n annotations: {\n title: \"Configure Forge\",\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n inputSchema: {\n type: \"object\" as const,\n properties: {\n apiToken: { type: \"string\" as const, description: \"Your Laravel Forge API token\" },\n organizationSlug: {\n type: \"string\" as const,\n description:\n \"Default organization slug (e.g. 'studio-meta'). Required for all API calls.\",\n },\n },\n },\n outputSchema: {\n type: \"object\" as const,\n properties: {\n success: { type: \"boolean\" as const },\n message: { type: \"string\" as const, description: \"Confirmation message\" },\n apiToken: { type: \"string\" as const, description: \"Masked API token (last 4 chars)\" },\n organizationSlug: { type: \"string\" as const, description: \"Organization slug\" },\n },\n required: [\"success\"],\n },\n },\n {\n name: \"forge_get_config\",\n title: \"Get Forge Config\",\n description: \"Get current Forge configuration (shows masked token and config status).\",\n annotations: {\n title: \"Get Forge Config\",\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n inputSchema: {\n type: \"object\" as const,\n properties: {},\n },\n outputSchema: {\n type: \"object\" as const,\n properties: {\n apiToken: { type: \"string\" as const, description: \"Masked API token or 'not configured'\" },\n configured: { type: \"boolean\" as const, description: \"Whether a token is configured\" },\n },\n required: [\"configured\"],\n },\n },\n];\n","/**\n * Batch handler — executes multiple read operations in a single MCP call.\n *\n * Reduces round-trips for AI agents by running operations in parallel\n * with Promise.allSettled, isolating per-operation failures.\n */\n\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nimport { isReadAction } from \"../tools.ts\";\nimport { errorResult, jsonResult } from \"./utils.ts\";\n\ntype RouteHandler = (\n resource: string,\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n) => Promise<ToolResult>;\n\n/** A validated batch operation. */\ninterface BatchOperation {\n resource: string;\n action: string;\n [key: string]: unknown;\n}\n\nconst MAX_OPERATIONS = 10;\n\n/**\n * Validate and narrow an array element to a BatchOperation.\n * Returns an error message string on failure, or the typed operation on success.\n */\nfunction validateOperation(\n op: unknown,\n index: number,\n): { ok: true; value: BatchOperation } | { ok: false; error: string } {\n if (!op || typeof op !== \"object\") {\n return { ok: false, error: `Operation at index ${index} must be an object.` };\n }\n const record = op as Record<string, unknown>;\n if (!record[\"resource\"] || typeof record[\"resource\"] !== \"string\") {\n return {\n ok: false,\n error: `Operation at index ${index} is missing required field \"resource\".`,\n };\n }\n if (!record[\"action\"] || typeof record[\"action\"] !== \"string\") {\n return { ok: false, error: `Operation at index ${index} is missing required field \"action\".` };\n }\n if (!isReadAction(record[\"action\"])) {\n return {\n ok: false,\n error: `Operation at index ${index} has invalid action \"${record[\"action\"]}\". Only read actions are allowed in batch: list, get, help, schema.`,\n };\n }\n return { ok: true, value: record as BatchOperation };\n}\n\n/**\n * Handle batch action — executes multiple read operations in parallel.\n */\nexport async function handleBatch(\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n routeToHandler: RouteHandler,\n): Promise<ToolResult> {\n if (action !== \"run\") {\n return errorResult(`Unknown action \"${action}\" for batch resource. Only \"run\" is supported.`);\n }\n\n const { operations } = args;\n\n if (operations === undefined || operations === null) {\n return errorResult('Missing required field: \"operations\". Provide an array of operations.');\n }\n\n if (!Array.isArray(operations)) {\n return errorResult('\"operations\" must be an array of operation objects.');\n }\n\n if (operations.length > MAX_OPERATIONS) {\n return errorResult(\n `Too many operations: ${operations.length}. Maximum is ${MAX_OPERATIONS} per batch.`,\n );\n }\n\n // Validate and narrow all operations upfront\n const validated: BatchOperation[] = [];\n for (let i = 0; i < operations.length; i++) {\n const result = validateOperation(operations[i], i);\n if (!result.ok) {\n return errorResult(result.error);\n }\n validated.push(result.value);\n }\n\n // Execute all operations in parallel\n const settled = await Promise.allSettled(\n validated.map((op) => {\n const { resource, action: opAction, ...rest } = op;\n return routeToHandler(resource, opAction, { resource, action: opAction, ...rest }, ctx);\n }),\n );\n\n // Aggregate results\n let succeeded = 0;\n let failed = 0;\n\n const results = settled.map((outcome, index) => {\n const { resource, action: opAction } = validated[index];\n\n if (outcome.status === \"fulfilled\") {\n const toolResult = outcome.value;\n if (toolResult.isError) {\n failed++;\n return {\n index,\n resource,\n action: opAction,\n error:\n toolResult.structuredContent?.[\"error\"] ??\n /* v8 ignore next */\n toolResult.content[0]?.text ??\n \"Unknown error\",\n };\n }\n succeeded++;\n return {\n index,\n resource,\n action: opAction,\n data: toolResult.structuredContent?.[\"result\"] ?? toolResult.content[0]?.text,\n };\n } else {\n failed++;\n return {\n index,\n resource,\n action: opAction,\n error: outcome.reason instanceof Error ? outcome.reason.message : String(outcome.reason),\n };\n }\n });\n\n return jsonResult({\n _batch: {\n total: validated.length,\n succeeded,\n failed,\n },\n results,\n });\n}\n","/**\n * Contextual hints for AI agents.\n *\n * After get/list actions, suggests related resources and common next steps\n * to help agents discover what's available.\n */\n\ninterface ResourceHint {\n resource: string;\n description: string;\n example: Record<string, unknown>;\n}\n\nexport interface ContextualHints {\n related_resources?: ResourceHint[];\n common_actions?: { action: string; example: Record<string, unknown> }[];\n}\n\n/**\n * Hints after getting a server.\n */\nexport function getServerHints(serverId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"sites\",\n description: \"List sites on this server\",\n example: { resource: \"sites\", action: \"list\", server_id: serverId },\n },\n {\n resource: \"databases\",\n description: \"List databases\",\n example: { resource: \"databases\", action: \"list\", server_id: serverId },\n },\n {\n resource: \"daemons\",\n description: \"List background processes\",\n example: { resource: \"daemons\", action: \"list\", server_id: serverId },\n },\n {\n resource: \"firewall-rules\",\n description: \"List firewall rules\",\n example: { resource: \"firewall-rules\", action: \"list\", server_id: serverId },\n },\n {\n resource: \"ssh-keys\",\n description: \"List SSH keys on this server\",\n example: { resource: \"ssh-keys\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Reboot server\",\n example: { resource: \"servers\", action: \"reboot\", id: serverId },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a site.\n */\nexport function getSiteHints(serverId: string, siteId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"deployments\",\n description: \"List deployments for this site\",\n example: { resource: \"deployments\", action: \"list\", server_id: serverId, site_id: siteId },\n },\n {\n resource: \"env\",\n description: \"Get environment variables\",\n example: { resource: \"env\", action: \"get\", server_id: serverId, site_id: siteId },\n },\n {\n resource: \"certificates\",\n description: \"Get certificate for a domain (requires domain_id)\",\n example: {\n resource: \"certificates\",\n action: \"get\",\n server_id: serverId,\n site_id: siteId,\n domain_id: \"<domain_id>\",\n },\n },\n {\n resource: \"nginx\",\n description: \"Get nginx configuration\",\n example: { resource: \"nginx\", action: \"get\", server_id: serverId, site_id: siteId },\n },\n ],\n common_actions: [\n {\n action: \"Deploy this site\",\n example: {\n resource: \"deployments\",\n action: \"deploy\",\n server_id: serverId,\n site_id: siteId,\n },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a database.\n */\nexport function getDatabaseHints(serverId: string, databaseId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"databases\",\n description: \"List all databases on this server\",\n example: { resource: \"databases\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Delete this database\",\n example: { resource: \"databases\", action: \"delete\", server_id: serverId, id: databaseId },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a database user.\n */\nexport function getDatabaseUserHints(serverId: string, userId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"database-users\",\n description: \"List all database users on this server\",\n example: { resource: \"database-users\", action: \"list\", server_id: serverId },\n },\n {\n resource: \"databases\",\n description: \"List databases on this server\",\n example: { resource: \"databases\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Delete this database user\",\n example: {\n resource: \"database-users\",\n action: \"delete\",\n server_id: serverId,\n id: userId,\n },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a daemon.\n */\nexport function getDaemonHints(serverId: string, daemonId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"daemons\",\n description: \"List all daemons on this server\",\n example: { resource: \"daemons\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Restart this daemon\",\n example: { resource: \"daemons\", action: \"restart\", server_id: serverId, id: daemonId },\n },\n {\n action: \"Delete this daemon\",\n example: { resource: \"daemons\", action: \"delete\", server_id: serverId, id: daemonId },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a certificate.\n */\nexport function getCertificateHints(\n serverId: string,\n siteId: string,\n domainId: string,\n): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"sites\",\n description: \"Get the parent site\",\n example: {\n resource: \"sites\",\n action: \"get\",\n server_id: serverId,\n id: siteId,\n },\n },\n ],\n common_actions: [\n {\n action: \"Activate this certificate\",\n example: {\n resource: \"certificates\",\n action: \"activate\",\n server_id: serverId,\n site_id: siteId,\n domain_id: domainId,\n },\n },\n {\n action: \"Delete this certificate\",\n example: {\n resource: \"certificates\",\n action: \"delete\",\n server_id: serverId,\n site_id: siteId,\n domain_id: domainId,\n },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a firewall rule.\n */\nexport function getFirewallRuleHints(serverId: string, ruleId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"firewall-rules\",\n description: \"List all firewall rules on this server\",\n example: { resource: \"firewall-rules\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Delete this firewall rule\",\n example: {\n resource: \"firewall-rules\",\n action: \"delete\",\n server_id: serverId,\n id: ruleId,\n },\n },\n ],\n };\n}\n\n/**\n * Hints after getting an SSH key.\n */\nexport function getSshKeyHints(serverId: string, keyId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"ssh-keys\",\n description: \"List all SSH keys on this server\",\n example: { resource: \"ssh-keys\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Delete this SSH key\",\n example: { resource: \"ssh-keys\", action: \"delete\", server_id: serverId, id: keyId },\n },\n ],\n };\n}\n\n/**\n * Hints after getting a recipe.\n */\nexport function getRecipeHints(recipeId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"recipes\",\n description: \"List all recipes\",\n example: { resource: \"recipes\", action: \"list\" },\n },\n ],\n common_actions: [\n {\n action: \"Run this recipe on servers\",\n example: { resource: \"recipes\", action: \"run\", id: recipeId, servers: [] },\n },\n {\n action: \"Delete this recipe\",\n example: { resource: \"recipes\", action: \"delete\", id: recipeId },\n },\n ],\n };\n}\n\n/**\n * Hints after getting an nginx template.\n */\nexport function getNginxTemplateHints(serverId: string, templateId: string): ContextualHints {\n return {\n related_resources: [\n {\n resource: \"nginx-templates\",\n description: \"List all nginx templates on this server\",\n example: { resource: \"nginx-templates\", action: \"list\", server_id: serverId },\n },\n ],\n common_actions: [\n {\n action: \"Update this nginx template\",\n example: {\n resource: \"nginx-templates\",\n action: \"update\",\n server_id: serverId,\n id: templateId,\n content: \"<nginx config content>\",\n },\n },\n {\n action: \"Delete this nginx template\",\n example: {\n resource: \"nginx-templates\",\n action: \"delete\",\n server_id: serverId,\n id: templateId,\n },\n },\n ],\n };\n}\n","import * as v from \"valibot\";\nimport {\n activateCertificate,\n createCertificate,\n deleteCertificate,\n getCertificate,\n} from \"@studiometa/forge-core\";\n\nimport { formatCertificate } from \"../formatters.ts\";\nimport { getCertificateHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleCertificates = createResourceHandler({\n resource: \"certificates\",\n actions: [\"get\", \"create\", \"delete\", \"activate\"],\n inputSchemas: {\n get: v.object({ server_id: v.string(), site_id: v.string(), domain_id: v.string() }),\n create: v.object({\n server_id: v.string(),\n site_id: v.string(),\n domain_id: v.string(),\n type: v.string(),\n }),\n delete: v.object({ server_id: v.string(), site_id: v.string(), domain_id: v.string() }),\n activate: v.object({ server_id: v.string(), site_id: v.string(), domain_id: v.string() }),\n },\n executors: {\n get: getCertificate,\n create: createCertificate,\n delete: deleteCertificate,\n activate: activateCertificate,\n },\n hints: (_data, _id, args) =>\n getCertificateHints(String(args.server_id), String(args.site_id), String(args.domain_id)),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"get\":\n return formatCertificate(data);\n case \"create\":\n return formatCertificate(data);\n case \"delete\":\n return `Certificate for domain ${String(args.domain_id)} deleted.`;\n case \"activate\":\n return `Certificate for domain ${String(args.domain_id)} activated.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport { createCommand, getCommand, listCommands } from \"@studiometa/forge-core\";\n\nimport { formatCommand, formatCommandList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleCommands = createResourceHandler({\n resource: \"commands\",\n actions: [\"list\", \"get\", \"create\"],\n inputSchemas: {\n list: v.object({ server_id: v.string(), site_id: v.string() }),\n get: v.object({ server_id: v.string(), site_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), site_id: v.string(), command: v.string() }),\n },\n executors: {\n list: listCommands,\n get: getCommand,\n create: createCommand,\n },\n formatResult: (action, data) => {\n switch (action) {\n case \"list\":\n return formatCommandList(data);\n case \"get\":\n return formatCommand(data);\n case \"create\":\n return \"Done.\";\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createDaemon,\n deleteDaemon,\n getDaemon,\n listDaemons,\n restartDaemon,\n updateDaemon,\n} from \"@studiometa/forge-core\";\n\nimport { formatDaemon, formatDaemonList } from \"../formatters.ts\";\nimport { getDaemonHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleDaemons = createResourceHandler({\n resource: \"daemons\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\", \"restart\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), command: v.string() }),\n update: v.object({\n server_id: v.string(),\n id: v.string(),\n name: v.string(),\n config: v.optional(v.string()),\n }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n restart: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listDaemons,\n get: getDaemon,\n create: createDaemon,\n update: updateDaemon,\n delete: deleteDaemon,\n restart: restartDaemon,\n },\n hints: (_data, id, args) => getDaemonHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatDaemonList(data);\n case \"get\":\n return formatDaemon(data);\n case \"create\":\n return formatDaemon(data);\n case \"update\":\n return formatDaemon(data);\n case \"delete\":\n return `Daemon ${args.id} deleted.`;\n case \"restart\":\n return `Daemon ${args.id} restarted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport { createDatabase, deleteDatabase, getDatabase, listDatabases } from \"@studiometa/forge-core\";\n\nimport { formatDatabase, formatDatabaseList } from \"../formatters.ts\";\nimport { getDatabaseHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleDatabases = createResourceHandler({\n resource: \"databases\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), name: v.string() }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listDatabases,\n get: getDatabase,\n create: createDatabase,\n delete: deleteDatabase,\n },\n hints: (_data, id, args) => getDatabaseHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatDatabaseList(data);\n case \"get\":\n return formatDatabase(data);\n case \"create\":\n return formatDatabase(data);\n case \"delete\":\n return `Database ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createDatabaseUser,\n deleteDatabaseUser,\n getDatabaseUser,\n listDatabaseUsers,\n updateDatabaseUser,\n} from \"@studiometa/forge-core\";\n\nimport { formatDatabaseUser, formatDatabaseUserList } from \"../formatters.ts\";\nimport { getDatabaseUserHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleDatabaseUsers = createResourceHandler({\n resource: \"database-users\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), name: v.string(), password: v.string() }),\n update: v.object({\n server_id: v.string(),\n id: v.string(),\n password: v.optional(v.nullable(v.string())),\n database_ids: v.optional(v.array(v.number())),\n }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listDatabaseUsers,\n get: getDatabaseUser,\n create: createDatabaseUser,\n update: updateDatabaseUser,\n delete: deleteDatabaseUser,\n },\n hints: (_data, id, args) => getDatabaseUserHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatDatabaseUserList(data);\n case \"get\":\n return formatDatabaseUser(data);\n case \"create\":\n return formatDatabaseUser(data);\n case \"update\":\n return formatDatabaseUser(data);\n case \"delete\":\n return `Database user ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import {\n deploySiteAndWait,\n getDeploymentLog,\n getDeploymentScript,\n listDeployments,\n updateDeploymentScript,\n} from \"@studiometa/forge-core\";\n\nimport {\n formatDeploymentList,\n formatDeploymentOutput,\n formatDeploymentScript,\n formatDeploymentScriptUpdated,\n formatDeployAction,\n} from \"../formatters.ts\";\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nimport { errorResult, jsonResult, sanitizeId } from \"./utils.ts\";\n\n/**\n * Handle deployment resource actions.\n *\n * Not using the factory because the `get` action has special logic\n * (with id → output, without id → script).\n */\nexport async function handleDeployments(\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n if (!args.server_id) return errorResult(\"Missing required field: server_id\");\n if (!args.site_id) return errorResult(\"Missing required field: site_id\");\n\n // Validate IDs to prevent path traversal\n if (!sanitizeId(args.server_id)) {\n return errorResult(`Invalid server_id: \"${args.server_id}\". IDs must be alphanumeric.`);\n }\n if (!sanitizeId(args.site_id)) {\n return errorResult(`Invalid site_id: \"${args.site_id}\". IDs must be alphanumeric.`);\n }\n if (args.id && !sanitizeId(args.id)) {\n return errorResult(`Invalid id: \"${args.id}\". IDs must be alphanumeric.`);\n }\n\n const opts = { server_id: args.server_id, site_id: args.site_id };\n\n switch (action) {\n case \"list\": {\n const result = await listDeployments(opts, ctx.executorContext);\n if (ctx.compact) {\n return jsonResult(formatDeploymentList(result.data));\n }\n return jsonResult(result.data);\n }\n\n case \"deploy\": {\n const deployResult = await deploySiteAndWait(opts, ctx.executorContext);\n return jsonResult(formatDeployAction(args.site_id, args.server_id, deployResult.data));\n }\n\n case \"get\": {\n if (args.id) {\n const result = await getDeploymentLog(\n { ...opts, deployment_id: args.id },\n ctx.executorContext,\n );\n return jsonResult(formatDeploymentOutput(args.id, result.data));\n }\n const result = await getDeploymentScript(opts, ctx.executorContext);\n return jsonResult(formatDeploymentScript(result.data));\n }\n\n case \"update\": {\n if (!args.content) return errorResult(\"Missing required field: content\");\n await updateDeploymentScript(\n { ...opts, content: args.content as string },\n ctx.executorContext,\n );\n return jsonResult(formatDeploymentScriptUpdated(args.site_id, args.server_id));\n }\n\n default:\n return errorResult(\n `Unknown action \"${action}\" for deployments. Valid actions: list, deploy, get, update.`,\n );\n }\n}\n","import * as v from \"valibot\";\nimport { getEnv, updateEnv } from \"@studiometa/forge-core\";\n\nimport { formatEnv } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleEnv = createResourceHandler({\n resource: \"env\",\n actions: [\"get\", \"update\"],\n inputSchemas: {\n get: v.object({ server_id: v.string(), site_id: v.string() }),\n update: v.object({ server_id: v.string(), site_id: v.string(), content: v.string() }),\n },\n executors: {\n get: getEnv,\n update: updateEnv,\n },\n mapOptions: (_action, args) => ({\n server_id: args.server_id,\n site_id: args.site_id,\n content: args.content,\n }),\n formatResult: (action, data) => {\n switch (action) {\n case \"get\":\n return formatEnv(data as string);\n case \"update\":\n return \"Environment variables updated.\";\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createFirewallRule,\n deleteFirewallRule,\n getFirewallRule,\n listFirewallRules,\n} from \"@studiometa/forge-core\";\n\nimport { formatFirewallRule, formatFirewallRuleList } from \"../formatters.ts\";\nimport { getFirewallRuleHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleFirewallRules = createResourceHandler({\n resource: \"firewall-rules\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), name: v.string(), port: v.string() }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listFirewallRules,\n get: getFirewallRule,\n create: createFirewallRule,\n delete: deleteFirewallRule,\n },\n hints: (_data, id, args) => getFirewallRuleHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatFirewallRuleList(data);\n case \"get\":\n return formatFirewallRule(data);\n case \"create\":\n return \"Done.\";\n case \"delete\":\n return `Firewall rule ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","/**\n * Help handler — provides detailed documentation for each resource.\n *\n * Follows the productive-tools convention: per-resource docs with\n * actions, required fields, field descriptions, and examples.\n */\n\nimport type { ToolResult } from \"./types.ts\";\n\nimport { jsonResult } from \"./utils.ts\";\n\ninterface ResourceHelp {\n description: string;\n scope: string;\n actions: Record<string, string>;\n fields?: Record<string, string>;\n examples?: Array<{ description: string; params: Record<string, unknown> }>;\n}\n\nconst RESOURCE_HELP: Record<string, ResourceHelp> = {\n servers: {\n description:\n \"Manage Laravel Forge servers — provisioned cloud instances (DigitalOcean, AWS, Hetzner, etc.)\",\n scope: \"global (no parent ID needed)\",\n actions: {\n list: \"List all servers in your Forge account\",\n get: \"Get a single server by ID with full details\",\n create: \"Provision a new server (requires provider, type, region, name)\",\n delete: \"Delete a server by ID (irreversible)\",\n reboot: \"Reboot a server by ID\",\n context:\n \"Get full server context: server details + all sub-resources (sites, databases, database users, daemons, firewall rules, scheduled jobs) in one call\",\n resolve: \"Find servers by name (partial, case-insensitive match)\",\n },\n fields: {\n id: \"Server ID\",\n name: \"Server name (hostname)\",\n provider: \"Cloud provider (hetzner, ocean2, aws, linode, vultr, custom)\",\n region: \"Provider region code\",\n ip_address: \"Public IP address\",\n is_ready: \"Whether the server has finished provisioning\",\n php_version: \"Default PHP version (php84, php83, etc.)\",\n },\n examples: [\n { description: \"List all servers\", params: { resource: \"servers\", action: \"list\" } },\n {\n description: \"Get server details\",\n params: { resource: \"servers\", action: \"get\", id: \"123\" },\n },\n {\n description: \"Reboot a server\",\n params: { resource: \"servers\", action: \"reboot\", id: \"123\" },\n },\n {\n description: \"Get full server context (server + all sub-resources)\",\n params: { resource: \"servers\", action: \"context\", id: \"123\" },\n },\n {\n description: \"Find servers by name\",\n params: { resource: \"servers\", action: \"resolve\", query: \"prod\" },\n },\n ],\n },\n\n sites: {\n description: \"Manage sites on a Forge server — web applications, PHP projects, static sites\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List all sites on a server\",\n get: \"Get a single site by ID\",\n create: \"Create a new site (requires type; optionally name, web_directory)\",\n delete: \"Delete a site by ID\",\n context:\n \"Get full site context: site details + recent deployments (last 5) + redirect rules + security rules in one call\",\n resolve: \"Find sites by domain name (partial, case-insensitive match, requires server_id)\",\n },\n fields: {\n id: \"Site ID\",\n server_id: \"Parent server ID\",\n name: \"Domain name (e.g. example.com)\",\n type: \"Site type (php, html, symfony, symfony_dev, symfony_four, laravel)\",\n web_directory: \"Web root directory (e.g. /public)\",\n repository: \"Git repository URL (if connected)\",\n deployment_status: \"Last deployment status (null, deploying, deployed, failed)\",\n },\n examples: [\n {\n description: \"List sites on a server\",\n params: { resource: \"sites\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Get site details\",\n params: { resource: \"sites\", action: \"get\", server_id: \"123\", id: \"456\" },\n },\n {\n description: \"Create a Laravel site\",\n params: {\n resource: \"sites\",\n action: \"create\",\n server_id: \"123\",\n type: \"php\",\n name: \"app.example.com\",\n web_directory: \"/public\",\n },\n },\n {\n description: \"Get full site context (site + deployments + rules)\",\n params: { resource: \"sites\", action: \"context\", server_id: \"123\", id: \"456\" },\n },\n {\n description: \"Find sites by domain name\",\n params: { resource: \"sites\", action: \"resolve\", server_id: \"123\", query: \"example\" },\n },\n ],\n },\n\n deployments: {\n description: \"Manage site deployments — trigger, monitor, and configure deploy scripts\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n list: \"List recent deployments for a site\",\n deploy: \"Trigger a new deployment\",\n get: \"Get deployment output (requires deployment_id in 'id' field)\",\n update: \"Update the deployment script (provide 'content' field)\",\n },\n fields: {\n id: \"Deployment ID\",\n server_id: \"Parent server ID\",\n site_id: \"Parent site ID\",\n status: \"Deployment status (null, deploying, deployed, failed)\",\n displayable_type: \"Type of deployment trigger\",\n ended_at: \"Completion timestamp\",\n },\n examples: [\n {\n description: \"Deploy a site\",\n params: { resource: \"deployments\", action: \"deploy\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"List deployments\",\n params: { resource: \"deployments\", action: \"list\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"Get deployment output\",\n params: {\n resource: \"deployments\",\n action: \"get\",\n server_id: \"123\",\n site_id: \"456\",\n id: \"789\",\n },\n },\n {\n description: \"Update deploy script\",\n params: {\n resource: \"deployments\",\n action: \"update\",\n server_id: \"123\",\n site_id: \"456\",\n content:\n \"cd /home/forge/app.example.com\\ngit pull\\ncomposer install\\nphp artisan migrate --force\",\n },\n },\n ],\n },\n\n env: {\n description: \"Manage environment variables (.env file) for a site\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n get: \"Get the current .env file content\",\n update: \"Replace the entire .env file (provide 'content' field)\",\n },\n examples: [\n {\n description: \"Get env variables\",\n params: { resource: \"env\", action: \"get\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"Update env\",\n params: {\n resource: \"env\",\n action: \"update\",\n server_id: \"123\",\n site_id: \"456\",\n content: \"APP_ENV=production\\nAPP_DEBUG=false\\nDB_HOST=127.0.0.1\",\n },\n },\n ],\n },\n\n nginx: {\n description: \"Manage Nginx configuration for a site\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n get: \"Get the current Nginx config\",\n update: \"Replace the Nginx config (provide 'content' field)\",\n },\n examples: [\n {\n description: \"Get nginx config\",\n params: { resource: \"nginx\", action: \"get\", server_id: \"123\", site_id: \"456\" },\n },\n ],\n },\n\n certificates: {\n description:\n \"Manage SSL/TLS certificates per domain — Let's Encrypt, CSR, existing, or cloned (v2: one cert per domain)\",\n scope: \"domain (requires server_id + site_id + domain_id)\",\n actions: {\n get: \"Get certificate for a domain\",\n create: \"Create/request a new certificate for a domain\",\n delete: \"Delete a domain certificate\",\n activate: \"Activate a domain certificate\",\n },\n examples: [\n {\n description: \"Get certificate for a domain\",\n params: {\n resource: \"certificates\",\n action: \"get\",\n server_id: \"123\",\n site_id: \"456\",\n domain_id: \"789\",\n },\n },\n {\n description: \"Create Let's Encrypt cert\",\n params: {\n resource: \"certificates\",\n action: \"create\",\n server_id: \"123\",\n site_id: \"456\",\n domain_id: \"789\",\n type: \"letsencrypt\",\n },\n },\n {\n description: \"Activate a certificate\",\n params: {\n resource: \"certificates\",\n action: \"activate\",\n server_id: \"123\",\n site_id: \"456\",\n domain_id: \"789\",\n },\n },\n ],\n },\n\n databases: {\n description: \"Manage MySQL/PostgreSQL databases on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List databases on a server\",\n get: \"Get database details\",\n create: \"Create a new database (optionally with user)\",\n delete: \"Delete a database\",\n },\n fields: {\n name: \"Database name\",\n user: \"(create only) Create a database user\",\n password: \"(create only) User password\",\n },\n examples: [\n {\n description: \"List databases\",\n params: { resource: \"databases\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Create database with user\",\n params: {\n resource: \"databases\",\n action: \"create\",\n server_id: \"123\",\n name: \"myapp\",\n user: \"admin\",\n password: \"secret123\",\n },\n },\n ],\n },\n\n \"database-users\": {\n description: \"Manage database users on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List database users on a server\",\n get: \"Get database user details\",\n create: \"Create a new database user\",\n delete: \"Delete a database user\",\n },\n fields: {\n name: \"Database user name\",\n password: \"User password\",\n databases: \"(create only) Array of database IDs to grant access to\",\n },\n examples: [\n {\n description: \"List database users\",\n params: { resource: \"database-users\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Create a database user\",\n params: {\n resource: \"database-users\",\n action: \"create\",\n server_id: \"123\",\n name: \"forge\",\n password: \"secret123\",\n databases: [1, 2],\n },\n },\n ],\n },\n\n daemons: {\n description: \"Manage background processes (daemons) — queue workers, websocket servers, etc.\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List daemons on a server\",\n get: \"Get daemon details\",\n create: \"Create a new daemon\",\n delete: \"Delete a daemon\",\n restart: \"Restart a daemon\",\n },\n fields: {\n command: \"Shell command to run\",\n user: \"Execution user (default: forge)\",\n directory: \"Working directory\",\n processes: \"Number of processes (default: 1)\",\n },\n examples: [\n {\n description: \"List daemons\",\n params: { resource: \"daemons\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Create queue worker\",\n params: {\n resource: \"daemons\",\n action: \"create\",\n server_id: \"123\",\n command: \"php artisan queue:work --tries=3\",\n user: \"forge\",\n },\n },\n {\n description: \"Restart a daemon\",\n params: { resource: \"daemons\", action: \"restart\", server_id: \"123\", id: \"456\" },\n },\n ],\n },\n\n \"firewall-rules\": {\n description: \"Manage UFW firewall rules on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List firewall rules\",\n get: \"Get rule details\",\n create: \"Create a new firewall rule\",\n delete: \"Delete a firewall rule\",\n },\n fields: {\n name: \"Rule name/description\",\n port: \"Port number or range (e.g. 80, 8000-9000)\",\n type: \"allow or deny (default: allow)\",\n ip_address: \"Restrict to specific IP (optional)\",\n },\n examples: [\n {\n description: \"List firewall rules\",\n params: { resource: \"firewall-rules\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Open port 3000\",\n params: {\n resource: \"firewall-rules\",\n action: \"create\",\n server_id: \"123\",\n name: \"Allow Node.js\",\n port: 3000,\n },\n },\n ],\n },\n\n \"ssh-keys\": {\n description: \"Manage SSH keys on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List SSH keys\",\n get: \"Get key details\",\n create: \"Add an SSH key to the server\",\n delete: \"Remove an SSH key\",\n },\n fields: {\n name: \"Key label/description\",\n key: \"Public key content (ssh-rsa ...)\",\n username: \"User to add the key to (optional)\",\n },\n examples: [\n {\n description: \"List SSH keys\",\n params: { resource: \"ssh-keys\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Add SSH key\",\n params: {\n resource: \"ssh-keys\",\n action: \"create\",\n server_id: \"123\",\n name: \"Deploy Key\",\n key: \"ssh-rsa AAAA...\",\n },\n },\n ],\n },\n\n \"security-rules\": {\n description: \"Manage HTTP Basic Auth security rules for a site\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n list: \"List security rules\",\n get: \"Get rule details\",\n create: \"Create a security rule with credentials\",\n delete: \"Delete a security rule\",\n },\n examples: [\n {\n description: \"List security rules\",\n params: { resource: \"security-rules\", action: \"list\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"Create basic auth\",\n params: {\n resource: \"security-rules\",\n action: \"create\",\n server_id: \"123\",\n site_id: \"456\",\n name: \"Staging Auth\",\n credentials: [{ username: \"admin\", password: \"secret\" }],\n },\n },\n ],\n },\n\n \"redirect-rules\": {\n description: \"Manage URL redirect rules for a site\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n list: \"List redirect rules\",\n get: \"Get rule details\",\n create: \"Create a redirect rule\",\n delete: \"Delete a redirect rule\",\n },\n fields: {\n from: \"Source path (regex supported)\",\n to: \"Destination URL\",\n type: \"redirect (302, default) or permanent (301)\",\n },\n examples: [\n {\n description: \"List redirects\",\n params: { resource: \"redirect-rules\", action: \"list\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"Create redirect\",\n params: {\n resource: \"redirect-rules\",\n action: \"create\",\n server_id: \"123\",\n site_id: \"456\",\n from: \"/old-page\",\n to: \"/new-page\",\n type: \"permanent\",\n },\n },\n ],\n },\n\n monitors: {\n description: \"Manage server monitoring alerts — CPU, disk, memory thresholds\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List monitors\",\n get: \"Get monitor details\",\n create: \"Create a monitor\",\n delete: \"Delete a monitor\",\n },\n fields: {\n type: \"Monitor type (disk, cpu, memory)\",\n operator: \"Comparison operator (gte, lte)\",\n threshold: \"Threshold value (e.g. 80 for 80%)\",\n minutes: \"Check interval in minutes\",\n },\n examples: [\n {\n description: \"List monitors\",\n params: { resource: \"monitors\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Alert on high disk usage\",\n params: {\n resource: \"monitors\",\n action: \"create\",\n server_id: \"123\",\n type: \"disk\",\n operator: \"gte\",\n threshold: 80,\n minutes: 5,\n },\n },\n ],\n },\n\n \"nginx-templates\": {\n description: \"Manage reusable Nginx configuration templates on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List nginx templates\",\n get: \"Get template with content\",\n create: \"Create a new template\",\n update: \"Update template name or content\",\n delete: \"Delete a template\",\n },\n examples: [\n {\n description: \"List templates\",\n params: { resource: \"nginx-templates\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Get template content\",\n params: { resource: \"nginx-templates\", action: \"get\", server_id: \"123\", id: \"456\" },\n },\n ],\n },\n\n backups: {\n description:\n \"Manage backup configurations — automated database backups to S3, Spaces, or other providers\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List backup configurations on a server\",\n get: \"Get backup config details (databases, schedule, retention)\",\n create: \"Create a new backup configuration\",\n delete: \"Delete a backup configuration\",\n },\n fields: {\n provider: \"Backup provider (s3, spaces, custom)\",\n credentials: \"Provider credentials (keys, bucket, region)\",\n schedule: \"Backup schedule (daily, weekly, custom cron)\",\n databases: \"Array of database IDs to back up\",\n retention: \"Number of backups to retain\",\n },\n examples: [\n {\n description: \"List backup configs\",\n params: { resource: \"backups\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Get backup config details\",\n params: { resource: \"backups\", action: \"get\", server_id: \"123\", id: \"456\" },\n },\n ],\n },\n\n commands: {\n description: \"Execute and list site commands — run artisan commands or shell scripts on a site\",\n scope: \"site (requires server_id + site_id)\",\n actions: {\n list: \"List commands executed on a site\",\n get: \"Get command details and status\",\n create: \"Execute a new command on the site\",\n },\n fields: {\n command: \"Shell command to execute\",\n },\n examples: [\n {\n description: \"List commands\",\n params: { resource: \"commands\", action: \"list\", server_id: \"123\", site_id: \"456\" },\n },\n {\n description: \"Run a command\",\n params: {\n resource: \"commands\",\n action: \"create\",\n server_id: \"123\",\n site_id: \"456\",\n command: \"php artisan migrate --force\",\n },\n },\n ],\n },\n\n \"scheduled-jobs\": {\n description: \"Manage cron jobs (scheduled tasks) on a server\",\n scope: \"server (requires server_id)\",\n actions: {\n list: \"List scheduled jobs on a server\",\n get: \"Get job details (command, frequency, cron expression)\",\n create: \"Create a new scheduled job\",\n delete: \"Delete a scheduled job\",\n },\n fields: {\n command: \"Shell command to schedule\",\n user: \"Execution user (default: forge)\",\n frequency: \"Frequency preset (minutely, hourly, nightly, weekly, monthly, custom)\",\n minute: \"(custom frequency) Minute field\",\n hour: \"(custom frequency) Hour field\",\n day: \"(custom frequency) Day of month field\",\n month: \"(custom frequency) Month field\",\n weekday: \"(custom frequency) Day of week field\",\n },\n examples: [\n {\n description: \"List scheduled jobs\",\n params: { resource: \"scheduled-jobs\", action: \"list\", server_id: \"123\" },\n },\n {\n description: \"Create minutely scheduler\",\n params: {\n resource: \"scheduled-jobs\",\n action: \"create\",\n server_id: \"123\",\n command: \"php /home/forge/app.com/artisan schedule:run\",\n frequency: \"minutely\",\n user: \"forge\",\n },\n },\n ],\n },\n\n user: {\n description: \"Get the currently authenticated Forge user profile\",\n scope: \"global (no parent ID needed)\",\n actions: {\n get: \"Get the authenticated user's profile (name, email)\",\n },\n examples: [\n {\n description: \"Get user profile\",\n params: { resource: \"user\", action: \"get\" },\n },\n ],\n },\n\n batch: {\n description:\n \"Execute multiple read operations in a single call — reduces round-trips for AI agents\",\n scope: \"global (no parent ID needed)\",\n actions: {\n run: \"Execute a batch of read operations in parallel (max 10)\",\n },\n fields: {\n operations: \"Array of operations [{resource, action, ...params}] (max 10)\",\n },\n examples: [\n {\n description: \"Batch: list servers + list sites on a server\",\n params: {\n resource: \"batch\",\n action: \"run\",\n operations: [\n { resource: \"servers\", action: \"list\" },\n { resource: \"sites\", action: \"list\", server_id: \"123\" },\n ],\n },\n },\n ],\n },\n\n recipes: {\n description:\n \"Manage and run server recipes — reusable bash scripts executed on one or more servers\",\n scope: \"global (no parent ID needed)\",\n actions: {\n list: \"List all recipes\",\n get: \"Get recipe details and script content\",\n create: \"Create a new recipe\",\n delete: \"Delete a recipe\",\n run: \"Run a recipe on specified servers (provide 'servers' as array of server IDs)\",\n },\n fields: {\n name: \"Recipe name\",\n script: \"Bash script content\",\n user: \"Execution user (default: root)\",\n servers: \"(run only) Array of server IDs to run on\",\n },\n examples: [\n { description: \"List recipes\", params: { resource: \"recipes\", action: \"list\" } },\n {\n description: \"Create a recipe\",\n params: {\n resource: \"recipes\",\n action: \"create\",\n name: \"Clear caches\",\n script: \"php artisan cache:clear\\nphp artisan view:clear\",\n },\n },\n {\n description: \"Run recipe on servers\",\n params: { resource: \"recipes\", action: \"run\", id: \"123\", servers: [1, 2, 3] },\n },\n ],\n },\n};\n\n/**\n * Handle help action — returns documentation for a specific resource.\n */\nexport function handleHelp(resource: string): ToolResult {\n const help = RESOURCE_HELP[resource];\n\n if (!help) {\n return handleHelpOverview();\n }\n\n return jsonResult({ resource, ...help });\n}\n\n/**\n * Get help for all resources (overview).\n */\nexport function handleHelpOverview(): ToolResult {\n const overview = Object.entries(RESOURCE_HELP).map(([resource, help]) => ({\n resource,\n description: help.description,\n scope: help.scope,\n actions: Object.keys(help.actions),\n }));\n\n return jsonResult({\n message: 'Use action=\"help\" with a specific resource for detailed documentation',\n resources: overview,\n _tip: \"Always call { action: 'help', resource: '<name>' } before your first interaction with any resource to learn required fields and examples.\",\n });\n}\n","import * as v from \"valibot\";\nimport { createMonitor, deleteMonitor, getMonitor, listMonitors } from \"@studiometa/forge-core\";\n\nimport { formatMonitor, formatMonitorList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleMonitors = createResourceHandler({\n resource: \"monitors\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({\n server_id: v.string(),\n type: v.string(),\n operator: v.string(),\n threshold: v.string(),\n minutes: v.string(),\n }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listMonitors,\n get: getMonitor,\n create: createMonitor,\n delete: deleteMonitor,\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatMonitorList(data);\n case \"get\":\n return formatMonitor(data);\n case \"create\":\n return formatMonitor(data);\n case \"delete\":\n return `Monitor ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport { getNginxConfig, updateNginxConfig } from \"@studiometa/forge-core\";\n\nimport { formatNginxConfig } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleNginxConfig = createResourceHandler({\n resource: \"nginx\",\n actions: [\"get\", \"update\"],\n inputSchemas: {\n get: v.object({ server_id: v.string(), site_id: v.string() }),\n update: v.object({ server_id: v.string(), site_id: v.string(), content: v.string() }),\n },\n executors: {\n get: getNginxConfig,\n update: updateNginxConfig,\n },\n mapOptions: (_action, args) => ({\n server_id: args.server_id,\n site_id: args.site_id,\n content: args.content,\n }),\n formatResult: (action, data) => {\n switch (action) {\n case \"get\":\n return formatNginxConfig(data as string);\n case \"update\":\n return \"Nginx configuration updated.\";\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createNginxTemplate,\n deleteNginxTemplate,\n getNginxTemplate,\n listNginxTemplates,\n updateNginxTemplate,\n} from \"@studiometa/forge-core\";\n\nimport { formatNginxTemplate, formatNginxTemplateList } from \"../formatters.ts\";\nimport { getNginxTemplateHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleNginxTemplates = createResourceHandler({\n resource: \"nginx-templates\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), name: v.string(), content: v.string() }),\n update: v.object({ server_id: v.string(), id: v.string() }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listNginxTemplates,\n get: getNginxTemplate,\n create: createNginxTemplate,\n update: updateNginxTemplate,\n delete: deleteNginxTemplate,\n },\n hints: (_data, id, args) => getNginxTemplateHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatNginxTemplateList(data);\n case \"get\":\n return formatNginxTemplate(data);\n case \"create\":\n return formatNginxTemplate(data);\n case \"update\":\n return formatNginxTemplate(data);\n case \"delete\":\n return `Nginx template ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createRecipe,\n deleteRecipe,\n getRecipe,\n listRecipes,\n runRecipe,\n updateRecipe,\n} from \"@studiometa/forge-core\";\n\nimport { formatRecipe, formatRecipeList } from \"../formatters.ts\";\nimport { getRecipeHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleRecipes = createResourceHandler({\n resource: \"recipes\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\", \"run\"],\n inputSchemas: {\n get: v.object({ id: v.string() }),\n create: v.object({ name: v.string(), script: v.string() }),\n delete: v.object({ id: v.string() }),\n update: v.object({\n id: v.string(),\n name: v.optional(v.string()),\n user: v.optional(v.string()),\n script: v.optional(v.string()),\n }),\n run: v.object({ id: v.string(), servers: v.unknown() }),\n },\n executors: {\n list: listRecipes,\n get: getRecipe,\n create: createRecipe,\n delete: deleteRecipe,\n update: updateRecipe,\n run: runRecipe,\n },\n hints: (_data, id) => getRecipeHints(id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatRecipeList(data);\n case \"get\":\n return formatRecipe(data);\n case \"create\":\n return formatRecipe(data);\n case \"update\":\n return formatRecipe(data);\n case \"delete\":\n return `Recipe ${args.id} deleted.`;\n case \"run\": {\n const servers = args.servers;\n const count = Array.isArray(servers) ? servers.length : 1;\n return `Recipe ${args.id} run on ${count} server(s).`;\n }\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createRedirectRule,\n deleteRedirectRule,\n getRedirectRule,\n listRedirectRules,\n} from \"@studiometa/forge-core\";\n\nimport { formatRedirectRule, formatRedirectRuleList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleRedirectRules = createResourceHandler({\n resource: \"redirect-rules\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string(), site_id: v.string() }),\n get: v.object({ server_id: v.string(), site_id: v.string(), id: v.string() }),\n create: v.object({\n server_id: v.string(),\n site_id: v.string(),\n from: v.string(),\n to: v.string(),\n }),\n delete: v.object({ server_id: v.string(), site_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listRedirectRules,\n get: getRedirectRule,\n create: createRedirectRule,\n delete: deleteRedirectRule,\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatRedirectRuleList(data);\n case \"get\":\n return formatRedirectRule(data);\n case \"create\":\n return \"Done.\";\n case \"delete\":\n return `Redirect rule ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import * as v from \"valibot\";\nimport {\n createScheduledJob,\n deleteScheduledJob,\n getScheduledJob,\n listScheduledJobs,\n} from \"@studiometa/forge-core\";\n\nimport { formatScheduledJob, formatScheduledJobList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleScheduledJobs = createResourceHandler({\n resource: \"scheduled-jobs\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string(), site_id: v.optional(v.string()) }),\n get: v.object({ server_id: v.string(), id: v.string(), site_id: v.optional(v.string()) }),\n create: v.object({\n server_id: v.string(),\n command: v.string(),\n site_id: v.optional(v.string()),\n }),\n delete: v.object({ server_id: v.string(), id: v.string(), site_id: v.optional(v.string()) }),\n },\n executors: {\n list: listScheduledJobs,\n get: getScheduledJob,\n create: createScheduledJob,\n delete: deleteScheduledJob,\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatScheduledJobList(data);\n case \"get\":\n return formatScheduledJob(data);\n case \"create\":\n return formatScheduledJob(data);\n case \"delete\":\n return `Scheduled job ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","/**\n * Schema handler — compact, machine-readable resource specifications.\n *\n * More concise than action=help, optimized for LLM consumption when only\n * field metadata is needed (actions, required params, field descriptions).\n */\n\nimport type { ToolResult } from \"./types.ts\";\n\nimport { jsonResult } from \"./utils.ts\";\n\ninterface ResourceFieldSpec {\n required: boolean;\n type: string;\n}\n\ninterface ResourceSchemaData {\n actions: string[];\n scope: string;\n required: Record<string, string[]>;\n create?: Record<string, ResourceFieldSpec>;\n}\n\nconst RESOURCE_SCHEMAS: Record<string, ResourceSchemaData> = {\n servers: {\n actions: [\"list\", \"get\", \"create\", \"delete\", \"reboot\", \"resolve\", \"context\"],\n scope: \"global\",\n required: {\n get: [\"id\"],\n create: [\"provider\", \"type\", \"region\", \"name\"],\n delete: [\"id\"],\n reboot: [\"id\"],\n context: [\"id\"],\n resolve: [\"query\"],\n },\n create: {\n provider: { required: true, type: \"string — hetzner, ocean2, aws, etc.\" },\n type: { required: true, type: \"string — app, web, worker, etc.\" },\n region: { required: true, type: \"string — provider-specific region code\" },\n name: { required: true, type: \"string\" },\n credential_id: { required: false, type: \"string — provider credential ID\" },\n php_version: { required: false, type: \"string — php84, php83, etc.\" },\n database: { required: false, type: \"string — database name to create\" },\n },\n },\n\n sites: {\n actions: [\"list\", \"get\", \"create\", \"delete\", \"resolve\", \"context\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"type\"],\n delete: [\"server_id\", \"id\"],\n context: [\"server_id\", \"id\"],\n resolve: [\"server_id\", \"query\"],\n },\n create: {\n type: { required: true, type: \"string — php, html, symfony, etc.\" },\n name: { required: false, type: \"string — domain name (e.g. example.com)\" },\n web_directory: { required: false, type: \"string — web root (/public)\" },\n },\n },\n\n deployments: {\n actions: [\"list\", \"deploy\", \"get\", \"update\"],\n scope: \"site\",\n required: {\n list: [\"server_id\", \"site_id\"],\n deploy: [\"server_id\", \"site_id\"],\n get: [\"server_id\", \"site_id\", \"id\"],\n update: [\"server_id\", \"site_id\", \"content\"],\n },\n },\n\n env: {\n actions: [\"get\", \"update\"],\n scope: \"site\",\n required: {\n get: [\"server_id\", \"site_id\"],\n update: [\"server_id\", \"site_id\", \"content\"],\n },\n },\n\n nginx: {\n actions: [\"get\", \"update\"],\n scope: \"site\",\n required: {\n get: [\"server_id\", \"site_id\"],\n update: [\"server_id\", \"site_id\", \"content\"],\n },\n },\n\n certificates: {\n actions: [\"list\", \"get\", \"create\", \"delete\", \"activate\"],\n scope: \"site\",\n required: {\n list: [\"server_id\", \"site_id\"],\n get: [\"server_id\", \"site_id\", \"id\"],\n create: [\"server_id\", \"site_id\", \"domain\"],\n delete: [\"server_id\", \"site_id\", \"id\"],\n activate: [\"server_id\", \"site_id\", \"id\"],\n },\n create: {\n type: { required: false, type: \"string — new, existing, clone (default: new)\" },\n domain: { required: true, type: \"string\" },\n },\n },\n\n databases: {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"name\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string — database name\" },\n user: { required: false, type: \"string — database user to create\" },\n password: { required: false, type: \"string — user password\" },\n },\n },\n\n \"database-users\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"name\", \"password\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string — database user name\" },\n password: { required: true, type: \"string — user password\" },\n databases: { required: false, type: \"array — database IDs to grant access to\" },\n },\n },\n\n daemons: {\n actions: [\"list\", \"get\", \"create\", \"delete\", \"restart\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"command\"],\n delete: [\"server_id\", \"id\"],\n restart: [\"server_id\", \"id\"],\n },\n create: {\n command: { required: true, type: \"string — e.g. php artisan queue:work\" },\n user: { required: false, type: \"string — default: forge\" },\n directory: { required: false, type: \"string — working directory\" },\n processes: { required: false, type: \"number — default: 1\" },\n },\n },\n\n \"firewall-rules\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"name\", \"port\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string\" },\n port: { required: true, type: \"number|string — e.g. 80, 443, 8000-9000\" },\n type: { required: false, type: \"string — allow (default) or deny\" },\n ip_address: { required: false, type: \"string — restrict to IP\" },\n },\n },\n\n \"ssh-keys\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"name\", \"key\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string — key label\" },\n key: { required: true, type: \"string — public key content\" },\n username: { required: false, type: \"string — user to add key to\" },\n },\n },\n\n \"security-rules\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"site\",\n required: {\n list: [\"server_id\", \"site_id\"],\n get: [\"server_id\", \"site_id\", \"id\"],\n create: [\"server_id\", \"site_id\", \"name\", \"credentials\"],\n delete: [\"server_id\", \"site_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string — rule name\" },\n path: { required: false, type: \"string — protected path (default: /)\" },\n credentials: { required: true, type: \"array — [{username, password}]\" },\n },\n },\n\n \"redirect-rules\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"site\",\n required: {\n list: [\"server_id\", \"site_id\"],\n get: [\"server_id\", \"site_id\", \"id\"],\n create: [\"server_id\", \"site_id\", \"from\", \"to\"],\n delete: [\"server_id\", \"site_id\", \"id\"],\n },\n create: {\n from: { required: true, type: \"string — source path\" },\n to: { required: true, type: \"string — destination URL\" },\n type: { required: false, type: \"string — redirect (302) or permanent (301)\" },\n },\n },\n\n monitors: {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"type\", \"operator\", \"threshold\", \"minutes\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n type: { required: true, type: \"string — disk, cpu, memory, etc.\" },\n operator: { required: true, type: \"string — gte, lte\" },\n threshold: { required: true, type: \"number — e.g. 80\" },\n minutes: { required: true, type: \"number — check interval in minutes\" },\n },\n },\n\n \"nginx-templates\": {\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"name\", \"content\"],\n update: [\"server_id\", \"id\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n name: { required: true, type: \"string — template name\" },\n content: { required: true, type: \"string — nginx configuration template\" },\n },\n },\n\n backups: {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"provider\", \"credentials\", \"frequency\", \"databases\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n provider: { required: true, type: \"string — s3, spaces, custom\" },\n credentials: { required: true, type: \"object — provider credentials (key, secret, etc.)\" },\n frequency: { required: true, type: \"string — daily, weekly, custom\" },\n databases: { required: true, type: \"array — database IDs to back up\" },\n directory: { required: false, type: \"string — backup directory\" },\n email: { required: false, type: \"string — notification email\" },\n retention: { required: false, type: \"number — backups to retain (default: 7)\" },\n },\n },\n\n commands: {\n actions: [\"list\", \"get\", \"create\"],\n scope: \"site\",\n required: {\n list: [\"server_id\", \"site_id\"],\n get: [\"server_id\", \"site_id\", \"id\"],\n create: [\"server_id\", \"site_id\", \"command\"],\n },\n create: {\n command: { required: true, type: \"string — shell command to execute\" },\n },\n },\n\n \"scheduled-jobs\": {\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n scope: \"server\",\n required: {\n list: [\"server_id\"],\n get: [\"server_id\", \"id\"],\n create: [\"server_id\", \"command\"],\n delete: [\"server_id\", \"id\"],\n },\n create: {\n command: { required: true, type: \"string — command to schedule\" },\n user: { required: false, type: \"string — execution user (default: forge)\" },\n frequency: {\n required: false,\n type: \"string — minutely, hourly, nightly, weekly, monthly, custom\",\n },\n minute: { required: false, type: \"string — cron minute field (custom frequency)\" },\n hour: { required: false, type: \"string — cron hour field\" },\n day: { required: false, type: \"string — cron day field\" },\n month: { required: false, type: \"string — cron month field\" },\n weekday: { required: false, type: \"string — cron weekday field\" },\n },\n },\n\n user: {\n actions: [\"get\"],\n scope: \"global\",\n required: {},\n },\n\n batch: {\n actions: [\"run\"],\n scope: \"global\",\n required: {\n run: [\"operations\"],\n },\n },\n\n recipes: {\n actions: [\"list\", \"get\", \"create\", \"delete\", \"run\"],\n scope: \"global\",\n required: {\n get: [\"id\"],\n create: [\"name\", \"script\"],\n delete: [\"id\"],\n run: [\"id\", \"servers\"],\n },\n create: {\n name: { required: true, type: \"string — recipe name\" },\n script: { required: true, type: \"string — bash script content\" },\n user: { required: false, type: \"string — execution user (default: root)\" },\n },\n },\n};\n\n/**\n * Handle schema action — returns compact spec for a specific resource.\n */\nexport function handleSchema(resource: string): ToolResult {\n const schema = RESOURCE_SCHEMAS[resource];\n\n if (!schema) {\n return jsonResult({\n error: `Unknown resource: ${resource}`,\n available_resources: Object.keys(RESOURCE_SCHEMAS),\n });\n }\n\n return jsonResult({ resource, ...schema });\n}\n\n/**\n * Get schema overview for all resources.\n */\nexport function handleSchemaOverview(): ToolResult {\n const overview = Object.entries(RESOURCE_SCHEMAS).map(([resource, schema]) => ({\n resource,\n actions: schema.actions,\n scope: schema.scope,\n }));\n\n return jsonResult({\n _tip: 'Use action=\"schema\" with a specific resource for full required/create spec',\n resources: overview,\n });\n}\n","import * as v from \"valibot\";\nimport {\n createSecurityRule,\n deleteSecurityRule,\n getSecurityRule,\n listSecurityRules,\n updateSecurityRule,\n} from \"@studiometa/forge-core\";\n\nimport { formatSecurityRule, formatSecurityRuleList } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleSecurityRules = createResourceHandler({\n resource: \"security-rules\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string(), site_id: v.string() }),\n get: v.object({ server_id: v.string(), site_id: v.string(), id: v.string() }),\n create: v.object({\n server_id: v.string(),\n site_id: v.string(),\n name: v.string(),\n credentials: v.unknown(),\n }),\n update: v.object({\n server_id: v.string(),\n site_id: v.string(),\n id: v.string(),\n name: v.string(),\n path: v.optional(v.nullable(v.string())),\n credentials: v.unknown(),\n }),\n delete: v.object({ server_id: v.string(), site_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listSecurityRules,\n get: getSecurityRule,\n create: createSecurityRule,\n update: updateSecurityRule,\n delete: deleteSecurityRule,\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatSecurityRuleList(data);\n case \"get\":\n return formatSecurityRule(data);\n case \"create\":\n return formatSecurityRule(data);\n case \"update\":\n return formatSecurityRule(data);\n case \"delete\":\n return `Security rule ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import {\n getServer,\n getSite,\n listDaemons,\n listDatabaseUsers,\n listDatabases,\n listDeployments,\n listFirewallRules,\n listRedirectRules,\n listScheduledJobs,\n listSecurityRules,\n listSites,\n} from \"@studiometa/forge-core\";\n\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\nimport { errorResult, jsonResult } from \"./utils.ts\";\n\n/**\n * Handle server context action — fetches server details plus all sub-resources\n * (sites, databases, database users, daemons, firewall rules, scheduled jobs)\n * in parallel in a single call.\n */\nexport async function handleServerContext(\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n const serverId = args.id;\n if (!serverId) return errorResult(\"Missing required field: id\");\n\n const execCtx = ctx.executorContext;\n\n const [server, sites, databases, dbUsers, daemons, firewallRules, scheduledJobs] =\n await Promise.all([\n getServer({ server_id: serverId }, execCtx),\n listSites({ server_id: serverId }, execCtx),\n listDatabases({ server_id: serverId }, execCtx),\n listDatabaseUsers({ server_id: serverId }, execCtx),\n listDaemons({ server_id: serverId }, execCtx),\n listFirewallRules({ server_id: serverId }, execCtx),\n listScheduledJobs({ server_id: serverId }, execCtx),\n ]);\n\n return jsonResult({\n server: server.data,\n sites: sites.data,\n databases: databases.data,\n database_users: dbUsers.data,\n daemons: daemons.data,\n firewall_rules: firewallRules.data,\n scheduled_jobs: scheduledJobs.data,\n });\n}\n\n/**\n * Handle site context action — fetches site details plus all sub-resources\n * (recent deployments, certificates, redirect rules, security rules)\n * in parallel in a single call. Deployments are limited to the last 5.\n */\nexport async function handleSiteContext(\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n const serverId = args.server_id;\n const siteId = args.id;\n if (!serverId) return errorResult(\"Missing required field: server_id\");\n if (!siteId) return errorResult(\"Missing required field: id\");\n\n const execCtx = ctx.executorContext;\n\n const [site, deployments, redirectRules, securityRules] = await Promise.all([\n getSite({ server_id: serverId, site_id: siteId }, execCtx),\n listDeployments({ server_id: serverId, site_id: siteId }, execCtx),\n listRedirectRules({ server_id: serverId, site_id: siteId }, execCtx),\n listSecurityRules({ server_id: serverId, site_id: siteId }, execCtx),\n ]);\n\n const recentDeployments = Array.isArray(deployments.data)\n ? deployments.data.slice(0, 5)\n : deployments.data;\n\n return jsonResult({\n site: site.data,\n deployments: recentDeployments,\n redirect_rules: redirectRules.data,\n security_rules: securityRules.data,\n });\n}\n","import * as v from \"valibot\";\nimport {\n createServer,\n deleteServer,\n getServer,\n listServers,\n rebootServer,\n resolveServers,\n} from \"@studiometa/forge-core\";\n\nimport type { ResolveResult } from \"@studiometa/forge-core\";\n\nimport { formatServer, formatServerList } from \"../formatters.ts\";\nimport { getServerHints } from \"../hints.ts\";\nimport { handleServerContext } from \"./context.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nconst _handleServers = createResourceHandler({\n resource: \"servers\",\n actions: [\"list\", \"get\", \"create\", \"delete\", \"reboot\", \"resolve\"],\n inputSchemas: {\n get: v.object({ id: v.string() }),\n create: v.object({\n provider: v.string(),\n name: v.string(),\n type: v.string(),\n region: v.string(),\n }),\n delete: v.object({ id: v.string() }),\n reboot: v.object({ id: v.string() }),\n resolve: v.object({ query: v.string() }),\n },\n executors: {\n list: listServers,\n get: getServer,\n create: createServer,\n delete: deleteServer,\n reboot: rebootServer,\n resolve: resolveServers,\n },\n hints: (_data, id) => getServerHints(id),\n mapOptions: (action, args) => {\n switch (action) {\n case \"get\":\n case \"delete\":\n case \"reboot\":\n return { server_id: args.id };\n case \"create\":\n return {\n provider: args.provider,\n /* v8 ignore next */\n credential_id: Number(args.credential_id) || 0,\n name: args.name,\n /* v8 ignore next */\n type: args.type ?? \"app\",\n /* v8 ignore next */\n size: args.size ?? \"\",\n region: args.region,\n };\n case \"resolve\":\n return { query: args.query };\n default:\n return {};\n }\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatServerList(data);\n case \"get\":\n return formatServer(data);\n case \"create\":\n return formatServer(data);\n case \"delete\":\n return `Server ${args.id} deleted.`;\n case \"reboot\":\n return `Server ${args.id} reboot initiated.`;\n case \"resolve\": {\n const result = data as ResolveResult;\n if (result.total === 0) return `No servers matching \"${result.query}\".`;\n const lines = result.matches.map((m) => `• ${m.name} (ID: ${m.id})`);\n return `${result.total} server(s) matching \"${result.query}\":\\n${lines.join(\"\\n\")}`;\n }\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n\n/**\n * Handle servers resource actions, intercepting the `context` action\n * for rich single-call resource fetching.\n */\nexport async function handleServers(\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n if (action === \"context\") {\n return handleServerContext(args, ctx);\n }\n return _handleServers(action, args, ctx);\n}\n","import * as v from \"valibot\";\nimport {\n createSite,\n deleteSite,\n getSite,\n listSites,\n resolveSites,\n updateSite,\n} from \"@studiometa/forge-core\";\n\nimport type { ResolveSiteResult } from \"@studiometa/forge-core\";\n\nimport { formatSite, formatSiteList } from \"../formatters.ts\";\nimport { getSiteHints } from \"../hints.ts\";\nimport { handleSiteContext } from \"./context.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nconst _handleSites = createResourceHandler({\n resource: \"sites\",\n actions: [\"list\", \"get\", \"create\", \"update\", \"delete\", \"resolve\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), type: v.string() }),\n update: v.object({ server_id: v.string(), id: v.string() }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n resolve: v.object({ server_id: v.string(), query: v.string() }),\n },\n executors: {\n list: listSites,\n get: getSite,\n create: createSite,\n update: updateSite,\n delete: deleteSite,\n resolve: resolveSites,\n },\n hints: (_data, id, args) => getSiteHints(String(args.server_id), id),\n mapOptions: (action, args) => {\n switch (action) {\n case \"list\":\n return { server_id: args.server_id };\n case \"get\":\n return { server_id: args.server_id, site_id: args.id };\n case \"create\":\n return {\n server_id: args.server_id,\n type: args.type ?? \"php\",\n name: args.name ?? args.domain,\n web_directory: args.web_directory ?? args.directory,\n };\n case \"update\":\n return {\n server_id: args.server_id,\n site_id: args.id,\n root_path: args.root_path,\n directory: args.directory,\n type: args.type,\n php_version: args.php_version,\n push_to_deploy: args.push_to_deploy,\n repository_branch: args.repository_branch,\n };\n case \"delete\":\n return { server_id: args.server_id, site_id: args.id };\n case \"resolve\":\n return { server_id: args.server_id, query: args.query };\n /* v8 ignore next */\n default:\n return {};\n }\n },\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatSiteList(data, args.server_id);\n case \"get\":\n return formatSite(data);\n case \"create\":\n return formatSite(data);\n case \"update\":\n return formatSite(data);\n case \"delete\":\n return `Site ${args.id} deleted from server ${args.server_id}.`;\n case \"resolve\": {\n const result = data as ResolveSiteResult;\n if (result.total === 0)\n return `No sites matching \"${result.query}\" on server ${args.server_id}.`;\n const lines = result.matches.map((m) => `• ${m.name} (ID: ${m.id})`);\n return `${result.total} site(s) matching \"${result.query}\" on server ${args.server_id}:\\n${lines.join(\"\\n\")}`;\n }\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n\n/**\n * Handle sites resource actions, intercepting the `context` action\n * for rich single-call resource fetching.\n */\nexport async function handleSites(\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n if (action === \"context\") {\n return handleSiteContext(args, ctx);\n }\n return _handleSites(action, args, ctx);\n}\n","import * as v from \"valibot\";\nimport { createSshKey, deleteSshKey, getSshKey, listSshKeys } from \"@studiometa/forge-core\";\n\nimport { formatSshKey, formatSshKeyList } from \"../formatters.ts\";\nimport { getSshKeyHints } from \"../hints.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleSshKeys = createResourceHandler({\n resource: \"ssh-keys\",\n actions: [\"list\", \"get\", \"create\", \"delete\"],\n inputSchemas: {\n list: v.object({ server_id: v.string() }),\n get: v.object({ server_id: v.string(), id: v.string() }),\n create: v.object({ server_id: v.string(), name: v.string(), key: v.string() }),\n delete: v.object({ server_id: v.string(), id: v.string() }),\n },\n executors: {\n list: listSshKeys,\n get: getSshKey,\n create: createSshKey,\n delete: deleteSshKey,\n },\n hints: (_data, id, args) => getSshKeyHints(String(args.server_id), id),\n formatResult: (action, data, args) => {\n switch (action) {\n case \"list\":\n return formatSshKeyList(data);\n case \"get\":\n return formatSshKey(data);\n case \"create\":\n return \"Done.\";\n case \"delete\":\n return `SSH key ${args.id} deleted.`;\n /* v8 ignore next */\n default:\n return \"Done.\";\n }\n },\n});\n","import { getUser } from \"@studiometa/forge-core\";\n\nimport { formatUser } from \"../formatters.ts\";\nimport { createResourceHandler } from \"./factory.ts\";\n\nexport const handleUser = createResourceHandler({\n resource: \"user\",\n actions: [\"get\"],\n executors: {\n get: getUser,\n },\n formatResult: (_action, data) => {\n return formatUser(data);\n },\n});\n","import type { ExecutorContext } from \"@studiometa/forge-core\";\nimport { resolveServers, resolveSites } from \"@studiometa/forge-core\";\nimport type { CommonArgs } from \"./types.ts\";\nimport { errorResult } from \"./utils.ts\";\nimport type { ToolResult } from \"./types.ts\";\n\n/**\n * Check if a value is a numeric ID.\n */\nfunction isNumericId(value: string): boolean {\n return /^\\d+$/.test(value);\n}\n\n/**\n * Result of auto-resolution. Either the args are updated with resolved IDs,\n * or an error result is returned.\n */\nexport type AutoResolveResult = { ok: true; args: CommonArgs } | { ok: false; error: ToolResult };\n\n/**\n * Auto-resolve non-numeric server_id and site_id fields.\n *\n * Order matters: server_id is resolved first because site_id resolution\n * requires a numeric server_id.\n *\n * Skipped for the 'resolve' action itself (it IS the resolve action).\n */\nexport async function autoResolveIds(\n args: CommonArgs,\n executorContext: ExecutorContext,\n): Promise<AutoResolveResult> {\n // Don't auto-resolve for the resolve action itself\n if (args.action === \"resolve\") {\n return { ok: true, args };\n }\n\n const resolved = { ...args };\n\n // Resolve server_id if non-numeric\n if (resolved.server_id && !isNumericId(resolved.server_id)) {\n const result = await resolveServers({ query: resolved.server_id }, executorContext);\n const { matches, total } = result.data;\n\n if (total === 0) {\n return {\n ok: false,\n error: errorResult(\n `No server matching \"${resolved.server_id}\". Use { resource: \"servers\", action: \"resolve\", query: \"${resolved.server_id}\" } to search.`,\n ),\n };\n }\n\n // Check for exact single match\n const exactMatch = matches.length === 1 && total === 1;\n if (!exactMatch && total > 1) {\n const matchList = matches.map((m) => ` • ${m.name} (ID: ${m.id})`).join(\"\\n\");\n return {\n ok: false,\n error: errorResult(\n `Ambiguous server name \"${resolved.server_id}\" — ${total} matches found:\\n${matchList}\\n\\nUse a more specific name or pass the numeric ID.`,\n ),\n };\n }\n\n resolved.server_id = String(matches[0].id);\n }\n\n // Resolve site_id if non-numeric (requires resolved server_id)\n if (resolved.site_id && !isNumericId(resolved.site_id)) {\n if (!resolved.server_id) {\n return {\n ok: false,\n error: errorResult(\n \"Cannot resolve site name without a server_id. Provide server_id first.\",\n ),\n };\n }\n\n const result = await resolveSites(\n { server_id: resolved.server_id, query: resolved.site_id },\n executorContext,\n );\n const { matches, total } = result.data;\n\n if (total === 0) {\n return {\n ok: false,\n error: errorResult(\n `No site matching \"${resolved.site_id}\" on server ${resolved.server_id}. Use { resource: \"sites\", action: \"resolve\", server_id: \"${resolved.server_id}\", query: \"${resolved.site_id}\" } to search.`,\n ),\n };\n }\n\n if (total > 1) {\n const matchList = matches.map((m) => ` • ${m.name} (ID: ${m.id})`).join(\"\\n\");\n return {\n ok: false,\n error: errorResult(\n `Ambiguous site name \"${resolved.site_id}\" — ${total} matches found:\\n${matchList}\\n\\nUse a more specific name or pass the numeric ID.`,\n ),\n };\n }\n\n resolved.site_id = String(matches[0].id);\n }\n\n return { ok: true, args: resolved };\n}\n","/**\n * Tool execution handlers for Forge MCP server.\n * Shared between stdio and HTTP transports.\n *\n * Two tools with clear separation:\n * - forge: read-only operations (list, get, help, schema)\n * - forge_write: write operations (create, update, delete, deploy, reboot, etc.)\n */\n\nimport type { AuditLogger, ExecutorContext } from \"@studiometa/forge-core\";\n\nimport { HttpClient } from \"@studiometa/forge-api\";\nimport { createAuditLogger, RESOURCES } from \"@studiometa/forge-core\";\n\nimport type { CommonArgs, HandlerContext, ToolResult } from \"./types.ts\";\n\nimport { handleBackups } from \"./backups.ts\";\nimport { handleBatch } from \"./batch.ts\";\nimport { handleCertificates } from \"./certificates.ts\";\nimport { handleCommands } from \"./commands.ts\";\nimport { handleDaemons } from \"./daemons.ts\";\nimport { handleDatabases } from \"./databases.ts\";\nimport { handleDatabaseUsers } from \"./database-users.ts\";\nimport { handleDeployments } from \"./deployments.ts\";\nimport { handleEnv } from \"./env.ts\";\nimport { handleFirewallRules } from \"./firewall-rules.ts\";\nimport { handleHelp, handleHelpOverview } from \"./help.ts\";\nimport { handleMonitors } from \"./monitors.ts\";\nimport { handleNginxConfig } from \"./nginx-config.ts\";\nimport { handleNginxTemplates } from \"./nginx-templates.ts\";\nimport { handleRecipes } from \"./recipes.ts\";\nimport { handleRedirectRules } from \"./redirect-rules.ts\";\nimport { handleScheduledJobs } from \"./scheduled-jobs.ts\";\nimport { handleSchema, handleSchemaOverview } from \"./schema.ts\";\nimport { handleSecurityRules } from \"./security-rules.ts\";\nimport { handleServers } from \"./servers.ts\";\nimport { handleSites } from \"./sites.ts\";\nimport { handleSshKeys } from \"./ssh-keys.ts\";\nimport { handleUser } from \"./user.ts\";\nimport { isForgeApiError } from \"@studiometa/forge-api\";\n\nimport { isUserInputError } from \"../errors.ts\";\nimport { isWriteAction, isReadAction } from \"../tools.ts\";\nimport { errorResult } from \"./utils.ts\";\nimport { autoResolveIds } from \"./auto-resolve.ts\";\n\nexport type { ToolResult } from \"./types.ts\";\n\n/** Valid resources derived from core constants */\nconst VALID_RESOURCES = [...RESOURCES];\n\n// Lazy audit logger — initialized on first write call to avoid import-time side effects\nlet _auditLogger: AuditLogger | null = null;\nfunction getAuditLogger(): AuditLogger {\n if (!_auditLogger) _auditLogger = createAuditLogger(\"mcp\");\n return _auditLogger;\n}\n\n/**\n * Route to the appropriate resource handler.\n */\nfunction routeToHandler(\n resource: string,\n action: string,\n args: CommonArgs,\n ctx: HandlerContext,\n): Promise<ToolResult> {\n switch (resource) {\n case \"servers\":\n return handleServers(action, args, ctx);\n case \"sites\":\n return handleSites(action, args, ctx);\n case \"deployments\":\n return handleDeployments(action, args, ctx);\n case \"env\":\n return handleEnv(action, args, ctx);\n case \"nginx\":\n return handleNginxConfig(action, args, ctx);\n case \"certificates\":\n return handleCertificates(action, args, ctx);\n case \"databases\":\n return handleDatabases(action, args, ctx);\n case \"database-users\":\n return handleDatabaseUsers(action, args, ctx);\n case \"daemons\":\n return handleDaemons(action, args, ctx);\n case \"firewall-rules\":\n return handleFirewallRules(action, args, ctx);\n case \"ssh-keys\":\n return handleSshKeys(action, args, ctx);\n case \"security-rules\":\n return handleSecurityRules(action, args, ctx);\n case \"redirect-rules\":\n return handleRedirectRules(action, args, ctx);\n case \"monitors\":\n return handleMonitors(action, args, ctx);\n case \"nginx-templates\":\n return handleNginxTemplates(action, args, ctx);\n case \"recipes\":\n return handleRecipes(action, args, ctx);\n case \"backups\":\n return handleBackups(action, args, ctx);\n case \"commands\":\n return handleCommands(action, args, ctx);\n case \"scheduled-jobs\":\n return handleScheduledJobs(action, args, ctx);\n case \"user\":\n return handleUser(action, args, ctx);\n case \"batch\":\n return handleBatch(action, args, ctx, routeToHandler);\n /* v8 ignore next 6 -- all valid resources are handled above; unreachable in practice */\n default:\n return Promise.resolve(\n errorResult(\n `Unknown resource \"${resource}\". Valid resources: ${VALID_RESOURCES.join(\", \")}. Use action=\"help\" for documentation.`,\n ),\n );\n }\n}\n\n/**\n * Execute a tool call with provided credentials.\n *\n * This is the main entry point shared between stdio and HTTP transports.\n * Validates that the action matches the tool (read vs write).\n */\nexport async function executeToolWithCredentials(\n name: string,\n args: Record<string, unknown>,\n credentials: { apiToken: string; organizationSlug?: string },\n): Promise<ToolResult> {\n const resource = typeof args.resource === \"string\" ? args.resource : undefined;\n const action = typeof args.action === \"string\" ? args.action : undefined;\n const compact = typeof args.compact === \"boolean\" ? args.compact : undefined;\n const { resource: _r, action: _a, compact: _c, ...rest } = args;\n\n if (!resource || !action) {\n return errorResult('Missing required fields: \"resource\" and \"action\".');\n }\n\n // Batch resource is read-only even though it uses the \"run\" action name.\n // Handle it early, before the write-action guard, to avoid misdirection.\n if (resource === \"batch\") {\n // Validate batch is only called from the forge (read) tool\n if (name !== \"forge\") {\n return errorResult(\n 'The \"batch\" resource is read-only and must be used with the \"forge\" tool, not \"forge_write\".',\n );\n }\n // Validate resource is known before creating context\n const client = new HttpClient({ token: credentials.apiToken });\n const executorContext: ExecutorContext = {\n client,\n organizationSlug: credentials.organizationSlug,\n };\n const handlerContext: HandlerContext = {\n executorContext,\n compact: compact ?? true,\n };\n return routeToHandler(resource, action, { resource, action, ...rest }, handlerContext);\n }\n\n // Validate action matches the tool\n if (name === \"forge\" && isWriteAction(action)) {\n return errorResult(\n `Action \"${action}\" is a write operation. Use the \"forge_write\" tool instead.`,\n );\n }\n\n if (name === \"forge_write\" && isReadAction(action)) {\n return errorResult(`Action \"${action}\" is a read operation. Use the \"forge\" tool instead.`);\n }\n\n // Help is available for all resources (doesn't need API)\n if (action === \"help\") {\n /* v8 ignore start */\n return resource ? handleHelp(resource) : handleHelpOverview();\n /* v8 ignore stop */\n }\n\n // Schema is available for all resources (doesn't need API)\n if (action === \"schema\") {\n /* v8 ignore start */\n return resource ? handleSchema(resource) : handleSchemaOverview();\n /* v8 ignore stop */\n }\n\n // Validate resource\n if (!(VALID_RESOURCES as readonly string[]).includes(resource)) {\n return errorResult(\n `Unknown resource \"${resource}\". Valid resources: ${VALID_RESOURCES.join(\", \")}. Use action=\"help\" for documentation.`,\n );\n }\n\n // Validate organizationSlug for resources that need it (all except user)\n if (resource !== \"user\" && !credentials.organizationSlug) {\n return errorResult(\n \"organizationSlug is required — configure it via FORGE_ORG env var, config file, or pass it in the request.\",\n );\n }\n\n // Create executor context\n const client = new HttpClient({ token: credentials.apiToken });\n const executorContext: ExecutorContext = {\n client,\n organizationSlug: credentials.organizationSlug,\n };\n const handlerContext: HandlerContext = {\n executorContext,\n compact: compact ?? action !== \"get\",\n includeHints: action === \"get\",\n };\n\n // Auto-resolve non-numeric server_id/site_id\n const allArgs: CommonArgs = { resource, action, ...rest };\n const resolveResult = await autoResolveIds(allArgs, executorContext);\n if (!resolveResult.ok) {\n return resolveResult.error;\n }\n const resolvedArgs = resolveResult.args;\n\n // Route to resource handler with error catching\n try {\n const result = await routeToHandler(resource, action, resolvedArgs, handlerContext);\n if (name === \"forge_write\") {\n getAuditLogger().log({\n source: \"mcp\",\n resource,\n action,\n args: rest,\n status: result.isError ? \"error\" : \"success\",\n });\n }\n return result;\n } catch (error) {\n let errorMessage: string;\n if (isUserInputError(error)) {\n errorMessage = error.toFormattedMessage();\n } else if (isForgeApiError(error)) {\n errorMessage = `Forge API error (${error.status}): ${error.message}`;\n } else {\n /* v8 ignore start */\n errorMessage = error instanceof Error ? error.message : String(error);\n /* v8 ignore stop */\n }\n if (name === \"forge_write\") {\n getAuditLogger().log({\n source: \"mcp\",\n resource,\n action,\n args: rest,\n status: \"error\",\n error: errorMessage,\n });\n }\n return errorResult(errorMessage);\n }\n}\n","declare const __VERSION__: string;\n\nexport const VERSION: string = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\";\n"],"x_google_ignoreList":[1],"mappings":"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"}
|